¿Son de fiar las firmas digitales de los archivos PDF?

Los investigadores intentan modificar los contenidos de un archivo PDF firmado sin anular la firma.

Casi todas las empresas o instituciones gubernamentales usan archivos PDF. Y, a menudo, usan firmas digitales para garantizar la autenticidad de dichos documentos. Cuando abres un PDF firmado en cualquier lector PDF, este muestra una marca que indica que el documento está firmado y por quién, y también te da acceso al menú de validación de firma.

Así pues, un equipo de investigadores de varias universidades alemanas analizó la seguridad de las firmas en PDF. Vladislav Mladenov, de la Universidad Ruhr de Bochum , compartió los hallazgos de su equipo durante el Chaos Communication Congress (36С3).

La tarea de los investigadores era simple: modificar los contenidos de un documento PDF firmado sin anular la firma en el proceso. En teoría, los ciberdelincuentes podrían hacer lo mismo para difundir información falsa o para añadir contenido malicioso a un archivo firmado. Después de todo, es probable que los clientes que reciben un documento firmado de un banco confíen en él y sigan los enlaces que contiene.

El equipo eligió 22 lectores PDF para diferentes plataformas que de modo sistemático facilitaron los resultados de sus experimentos.

Estructura del archivo PDF

Primero, hablemos del formato PDF. Cada archivo consta de cuatro partes: el encabezado, que muestra la versión del PDF; el cuerpo, que muestra el contenido que el usuario visualiza; la sección Xref, un directorio de los objetos contenidos en el cuerpo y sus ubicaciones (con el fin de mostrar el contenido); y el trailer, con el que los lectores PDF empiezan a leer el documento. El trailer contiene dos parámetros importantes que le indican al programa dónde iniciar el procesamiento del archivo y dónde comienza la sección Xref.

En el formato se integra una función de actualización acumulativa que le permite al usuario, resaltar parte del texto e insertar comentarios, entre otras cosas. Desde un punto de vista técnico, la función añade tres secciones más: las actualizaciones para el cuerpo, un nuevo directorio Xref y un trailer nuevo. Esto es lo que realmente permite cambiar el modo en que el usuario ve los objetos, así como añadir contenido. En esencia, una firma digital es una actualización acumulativa que añade otro elemento al archivo, junto con sus secciones correspondientes.

Ataque tipo ISA (Incremental saving attack)

Primero, por medio de un procesador de texto, el equipo intentó añadir secciones adicionales al archivo con otra actualización acumulativa. En sentido estricto, no se trata de un ataque, ya que el equipo utilizó simplemente una función que los desarrolladores del formato implementaron. Cuando un usuario abre un archivo modificado de este modo, el lector PDF normalmente muestra un mensaje que nos advierte de que la firma digital es válida pero el documento se ha modificado. No es un mensaje muy esclarecedor, al menos no para un usuario con poca experiencia. Y, lo que es peor, uno de los lectores PDF (LibreOffice) ni siquiera mostró el mensaje.

El siguiente experimento consistía en extraer las dos secciones del final (es decir, añadir una actualización al cuerpo, pero no Xref ni trailer nuevos). Algunas aplicaciones se negaron a trabajar con dicho archivo. Dos lectores PDF vieron que faltaban dos secciones y automáticamente las añadieron sin notificar al lector acerca del cambio en el contenido. Otros tres simplemente cargaron el archivo sin ninguna objeción.

A continuación, los investigadores se preguntaron qué pasaría si simplemente copiaran la firma digital dentro de su propia actualización “manual”. Otros dos lectores, Foxit y MasterPDF, cayeron en la trampa.

En total, 11 de los 22 lectores PDF resultaron vulnerables a estas sencillas manipulaciones. Además, seis no advirtieron en absoluto que el documento abierto para lectura había sufrido modificaciones. En los otros cinco casos, con el fin de mostrar algún tipo de manipulación, el usuario tenía que entrar al menú y verificar manualmente la validez de la firma digital, pues no bastaba con abrir el archivo sin más.

Ataque tipo SWA (Signature wrapping attack)

La firma de un documento añade dos campos importantes al cuerpo bajo la forma de actualizaciones acumulativas: /Contents, que contiene la firma, y /ByteRange, que describe con exactitud lo que se ha firmado. En este último se encuentran cuatro parámetros (uno indica el comienzo del archivo; otro, el número de bytes antes del código de la firma; un tercero establece dónde termina; y el cuarto, el número de bytes después de la firma) porque la firma digital es una secuencia de los caracteres generados con medios cifrados a partir del código del documento PDF. Por supuesto, la firma no puede firmarse a sí misma, así que el área donde se almacena queda excluida del proceso de cálculo de la firma.

Los investigadores intentan añadir otro campo de /ByteRange inmediatamente después de la firma. Los dos primeros valores permanecieron inalterados; solamente se alteró la dirección del final del código de firma. El resultado fue la aparición de un espacio adicional en el archivo que permitía que se añadiera cualquier objeto malicioso, así como la sección Xref que los describía. En teoría, si se leyera correctamente el archivo, el lector PDF no pasaría de esta sección. Sin embargo, 17 de las 22 aplicaciones eran vulnerables a dicho ataque.

Falsificación de firmas universales (USF)

Para una medición óptima, el equipo decidió también someter las aplicaciones a pruebas de estrés y compararlas con una estrategia de prueba de penetración: según esta última, se intentan reemplazar los valores de los campos con otros incorrectos, o simplemente borrarlos. Al realizar el experimento con la sección /Contents se descubrió que, si la firma real se reemplazaba con el valor 0x00, dos lectores la validaban aún.

Pero ¿qué pasaba si la firma se dejaba en su lugar, pero se eliminaba la sección /ByteRange (es decir, la información de lo que se firma)? ¿Y qué pasaba si se insertaba un valor nulo en lugar de valores reales? En ambos casos, algunos lectores validaron dicha firma.

En total, 4 de los 22 programas contenían errores de implementación que podían verse aprovechados.

La tabla de resultados resumidos muestra que al menos 21 de los 22 lectores pueden ser burlados. Es decir, salvo por uno, todos aceptan un archivo PDF creado con contenido malicioso o información falsa que resultaría válida para el usuario.

Esquema de vulnerabilidades de los lectores PDF. Fuente

Curiosamente, Adobe Reader 9 fue la única aplicación que no cayó en ninguna de las trampas colocadas por los investigadores. El problema con ella es que es susceptible a una vulnerabilidad RCE (ejecución remota de código, por sus siglas en ingles); y que solo los usuarios de Linux la utilizan, sencillamente porque es la versión más reciente que está disponible para ellos.

Conclusiones prácticas

¿Qué conclusiones prácticas podemos sacar de todo esto? Primero, que nadie debería confiar a ciencia cierta en las firmas digitales PDF. Si ves una marca de verificación color verde en alguna parte, no significa necesariamente que la firma sea válida.

Segundo, incluso un documento firmado puede suponer un riesgo. Así que antes de abrir cualquier archivo recibido por la red o de seguir los enlaces que contienen, asegúrate de que tienes una solución de seguridad de confianza instalada en tu ordenador.

 

Consejos