
SpookySSL CVE-2022-3602 Scanner SSLv3 per Windows, Linux, macOS
SpookySSL CVE-2022-3602 SSLv3 Scanner per Windows, Linux, macOS
Il problema si presenta innanzitutto quando si determina la dimensione in byte. Come puoi notare, quando si determina la dimensione in byte, NULL, cioè il valore vuoto/zero, non è definito, quindi la lunghezza in byte può essere impostata a zero. Nel comando sottostante, la parte che inizia con xn-- indica la conversione diretta in alfabeto latino dei nomi di dominio scritti in alfabeti diversi (ad esempio convertiti dal cinese in punycode). All'interno del ciclo If, il comando memcpy alloca nello stack un'area di dimensione delta + 1 e scrive il valore outptr in quest'area. Quando viene inserito NULL, poiché viene allocato uno spazio di 1 byte, due codici di spazio creano un buffer overflow.
Per informazioni dettagliate : https://github.com/openssl/openssl/commit/c42165b5706e42f67ef8ef4c351a9a4c5d21639a
Prima di tutto, dobbiamo conoscere l'esecuzione remota del codice (RCE)
Gli attacchi di esecuzione remota del codice (RCE) consentono a un attaccante di eseguire codice dannoso da remoto su un computer. L'impatto di una vulnerabilità RCE può variare dall'esecuzione di malware al pieno controllo della macchina compromessa da parte dell'attaccante.
La vulnerabilità CVE-2022-3602 in OpenSSL si verifica a causa dell'elaborazione errata di Punycode durante il controllo dei certificati X.509.
Punycode è una rappresentazione di stringhe Unicode che utilizza il sottoinsieme limitato di caratteri ASCII. Viene solitamente utilizzato per codificare nomi di dominio contenenti caratteri non ASCII, ad esempio lettere giapponesi. Una stringa codificata in punycode
inizia con "xn--" ed è seguita da caratteri e cifre inglesi.
La funzione vulnerabile ossl_punycode_decode può causare un buffer overflow durante la decodifica della stringa Punycode. Viene chiamata quando OpenSSL elabora una catena di certificati. Per sfruttare la vulnerabilità è necessario:
1) Creare un certificato CA (certificate authority) o un certificato intermedio che contenga il campo "nameConstraints" con una stringa Punycode dannosa. La stringa Punycode deve contenere almeno 512 byte escluso "xn--".
2) Creare un certificato foglia che contenga un campo otherName SubjectAlternateName (SAN) che specifichi una stringa SmtpUTF8Mailbox
Vulnerabilità Denial of Service (DoS)
Un attacco Denial-of-Service (DoS) è un attacco volto a spegnere una macchina o una rete, rendendola inaccessibile agli utenti legittimi. Gli attacchi DoS raggiungono questo obiettivo inondando il bersaglio di traffico o inviandogli informazioni che ne provocano il crash.
La vulnerabilità CVE-2022-3602 presenta anche una vulnerabilità Denial of Service, come altre vulnerabilità di buffer overflow. Il buffer overflow si verifica nella funzione vulnerabile ossl_a2ulabel. Quando questa funzione incontra una parte Punycode seguita da un carattere punto ("."), aggiunge "." anche al buffer di output, anche se supera la sua dimensione.
In questo modo, un attaccante può far traboccare il buffer di output con un numero qualsiasi di caratteri ".", il che porta alla corruzione dello stack. Questa vulnerabilità non può essere utilizzata per l'esecuzione remota del codice, ma solo per il denial of service.
Fonte : https://blog.checkpoint.com/2022/11/01/openssl-vulnerability-cve-2022-3602-remote-code-execution-and-cve-2022-3786-denial-of-service-check-point-research-update/
