
PCAP e firme Suricata per rilevare i tentativi di sfruttamento di OpenSSL CVE-2022-3602, inclusi traffico client/server dannoso ed esempi legittimi di certificati punycode.
PCAP o non è successo
A seguito della vulnerabilità recentemente divulgata in OpenSSL v3.0 fino alla v3.0.6 (CVE-2022-3602), abbiamo esaminato come appare un tentativo di sfruttamento 'sulla rete'. Questo repository contiene PCAP di vari scenari di sfruttamento, oltre a regole di rilevamento per Suricata.
È incluso anche un PCAP contenente lo scambio di un certificato legittimo con un indirizzo e-mail codificato in punycode nel subject alternative name. Abbiamo usato questo pcap per verificare che le regole non generino falsi positivi su certificati che hanno solo un subject alternative name breve, invece di uno molto lungo che ci aspetteremmo in un tentativo di sfruttamento.
Abbiamo utilizzato le seguenti risorse per creare file PCAP contenenti traffico che attiva il bug OpenSSL CVE-2022-3602:
| PCAP | Descrizione |
|---|
| spookyssl-windowscrash.pcap | Creato utilizzando il PoC Windows Crash di DataDog |
| spookyssl-malicious_client.pcap | Creato utilizzando il PoC malicious_client di DataDog |
| spookyssl-malicious_server.pcap | Creato utilizzando il PoC malicious_server di DataDog |
| not-spookyssl-certificate.pcap | Certificato punycode legittimo (non malizioso) |
La seguente firma Suricata è stata scritta per rilevare il bug OpenSSL CVE-2022-3602:
alert tls any any -> any any (msg:"FOX-SRT - Exploit - Possible SpookySSL Certificate Observed (CVE-2022-3602)"; \
flow:established; \
content:"|2b 06 01 05 05 07 08 09|"; fast_pattern; \
content:"|06 03 55 1d 1e|"; content:"xn--"; \
content:!"|81|"; distance:-6; within:1; byte_test:2,>=,500,-6,relative; \
classtype:attempted-user; threshold:type limit,track by_src,count 1,seconds 3600; \
reference:url,www.openssl.org/news/secadv/20221101.txt; \
reference:url,https://github.com/fox-it/spookyssl-pcaps; \
metadata:ids suricata; \
metadata:created_at 2022-11-02; sid:21004268; rev:3;)
Per analizzare le corrispondenze di contenuto:
|2b 06 01 05 05 07 08 09| -- Rileva il type-id: 1.3.6.1.5.5.7.8.9 (id-pkix.8.9) (id-on-SmtpUTF8Mailbox)|06 03 55 1d 1e| -- Rileva Extension Id: 2.5.29.30 (id-ce-nameConstraints) (estensione nameConstraints)"xn--" -- Rileva il punycode, in combinazione con la dimensione del valore punycode utilizzando una parola chiave byte_test:
byte_test:2,>=,500,-6,relative;Controlliamo anche esplicitamente i valori punycode piccoli, in tal caso la firma non dovrebbe attivarsi utilizzando:
content:!"|81|"; distance:-6; within:1;Le firme di rete non funzioneranno per le sessioni che utilizzano TLSv1.3 poiché i Certificati sono quindi crittografati.
Puoi anche vedere un pacchetto di reset nel spookyssl-windowscrash.pcap a causa del crash del client.
