
Un package Zeek qui détecte l'utilisation de certificats intermédiaires eMudhra compromis dans TLS 1.2 et versions antérieures.
Il s'agit d'un package Zeek permettant de détecter les connexions qui utilisent des certificats de CA intermédiaires eMudhra dont les clés privées sont compromises ou bien connues.
Pour plus d'informations, voir par exemple l'entrée Bugzilla originale ou https://emudhra.we-have-a-problem.com/.
Veuillez noter que cette détection ne fonctionne que pour les connexions utilisant TLS 1.2 et inférieur. En TLS 1.3, les certificats sont chiffrés et Zeek ne sait pas quels certificats transitent sur le réseau.
La CA eMudhra a émis plusieurs certificats de CA intermédiaires avec des clés privées ECDSA très faibles (par exemple une clé qui est le nombre 4).
Ainsi, cela permet à quiconque de créer trivialement des certificats signés par l'un des certificats de CA impactés. À la connaissance actuelle, il y a 8 clés affectées, dont 6 se trouvent dans des certificats qui étaient approuvés pour la PKI web.
Bien que les principaux navigateurs web aient immédiatement cessé de faire confiance aux certificats de CA intermédiaires affectés, les appareils qui ne sont pas aussi facilement mettables à jour seront en danger d'accepter ces certificats malveillants pendant des périodes potentiellement significatives.
Pour un contexte détaillé et une chronologie, voir cette entrée Bugzilla.
Ce package effectue une correspondance sur le Subject Public Key Info (SPKI) des certificats de CA intermédiaires affectés. Le SPKI est la partie du certificat qui contient les clés compromises - cela détectera donc également tout cross-sign potentiellement inconnu, ou tout autre certificat qui pourrait être créé avec les mêmes clés.
Liste des SPKI :
| Intermédiaire | 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
ou chargez directement les scripts :
zeek -r trace.pcap /path/to/emudhra-weak-keys/scripts
Le package vérifie chaque certificat analysé par Zeek par rapport à la liste.
Tous les types de notice sont sous EMudhraWeakKeys::
| Notice | Observation |
|---|---|
Compromised_Intermediate_Cert | Certificat intermédiaire affecté vu dans la connexion |
Compromised_Intermediate_Cert_Established | Certificat affecté vu, handshake terminé |
Compromised_Intermediate_Issuer | Certificat avec un émetteur affecté vu dans la connexion |
Compromised_Intermediate_Issuer_Established | Émetteur affecté vu, handshake terminé |
Les résultats sont écrits dans notice.log ; aucun journal supplémentaire n'est créé.
Par défaut, les notices _Cert sont émises une fois par adresse IP de serveur par jour,
et les notices _Established sont émises une fois par adresse IP de client par jour.
Veuillez noter que les notices Compromised_Intermediate_Cert signalent qu'
un certificat compromis était présent dans la connexion, tandis que les
notices Compromised_Intermediate_Issuer ne correspondent qu'à la chaîne d'émetteur
des certificats ; c'est un signal plus faible.
De plus, les notices Established ne suivent que si le handshake s'est terminé ; cela ne
signifie pas nécessairement que des données ont été échangées. Certains clients peuvent terminer le handshake
même si la vérification du certificat échoue, et n'abandonner qu'ensuite.
Le script vérifie les chaînes de certificats client et serveur. Il est peu probable que vous rencontriez ces certificats dans des certificats client (si c'est le cas, veuillez nous contacter pour nous le signaler).
Les certificats sont également vérifiés dans les protocoles non-TLS pris en charge par Zeek (RDP, Kerberos). Les certificats transférés en tant que fichiers (par exemple téléchargés via HTTP) ne sont pas vérifiés.
L'intervalle de suppression des notices peut être modifié via EMudhraWeakKeys::suppression_interval.
De nombreuses autres options peuvent être utilisées, par exemple pour modifier la liste des clés compromises. Veuillez consulter le fichier du script pour plus de détails.
Note : Ce package a été créé avec l'aide de Claude Opus 5.5. Tout le code et le texte ont été relus, édités et vérifiés manuellement.