martes, 5 de junio de 2012

TheFlame, el sueño de todo creador de malware

No por su funcionalidad, sino por el salvoconducto con el que viene acompañado: está firmado por Microsoft. Esto es el sueño de todo creador de malware, por la forma en la que actúan las casas antivirus ante esta garantía, es seguro que se trata de parte de la clave del éxito por la que TheFlame ha permanecido oculto durante al menos 5 años.

Microsoft publicó el domingo una actualización de su repositorio de certificados. Revocaba (marcaba como "no confiables") a tres autoridades de certificación intermedias. La explicación oficial deja algunas lagunas. En algún momento, alguien consiguió manipular un certificado que se usa para licencias de Terminal Server, y firmar código con él. Esto es un grave error por parte de Microsoft. Como explica SecurityByDefault, los certificados tienen unas funciones concretas cuando son creados, y no deben mezclarse.

Microsoft habla también de "older criptography", lo que lleva inmediatamente a pensar en MD5. Al comprobar que los certificados revocados usan ese tipo de hash, más o menos encaja. Si unimos las dos piezas, tenemos que de alguna manera los atacantes han forzado un certificado destinado a Terminal Server y han conseguido firmar código con él, validando hacia arriba la cadena de certificación por ser "débil" la validación de las autoridades certificadoras intermedias. El hecho de que haya revocado toda una autoridad intermedia, en vez de un simple certificado, indica que el problema podría ir más allá. De hecho, lo inquietante del comunicado de Microsoft es:

"The Flame malware used a cryptographic collision attack in combination with the terminal server licensing service certificates to sign code as if it came from Microsoft. However, code-signing without performing a collision is also possible. This is an avenue for compromise that may be used by additional attackers on customers not originally the focus of the Flame malware. In all cases, Windows Update can only be spoofed with an unauthorized certificate combined with a man-in-the-middle attack."

O sea, es posible, sin necesidad de colisión, firmar código con este tipo de certificados que vienen de las licencias de Terminal Server. Por eso preventivamente han revocado las entidades a ese nivel.


El certificado

En concreto hablamos de 1d190facf06e133e8754e564c76c17da8f566fbb, el usado para firmar el componente de TheFlame. Ya todo el mundo sabe que fue firmado el 28 de diciembre de 2010. Pero lo curioso es que en realidad caducó el 19 de febrero de 2012. Esto quiere decir que el certificado ya no era válido de por sí, aunque no estuviera revocado. También alimenta la teoría de que el atacante no pudo elegir este dato. Si yo fuese un atacante y crease un certificado "a la carta" no lo haría caducar en febrero de 2012 sino mucho más adelante. Confirma la teoría de la colisión.



El secreto de su éxito

Stuxnet, también estaba firmado,pero con un certificado de una compañía a la que claramente, le habían robado la clave privada de los certificados. El secreto del éxito de TheFlame para pasar desapercibido, es que está firmado no por cualquier compañía, sino por Microsoft que, como dijo Mikko Hypponen de F-Secure, es "el santo Grial" del malware. Esto quiere decir que los antivirus puede que ni se molestaran en analizarlo o que, por muy extraño que resultara su comportamiento, no se arriesgaran a clasificarlo como malware. Al fin y al cabo, Microsoft nunca jamás firmaría malware... ¿verdad? Todo lo firmado por Microsoft está en listas blancas, casi por definición. Cuando un antivirus ha cometido el enorme error de clasificar un software legítimo (firmado o no) de Microsoft como malware, el sistema puede dejar de funcionar (los componentes críticos de Windows suelen estar firmados)... simplemente no arriesgan. Sería un gran varapalo a la imagen de la compañía si se comete un error de este tipo.

Desinformación

Queríamos también destacar que se está informando de una manera incorrecta sobre la actualización de Microsoft. No corrige ninguna vulnerabilidad, y no podría permitir (o en todo caso sería extremadamente improbable) que se usara para crear phishings. La actualización de Microsoft simplemente deja de confiar en ciertas entidades certificadoras intermedias, y está destinado a prevenir la aparición de más malware firmado por Microsoft.

Más información:

Microsoft certification authority signing certificates added to the Untrusted Certificate Store

Security Advisory 2718704: Update to Phased Mitigation Strategy

Flame y los certificados digitales

Microsoft Update and The Nightmare Scenario


Sergio de los Santos
Twitter: @ssantosv