¿Qué hace que los formatos de Adobe sean tan vulnerables? [cerrado]

7

Las herramientas que se ocupan de SWF, PDF, OTF ... parecen sufrir una cantidad desproporcionada de vulnerabilidades. ¿Es una característica en los formatos que crea Adobe que los hace más susceptibles de romperse?

Relacionados:

¿Por qué se encuentran las vulnerabilidades de Adobe Flash tan a menudo? Nota: no estoy preguntando por qué, más bien qué es común a todas estas tecnologías de Adobe.

¿Qué ¿Estaba detrás de la oleada de vulnerabilidades / parches de Adobe Flash Player en 2015?

    
pregunta Jedi 01.04.2017 - 16:55
fuente

2 respuestas

4

Hay muchos factores, pero estos son algunos:

  1. Son archivos binarios no estándar. No basado en XML / JSON / YML / etc, lo que significa que cada desarrollador de productos de Adobe debe reinventar sus propios analizadores, que es una de las tareas más difíciles y tediosas para los programadores.

  2. Estos archivos a menudo están diseñados con un procesamiento eficiente, con pequeños pensamientos para facilitar la escritura de una implementación segura. Por ejemplo, PDF contiene una tabla de referencia externa, que contiene el desplazamiento de bytes que los programas deben buscar () para encontrar secciones. Si eso no es lo suficientemente malo, esta tabla de referencia externa se encuentra al final del archivo, lo que requiere que el analizador de PDF lea el archivo al revés desde el final del archivo. Para agregar aún más a la complicación, puede haber más de una tabla xref en un solo archivo, y algunas entradas pueden estar inactivas o anuladas por entradas posteriores.

  3. El formato binario puede contener información conflictiva. Por ejemplo, una sección de PDF se puede especificar de diferentes maneras: cada sección contiene la longitud de la sección en números ASCII, un marcador "endobj" y entradas según la tabla de referencias externas. Estas informaciones contradictorias significan que diferentes partes del producto de Adobe y diferentes implementaciones pueden depender de diferentes formas de interpretar la misma sección.

  4. Estos formatos de archivo pueden contener código ejecutable completo de Turing. Un archivo PDF puede contener código Javascript, un archivo SWF puede contener ActionScript. Como cualquier otro lenguaje de macros de documentos (por ejemplo, VBScript en archivos de MS Office, JavaScript en HTML), estos idiomas de Turing-complete son una fuente de errores propios.

  5. PDF se promociona a sí mismo como un formato que debería verse igual en todas partes, y puedes abrir archivos PDF antiguos y esperar que se muestren igual en los lectores modernos. Algunos generadores de PDF antiguos produjeron un PDF defectuoso, que se basa en un error en el antiguo Reader / Acrobat. En lugar de corregir el programa y rechazar estos archivos defectuosos como corruptos, Adobe programó estos hacks para mantener estos archivos defectuosos legibles. Desafortunadamente, estos trucos no están documentados, por lo que es difícil para otras implementaciones mantenerse al día con Adobe sobre cómo analizar exactamente estos documentos mal formados.

  6. Los formatos tienen una gran cantidad de características que son tangenciales al formato del documento. En lugar de usar capas separadas, a Adobe le gusta implementar todo en su propia especificación de formato. Por ejemplo, muchos formatos de documentos como ODF, DOCX, JAR son XML / Class simples y otros metadatos en un archivo zip normal. PDF combina el formato comprimido en un flujo de datos normal, no puede usar un descompresor zlib normal para obtener un PDF sin comprimir. Lo mismo con las firmas digitales y el control de versiones.

Adobe sigue ganando mucho dinero a pesar de estos problemas, lo que probablemente sea la razón más importante por la que realmente no sienten la necesidad de cambiar su cultura de desarrolladores.

    
respondido por el Lie Ryan 02.04.2017 - 07:54
fuente
4

Debido a que Shockwave / Flash utilizó un bytecode intermedio que se genera a partir de ActionScript, es el generador de código y la biblioteca que se encuentra en el complemento flash_player que tiene una práctica de codificación de seguridad extremadamente deficiente.

Además, el complemento flash_player (junto con el motor Firefox JS, el motor Chrome JS y el nodo) hace uso de la generación dinámica de código ejecutable al leer estos códigos de bytes intermedios que continuarán haciéndolos vulnerables en el futuro cercano.

Aprendí todo esto mientras utilizaba IDA Pro.

Y todavía tiene muchas "oportunidades".

    
respondido por el Egbert S 02.04.2017 - 03:58
fuente

Lea otras preguntas en las etiquetas