Actualización: Microsoft publicó un informe que confirma las conjeturas en esta publicación y brinda un gran nivel de detalles.
Propósito del certificado
Hay varios propósitos para los que se puede usar un certificado. Por ejemplo, se puede utilizar como prueba de identidad de una persona o servidor web. Se puede utilizar para la codificación de códigos o para firmar otros certificados.
En este caso, un certificado destinado a firmar la información de la licencia pudo firmar el código.
Podría ser tan simple como que Microsoft no comprueba el indicador de propósito de los certificados de clientes que firmaron:
Específicamente, cuando un cliente de empresa solicita una licencia de activación de Servicios de Terminal Server, el certificado emitido por Microsoft en respuesta a la solicitud permite la firma del código.
Ataque de colisión MD5
La referencia a un algoritmo antiguo podría indicar un ataque de colisión en el proceso de firma: hubo una charla en CCC 2008 llamada MD5 considerada dañina hoy - Creación de un certificado de CA deshonesto
En esa charla, las investigaciones explicaron cómo generar dos certificados con el mismo hash.
El generó una solicitud de certificación de aspecto inofensivo y la envió a una CA. La CA lo firmó y generó el certificado válido para servidores https.
Pero este certificado tenía el mismo hash que otro certificado generado que tenía el propósito CA-certificado. Por lo tanto, la firma CA del certificado inocuo también fue válida para el peligroso.
Las investigaciones explotaron una debilidad en MD5 para generar colisiones. Para que el ataque funcionara, tenían que predecir la información que la CA escribiría en el certificado.
¿Lecciones aprendidas?
-
Microsoft ya verifica que la raíz de los certificados de firma de código para Windows Update sea una CA de Microsoft. Por lo tanto, los certificados firmados por otras entidades emisoras de certificados no pueden utilizarse.
-
No olvide el código y los servicios heredados
-
Si hay suficiente motivación, incluso las debilidades teóricas poco prácticas, serán explotadas. (El título original de la charla fue "Hacer lo posible teóricamente").
Actualizar
Microsoft ha confirmado ambos problemas (un solo problema es suficiente para un exploit):
El malware Flame utilizó un ataque de colisión criptográfico en combinación con los certificados del servicio de licencias del servidor de terminal para firmar el código como si fuera de Microsoft. Sin embargo, la firma de código sin realizar una colisión también es posible.
Actualización 2
Microsoft publicó los detalles :
- La vulnerabilidad de no verificar la finalidad del certificado solo afecta a las versiones anteriores de Windows.
- El ataque de colisión se usó para manipular las extensiones de certificado, de modo que las versiones actuales de Windows también se engañen.
Actualización 3
Los investigadores del ataque de colisión md5 original publicaron que los atacantes utilizaron una nueva variante del conocido ataque de prefijo elegido md5 , lo que implica que tienen un conocimiento muy profundo sobre la criptografía.