Update: Microsoft published a report which confirms the guesses in this posting and gives a great level of details.
Scopo del certificato
Ci sono diversi scopi per cui può essere usato un certificato. Ad esempio può essere utilizzato come prova di identità di una persona o di un server web. Può essere utilizzato per il code sining o per firmare altri certificati.
In questo caso un certificato destinato a firmare le informazioni sulla licenza è stato in grado di firmare il codice.
Potrebbe essere semplice come Microsoft che non controlla il flag di destinazione dei certificati dei clienti che hanno firmato:
Specifically, when an enterprise customer requests a Terminal Services activation license, the certificate issued by Microsoft in response to the request allows code signing.
Attacco collisione MD5
Il riferimento a un vecchio algoritmo potrebbe indicare un attacco di collisione al processo di firma: c'è stato un discorso al CCC 2008 chiamato MD5 considerato dannoso oggi - Creazione di un certificato CA canaglia
In quel discorso le ricerche hanno spiegato come generare due certificati con lo stesso hash.
Ha generato una richiesta di certificazione dall'aspetto innocuo e l'ha inviata a una CA. La CA ha firmato e generato il certificato valido per i server https.
Ma questo certificato aveva lo stesso hash di un altro certificato generato che aveva lo scopo del certificato CA. Quindi la firma CA del certificato innocuo era valida anche per quella pericolosa.
Le ricerche hanno sfruttato un punto debole dell'MD5 per generare collisioni. Per poter funzionare, gli attacchi dovevano prevedere le informazioni che la CA avrebbe scritto nel certificato.
Lezioni apprese?
-
Microsoft controlla già che la radice dei certificati di firma del codice per Windows Update sia una CA Microsoft. Pertanto, i certificati firmati da altre autorità di certificazione del rouge non possono essere utilizzati.
-
Non dimenticare codici e servizi legacy
-
Se vi è una motivazione sufficiente, anche le debolezze teoriche impraticabili saranno sfruttate. (Il titolo originale del talk era "Doing the teoretic possible").
Aggiornamento
Microsoft ha confermato entrambi i problemi (un solo problema è sufficiente per un exploit):
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.
Aggiornamento 2
Microsoft ha pubblicato i dettagli :
- La vulnerabilità di non controllare correttamente lo scopo del certificato ha effetto solo sulle vecchie versioni di Windows.
- L'attacco di collisione è stato utilizzato per manipolare le estensioni del certificato, in modo che anche le versioni correnti di Windows vengano ingannate.
Aggiornamento 3
I ricercatori dell'attacco di collisione md5 originale hanno pubblicato che gli aggressori hanno utilizzato una nuova variante dell'attacco con prefisso scelto md5 scelto , il che implica che hanno una conoscenza molto approfondita della crittografia.