
Un pacchetto Zeek che rileva quando certificati intermedi eMudhra compromessi vengono utilizzati in TLS 1.2 e versioni precedenti.
Questo è un pacchetto Zeek per rilevare connessioni che utilizzano certificati CA intermedi eMudhra con chiavi private compromesse/note.
Per maggiori informazioni vedere, ad esempio, la voce originale su Bugzilla o https://emudhra.we-have-a-problem.com/.
Si noti che questo rilevamento funziona solo per connessioni che utilizzano TLS 1.2 e versioni precedenti. In TLS 1.3, i certificati sono cifrati e Zeek non sa quali certificati transitano sulla rete.
La CA eMudhra ha emesso diversi certificati CA intermedi con chiavi private ECDSA molto deboli (ad esempio una chiave che è il numero 4).
Pertanto, questo consente a chiunque di creare banalmente certificati firmati da uno qualsiasi dei certificati CA interessati. Alla conoscenza attuale, ci sono 8 chiavi interessate, 6 delle quali si trovano in certificati che erano considerati affidabili per la web PKI.
Sebbene i principali browser web abbiano immediatamente revocato la fiducia nei confronti dei certificati CA intermedi interessati, i dispositivi che non sono aggiornabili con la stessa facilità saranno a rischio di accettare questi certificati malevoli per periodi potenzialmente significativi.
Per il contesto dettagliato e una cronologia vedere questa voce su Bugzilla.
Questo pacchetto effettua il matching sul Subject Public Key Info (SPKI) dei certificati CA intermedi interessati. L'SPKI è la parte del certificato che contiene le chiavi compromesse - quindi questo rileverà anche eventuali cross-sign potenzialmente sconosciuti, o qualsiasi altro certificato che potrebbe essere creato con le stesse chiavi.
Elenco degli SPKI:
| Intermedio | SPKI SHA-256 |
|---|---|
| EM EV TLS CA - G3B (eMudhra BV) | E0254C7FCDC265E2F0F8A428DABB75AB4AE039B4872D62F5EE57F0877D5A8A41 |
| EM OV TLS CA - G3B (eMudhra BV) | 43BFFA19D6EF651451F6841E019931E96F6F2EAEFF28AB4B6F1CE4576DE2717B |
| EM DV TLS CA - G3B (eMudhra BV) | EBED6475C2C2D80FCB199F3FE8DD6E6B3CE60B77EB15D4E42C3DEC0C6F5B5105 |
| EM EV TLS CA - G3C (eMudhra Inc) | 5C0660A2B164910D8FF589C18E14552E9E0EC237DCEFE2CB736D41A4811F81A0 |
| EM OV TLS CA - G3C (eMudhra Inc) | 63ECEFEE431D49523BC1136C4E72D0206A477086CAF606CD5CF025686C109CF8 |
| EM DV TLS CA - G3C (eMudhra Inc) | 49DD353DC2B919A3770645117D0E60C16115E7D1BC259EEFE734B00EA434FE5F |
| EM OV CS CA - G3B (eMudhra BV) | EC4FFA1AD0AC88081314B7AAFFEF6A91F97CD57291BB5BA686C5415F5EB4F6B6 |
| EM OV CS CA - G3C (eMudhra Inc) | 92C063D67E8F14DB71D288E11266FFDAF69CBF115F7BAB14F3BC2F68D25E0E30 |
zkg install corelight/emudhra-weak-keys
oppure caricare direttamente gli script:
zeek -r trace.pcap /path/to/emudhra-weak-keys/scripts
Il pacchetto verifica ogni certificato analizzato da Zeek rispetto all'elenco.
Tutti i tipi di avviso sono sotto EMudhraWeakKeys::
| Avviso | Osservazione |
|---|---|
Compromised_Intermediate_Cert | Certificato intermedio interessato visto nella connessione |
Compromised_Intermediate_Cert_Established | Certificato interessato visto, handshake completato |
Compromised_Intermediate_Issuer | Certificato con un emittente interessato visto nella connessione |
Compromised_Intermediate_Issuer_Established | Emittente interessato visto, handshake completato |
I risultati finiscono in notice.log; non viene creato alcun log aggiuntivo.
Per impostazione predefinita, gli avvisi _Cert vengono emessi una volta per indirizzo IP del server al giorno,
e gli avvisi _Established vengono emessi una volta per indirizzo IP del client al giorno.
Si noti che gli avvisi Compromised_Intermediate_Cert segnalano che
un certificato compromesso era presente nella connessione, mentre gli
avvisi Compromised_Intermediate_Issuer corrispondono solo alla stringa dell'emittente
dei certificati; questo è un segnale più debole.
Inoltre, gli avvisi Established tracciano solo se l'handshake è terminato; questo
non significa necessariamente che siano stati scambiati dati. Alcuni client potrebbero completare l'handshake
anche se la verifica del certificato fallisce, e interrompere solo successivamente.
Lo script controlla sia le catene di certificati client che server. È improbabile che questi certificati vengano visualizzati nei certificati client (se dovesse accadere, vi preghiamo di contattarci e farcelo sapere).
I certificati vengono controllati anche nei protocolli non-TLS supportati da Zeek (RDP, Kerberos). I certificati trasferiti come file (ad esempio scaricati via HTTP) non vengono controllati.
L'intervallo di soppressione delle notifiche può essere modificato tramite EMudhraWeakKeys::suppression_interval.
Ci sono molte altre opzioni che possono essere utilizzate, ad esempio, per modificare l'elenco delle chiavi compromesse. Si prega di consultare il file dello script per maggiori dettagli.
Nota: Questo pacchetto è stato creato con l'aiuto di Claude Opus 5.5. Tutto il codice e il testo sono stati revisionati, modificati e verificati manualmente.