Quale difetto crittografico è stato sfruttato da Flame, per ottenere il suo codice firmato da Microsoft?

45

Oggi Microsoft ha rilasciato un avviso di avviso di sicurezza che il malware "Flame" ha sfruttato un punto debole in un algoritmo crittografico utilizzato dal servizio di gestione licenze di Terminal di Microsoft ed è stato quindi in grado di ottenere parte del codice firmato in modo che sembrasse provenire da Microsoft.

Ecco cosa Microsoft ha scritto :

We have discovered through our analysis that some components of the malware have been signed by certificates that allow software to appear as if it was produced by Microsoft. We identified that an older cryptography algorithm could be exploited and then be used to sign code as if it originated from Microsoft. Specifically, our Terminal Server Licensing Service, which allowed customers to authorize Remote Desktop services in their enterprise, used that older algorithm and provided certificates with the ability to sign code, thus permitting code to be signed as if it came from Microsoft.

Vedi anche questo post del blog di Microsoft .

Quindi, qual è stato l'algoritmo di crittografia sfruttabile utilizzato dal servizio di gestione licenze di Microsoft Terminal? Qual è stata la debolezza crittografica che è stata sfruttata da Flame? Ci sono delle lezioni che possiamo imparare da questo incidente?

    
posta D.W. 04.06.2012 - 07:02
fonte

4 risposte

2

Qui ci sono due vulnerabilità:

  • Firma codice illimitata. Microsoft ha fornito agli utenti di Servizi terminal la possibilità di ottenere un certificato di firma che si collega a Microsoft Root. Hanno inavvertitamente permesso che questo certificato venisse usato per firmare il codice. Pertanto, gli utenti possono firmare qualsiasi codice che gli è piaciuto e farlo sembrare approvato da Microsoft. Yikes! Molto male.

    Questa vulnerabilità è sfruttabile sui sistemi prima di Windows Vista (ad esempio, su Windows XP). Tuttavia, a causa delle nuove misure di protezione introdotte in Vista, questa vulnerabilità non è più sfruttabile per la firma del codice su Windows Vista o versioni successive, da solo.

  • Attacchi di collisione. uno dei certificati nella catena utilizza MD5 . MD5 è noto per essere vulnerabile agli attacchi di collisione ed è noto come utilizzare questi attacchi per sfruttare qualsiasi autorità di certificazione che utilizza MD5. Ciò ha permesso all'autore dell'attacco di ottenere il codice di propria scelta firmato, in modo tale da far sembrare che fosse stato approvato da Microsoft. (Vedi la risposta di Hendrik per ulteriori informazioni.) Anche questo è molto brutto.

    Questa vulnerabilità ha permesso loro di aggirare l'indurimento relativo a Vista. Pertanto, la combinazione di queste due vulnerabilità ha permesso agli aggressori di attaccare con successo tutti i sistemi operativi Windows: sono stati in grado di far firmare il loro codice maligno in modo che sembrasse provenire da Windows.

Queste sono due vulnerabilità separate (ma correlate). Flame usa i due in combinazione, permettendo a Flame di attaccare con successo tutte le piattaforme Windows. Queste vulnerabilità sono presenti da molti anni. Qualcuno avrebbe potuto sfruttare con facilità la precedente vulnerabilità, anche se avrebbe avuto successo solo con piattaforme pre-Vista.

Risorse per ulteriori letture:

  • Un eccellente post sul blog che spiega tutto questo in modo più dettagliato: link

  • Microsoft ha scritto :

    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.

  • Microsoft ha anche scritto :

    by default the attacker’s certificate would not work on Windows Vista or more recent versions of Windows. They had to perform a collision attack to forge a certificate that would be valid for code signing on Windows Vista or more recent versions of Windows. On systems that pre-date Windows Vista, an attack is possible without an MD5 hash collision.

  • L'attacco di collisione apparentemente implicò lo sviluppo di un nuovo attacco di collisione su MD5, diverso da quelli che erano precedentemente noti nella letteratura di ricerca aperta. Vedi i report di Ars Technica ( gli spettacoli di Crypto Breakthrough Flame è stato progettato da scienziati di livello mondiale ) e < a href="http://www.cwi.nl/news/2012/cwi-cryptanalist-discovers-new-cryptographic-attack-variant-in-flame-spy-malware"> analisi di Marc Stevens .

risposta data 05.06.2012 - 23:28
fonte
25

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.

    
risposta data 04.06.2012 - 13:58
fonte
12

Bella domanda :) Non sono sicuro se c'è una risposta ovvia.

Non pensavo che fosse un algoritmo rotto come tale ma un certificato rubato.

Credo che una lezione è che il modello CA è rotto, ma probabilmente lo sapevi già prima. Quindi sembra che sia stato utilizzato un vero certificato "Microsoft" per firmare Flame. SANS ha pubblicato il seguente: link . Al momento nessuno sembra sapere come è stato rubato ecc. O chi lo ha ancora fatto, ma il governo USA (che molti sospettavano in origine) avrebbe davvero rubato un certificato Microsoft, chissà ???

Adoro il bit nel link che hai fornito dove Microsoft dice -

"Inoltre, la maggior parte dei prodotti antivirus rileva e rimuove questo malware."

Penso che l'incidente di Flame sia un'ulteriore prova del fatto che l'industria AV è completamente reazionaria, molto spinta dal marketing e non più efficace (anche Mikko Hyponnen ha detto che è stato un fallimento in Wired nel fine settimana - link ).

Hyponnen ha pubblicato un'immagine di ciò che i cerattivi rubati usati in Flame apparirebbero in Windows 7 prima di revocarli - link .

Qualcuno che sa molto di me di certs etc (Moxie Marlinspike) ha fatto un ottimo post su quell'argomento lo scorso anno - link . Ho giocato un po 'con Convergence (http://convergence.io) e probabilmente lo esaminerò di più, anche se è essenzialmente per la navigazione e purtroppo non ci aiuterà. La stragrande maggioranza degli utenti non sa come controllare i certificati nel proprio browser o capire come funziona, per non parlare dei certificati di autista. Immagino che sia un altro esempio dell'importanza di comprendere veramente ciò che tu (o i tuoi utenti) stai facendo, che stai facendo e che cos'è il traffico normale. Costruire una politica che consenta un traffico conosciuto e buono e negare tutto ciò che non è esplicitamente consentito (su Internet) aiuta a ridurre la superficie e le capacità di attacco.

    
risposta data 04.06.2012 - 11:28
fonte
2

This advice is for those who require the highest security, and not for the casual web user

Una lezione che possiamo imparare è di ridurre l'area della fiducia pubblica . Non so quale specifica gerarchia di root sia stata compromessa, ma in generale il trust PKI pubblico out-of-the-box è troppo ampio a mio parere.

Suggerirei di rimuovere tutti i certificati di root non essenziali dai tuoi host ad eccezione di quelli elencati qui :

Issued to                              Issued by                            Serial number                   Expiration date Intended purposes   Friendly name                        Status
Microsoft Root Authority               Microsoft Root Authority         00c1008b3c3c8811d13ef663ecdf40  12/31/2020  All                     Microsoft Root Authority                R
Thawte Timestamping CA                 Thawte Timestamping CA           00                              12/31/2020  Time Stamping           Thawte Timestamping CA                  R
Microsoft Root Certificate Authority   Microsoft Root Certificate Authority 79ad16a14aa0a5ad4c7358f407132e65 5/9/2021   All                     Microsoft Root Certificate Authority    R

Quindi richiedi a Microsoft di limitare tali radici attendibili al minimo EKU necessario, come la firma del codice, ecc. Anche l'elenco vincolato di 3 certificati ha troppe autorizzazioni.

Gli utenti occasionali che insistono sulla rimozione dei certificati radice dovrebbero consultare questa risposta sul perché le CA sono state collocate lì, la metodologia e i requisiti di sicurezza di ogni root ca.

    
risposta data 05.06.2012 - 22:36
fonte

Leggi altre domande sui tag