lunes, abril 20, 2009

La firma de ODF en OpenOffice.org es insegura y el cifrado no protege contra inyección de malware


Entre las charlas que se impartieron en Blackhat Europe 2009 llamaba poderosamente la atención una charla doble sobe OpenOffice v.3.x security desing weaknesses. En ella el autor la presentaba con una frase lapidaria en la que afirmaba que hoy en día era más fácil hacer malware para documentos ODF que para documentos OOXML.

“At the present time, it seems far easier to develop sophisticated document malware for OpenOffice than for Microsoft Office”

Y vaya si lo demostró. El autor, para aquellos que confunden descripciones técnicas con fundamentalismo, comenzó su charla con una advertencia:


No me seas técnicoless

La charla que se impartió demostró lo sencillo que es hacer documentos con malware incrustado en documentos ODF que no están ni cifrados ni firmados, en los que están cifrados y en los que están firmados. En la presentación los autores realizaron un resumen de la historia de inseguridad en OpenOffice en el que recogieron tres papers técnicos publicados sobre la posibilidad de desarrollar virus para ODF que, como ellos afirman generaron: “A lot of «hot» reactions. Many stupid, ideologic comments but who did really read the papers?”

La version 3.x no vino acompañada de mejoras significativas de seguridad por lo que, en el White Paper de 70 páginas que publicaron durante la conferencia demuestran cómo es posible coger un documento firmado y encriptado e inyectarlo con malware sin que se genere ningún problema en la comprobación de la firma y el cifrado del mismo.

Manifest.xml no firmando ni cifrado

En el Whitepaper, cuya lectura es de lo más claro, los autores se basan en explotar varias debilidades. La primera de ella es el no cifrado ni firmado en ningún caso del fichero manifest.xml. Este fichero, dentro de la estructura de cualquier documento ODF, es la espina dorsal del documento pues es el que lista todos los archivos que componen el documento, incluidos los ficheros que puedan llevar el malware.

Documentsignatures.xml no firmado ni cifrado

Otra de las debilidades que aprovecha este trabajo de investigación es que el fichero que almacena las firmas de los ficheros no está firmado, es decir, documentsignatures.xml puede ser modificado porque no se comprueba su firma. Además, en caso de cifrarse el documento, de nuevo éste, al igual que manifest.xml, queda sin cifrar.

Firmado de macros

Otra de las características curiosas es el funcionamiento del firmado de macros. En OpenOffice 2.x los ficheros de macros no estaban firmados, por lo que era posible sustituir el contenido de un fichero de macro por otro y el documento permanecía perfectamente firmado. Para evitar ello se añade un firmado fuerte de macros en OpenOffice 3.x que hace que el fichero de la macro esté firmado él mismo. El whitepaper recalca que si el usuario confunde un firmado con otro entonces el fichero no está protegido para nada. No obstante, aunque el usuario acierte a firmar el documento con la firma del mismo, esa protección, es sólo aparente, pues se puede saltar con ataques de man in the middle.

Inyectando malware en ficheros cifrados

Supongamos que existe el fichero que lleva el contenido de la macro está cifrado y la referencia del cifrado se encuentra en manifest.xml. Sustituir esta macro firmada por una macro peligrosa sería tan sencillo como cambiar el contenido cifrado del fichero de la macro por un contenido sin cifrar de una macro-malware y eliminar la información del cifrado en manifest.xml. Tan simple, tan jodido.

Inyectando malware en ficheros firmados

La idea es tan simple que asusta. El problema es que OpenOffice no comprueba contra ningún certificado que la entidad que ha firmado el documento es una entidad de confianza. Es decir, cuando Alice manda un certificado a Bob firmado por la EntidadCertificadora, el programa de BOB debe comprobar que la el documento enviado por Alice ha sido firmado por EntidadCertificadora y no por otra. OpenOffice no lo hace, así que basta copiar los datos de la firma de Alice y crear una nueva falsa que OpenOffice no lo va a detectar, el resto es… trivial.

Conclusiones

El firmado de documentos es inseguro en cualquier situació e incluso ni el cifrado del mismo protege contra la inyección de malware en un documento firmado.

Saludos Malignos!

21 comentarios:

  1. Nadie es perfecto :) sácale ya el lado positivo al OpenOffice en algún Post jeje

    ResponderEliminar
  2. El lado positivo está muy claro, para un usuario doméstico que no necesite firmar documentos es, hoy por hoy, la mejor alternativa.

    ResponderEliminar
  3. ¿La mejor alternativa en base a que parámetros?
    ¿Has medido el rendimiento, rapidez, etc.?
    Si no lo has hecho hazlo, y entonces opina y matiza que es mejor en tal y cual, bajo este entorno, buscando estos objetivos...

    ResponderEliminar
  4. @Anónimo, sí, hemos jugado con ellos, y ellos también. Ya le dedicaré una serie de posts a OO en la empresa.

    De momento te dejo con el post de Héctor.

    http://blogs.technet.com/hectormontenegro/archive/2009/03/27/estamos-de-broma-y2.aspx

    Saludos!

    ResponderEliminar
  5. Es una pena, pero bueno es lo que tiene a veces un proyecto libre...
    Esperemos quemejroe siempre está muy bien tener una alternativa libre

    ResponderEliminar
  6. Me refería a la afirmación de tayoken de que la mejor alternativa es OpenOffice. No apoyo uno u otro, solo me repatea que se afirme rotundamente estas cosas.

    ResponderEliminar
  7. No te preocupes por OpenOffice. No publiques nada más sobre seguridad de ODF. Posiblemente está muerto en breve nadie lo usará.

    PD: ¿Y qué le pasará a Java ahora?

    Bueno, supongo que sabes que Oracle ha comprado SUN. Menuda ostia a IBM...

    ResponderEliminar
  8. hostia a IBM? en que planeta viven algunos.. lo primero es que la oferta es menor que la de IBM, así que mas bien es al revés..y algunos a rezar por MySQL que ni se sabe que harán..

    Tema OpenOffice ya cansa bastante, ni que le tuviérais miedo, para PYMEs no hay color, ni por precio ni por características,para grandes empresas hay mucho numero que sacar antes de escogerlo, y de la seguridad mejor no hablamos mucho, que tampoco está Office pa tirar cohetes...

    Saludos!

    Wi®

    ResponderEliminar
  9. @Centos, mi empresa es una PYME y no curramos con OpenOffice ni de broma....

    Me ha gustado eso de "ya cansa" ;) como si no me conocieras ya....

    Saludos Malignos!

    ResponderEliminar
  10. CentOS siempre tan poseedor de la verdad. ¿Te has fijado la apuesta de IBM por Java? Es muy fuerte y ahora queda en manos completamente de Oracle de la que no tiene "tan buenas" relaciones como con SUN.

    Yo lo veo como si en vez de SUN cuando compró MySQL lo hubiera comprado Microsoft. Sus filosofías son un tanto distintas.

    ResponderEliminar
  11. Maligno, te recomiendo leer la wiki de OpenOffice y lo que se esta planeando al respecto:

    http://wiki.services.openoffice.org/wiki/Improving_The_Digital_Signature_Feature#Using_different_types_of_signatures

    ResponderEliminar
  12. Como todo hay verdad a medias...
    No vaya a ser que a Eric Filiol y a Jean-Paul Fizaine les pase lo mismo que a un tal Anthony Lineberry que presento una "vulnerabilidad" del kernel de Linux que fue parcheada hace muchooo tiempo como novedad.
    Lo que no dijo es que es un copy & paste de una phrack magazine de hace 11 años atras....
    http://www.phrack.com/issues.html?issue=58&id=7

    Muy mal visto...

    ResponderEliminar
  13. @anonimo de las 1:06, el problema es que no comprueba la entidad firmante y no parece que en el link que has puesto diga nada de eso.

    @anónimo último, creo que si copian a alguien es a sus advisories de la versión OO 2.x como dicen en su presentación.

    Saludos!

    ResponderEliminar
  14. alguien leyo el whitepaper de 70 paginas?
    Mmm...ese paper tiene tufillo, sobre todo de la pagina 52 en adelante.
    Hay un error bastante grosero (el que entienda de openssl se dara cuenta)
    Y la demostración no demuestra nada. Sobre todo si se hace en la misma maquina, misma sesión de usuario.
    Me hubiera gustado que intentara lo mismo con una firma de verisign, entrust, o CAcert.
    Cualquiera con dos dedos de frente y mínimos conocimientos de seguridad sabe que los certificados autofirmados son susceptibles a ataques de man in the middle. Y esto puede pasar en MS Office, internet explorer, firefox, outlook o cualquier aplicación que maneje certificados.
    Mas imparcial hubiera sido si al menos hubiera tenido 3 maquinas o una maquina real y virtualizado otras 2, y si queremos darle mas realismo a la cosa diferentes sistemas operativos.
    Por cierto yo debo tener un OpenOffice diferente a estos sres. Porque el problema que describe el documento no lo puede reproducir. Se comporto lo mas bien y se entero de la firma cambiada.

    Que fácil es engañar a los tontos!

    ResponderEliminar
  15. La verdad prevalece sobre la mentira:
    http://blogs.sun.com/malte/entry/comments_on_the_black_hat

    ResponderEliminar
  16. @anonimo, me he leido el post que has lincado y le da la razón a todo lo expuesto por Eric, de hecho, lo único que hace es sugerir el entorno más fuerte y apuntar mejoras para la version 3.2.

    ¿Qué verdad prevalece sobre que mentira?

    Saludos!

    ResponderEliminar
  17. Ese documento esta bastante sesgado.
    gran parte de lo que dice en la version 3.1 ya no funciona.
    Lo único que si funcionaria es el reemplazo de macros no firmadas, siempre y cuando se relaje la seguridad por defecto claro.

    ResponderEliminar
  18. @Anónimo del final, ¿lo único?. Mira, tras leer las declaraciones de la gente de Sun, el reemplazo sigue funcionando y ese es el nivel más fuerte, y el problema de dar el mismo mensaje con certificados autofirmados y firmados con un CA de confianza también.

    Luego, la sustitución de macros no firmadas rula, la sustitución de macros firmada rula, el spoofeo de firma sigue dando el mismo mensaje....¿te parece poco?

    ResponderEliminar
  19. y nadie habla de esto...

    El muerto se rie del degollado
    http://bitelia.com/2009/10/microsoft-sigue-sin-solucionar-problema-de-seguridad-que-afecta-a-miles-de-usuarios

    ResponderEliminar
  20. @Anónimo, la cosa es más enrevesada que el que Microsoft parchee su cryptoAPI. El asunto, como ya sabes es un fallo principalmente de los generadores de certificados digitales, no de los clientes. De hecho, los certificado sacados con *\0 están en las CRLs (aunque Moxie ponga el 3).

    El otro fallo de Dan Kaminsky, el de los hashes MD2 en los Root Servers, deben solucionarlo ellos.

    Saludos!

    ResponderEliminar
  21. Finales de 2011:

    Openoffice no solo NO se ha muerto, sino que ahora tenemos también LibreOffice

    ResponderEliminar