In occasione del Patch Tuesday svoltosi lo scorso ottobre, i ricercatori Akamai hanno creato un exploit per una vulnerabilità critica di spoofing in Windows CryptoAPI – CVE-2022-34689. A dicembre la vulnerabilità è stata rivelata a Microsoft dalla National Security Agency (NSA) e dal National Cyber Security Center (NCSC) e secondo Microsoft, questa vulnerabilità consente a un utente malintenzionato di falsificare la propria identità ed eseguire azioni come l’autenticazione o la firma di un certificato ed è quindi molto pericolosa.
CryptoAPI è l’API di Windows per la gestione di tutto ciò che riguarda la crittografia. In particolare, gestisce i certificati, dalla loro lettura e analisi alla convalida con le autorità di certificazione verificate. Anche i browser utilizzano CryptoAPI per la convalida dei certificati TLS, un processo che si traduce nell’icona del lucchetto che tutti sono abituati a controllare.
Si può facilmente immaginare che una vulnerabilità all’interno del processo di verifica dei certificati possa essere molto redditizia per gli attaccanti, perché consente loro di mascherare la propria identità e di aggirare le protezioni. Akamai è la prima a utilizzare strumenti reali per creare un exploit per il bug CVE-2022-34689 che esiste in Microsoft CryptoAPI e mostrare come può essere utilizzato in modo dannoso. Si tratta di una vulnerabilità che consente agli aggressori di mascherarsi come entità legittime, un attaccante che ha il potere di essere attendibile come se fosse Microsoft o Google è molto pericoloso.
Guardando maggiormente nel dettaglio, il flusso dell’attacco è duplice. La prima fase prevede l’acquisizione di un certificato legittimo, la sua modifica e l’invio della versione modificata alla vittima. La seconda fase prevede la creazione di un nuovo certificato il cui MD5 entra in collisione con il certificato legittimo modificato e l’utilizzo del nuovo certificato per falsificare l’identità del soggetto del certificato originale.
Prima della patch, la funzione determinava se un certificato ricevuto era già presente nella cache (e quindi verificato) solo in base alla sua impronta MD5. Quello che Akamai è stata in grado di teorizzare è che se un aggressore fosse in grado di creare un certificato dannoso il cui MD5 si scontrasse con uno già presente nella cache dei certificati della vittima, sarebbe riuscito ad aggirare il controllo di vulnerabilità e far sì che il suo certificato dannoso diventasse attendibile.
Dopo la patch, l’aggiunta del comando memcmp richiede che il contenuto effettivo dei due certificati corrisponda completamente, eliminando il rischio precedente.
I ricercatori Akamai si sono poi focalizzati sulle applicazioni in circolazione che utilizzano CryptoAPI e che potrebbero essere vulnerabili a questo attacco di spoofing. Finora hanno scoperto che può essere creato un exploit per le vecchie versioni di Chrome (v48 e precedenti) e le applicazioni basate su Chromium. Ma è probabile che ci siano altri bersagli vulnerabili e la ricerca è ancora in corso, anche perché risulta che solo l’1% dei dispositivi visibili nei data center è stato patchato, rendendo il resto non protetto dalla creazione di un exploit di questa vulnerabilità.
In conclusione, i certificati svolgono un ruolo importante nella verifica dell’identità online, rendendo questa vulnerabilità redditizia per gli aggressori. Tuttavia, nonostante sia stata contrassegnata come critica, la vulnerabilità ha ricevuto un punteggio CVSS di 7,5, probabilmente per via della portata limitata delle applicazioni e dei componenti Windows che potrebbero essere colpiti.
Detto questo, c’è ancora molto codice che utilizza questa API e che quindi potrebbe essere esposto a questa vulnerabilità, il che giustifica l’installazione di una patch anche per le versioni di Windows non più in uso, come Windows 7. Akamai consiglia di applicare ai server e agli endpoint Windows l’ultima patch di sicurezza rilasciata da Microsoft. Per gli sviluppatori, un’altra opzione per mitigare questa vulnerabilità è quella di utilizzare altre WinAPI per controllare due volte la validità di un certificato prima di utilizzarlo.