
TLS 1.2以下で侵害されたeMudhra中間証明書が使用された際に検知するZeekパッケージ。
これは、侵害された/よく知られた秘密鍵を持つ eMudhra 中間 CA 証明書を使用する接続を検出するための Zeek パッケージです。
詳細については、例えば元の Bugzilla エントリや https://emudhra.we-have-a-problem.com/ を参照してください。
この検出は TLS 1.2 以下を使用する接続でのみ機能することに注意してください。TLS 1.3 では証明書が暗号化されるため、Zeek はどの証明書がネットワーク上を通過するかを知ることができません。
eMudhra CA は、非常に弱い ECDSA 秘密鍵(例えば、鍵が単なる数値の 4 であるもの)を持つ複数の中間 CA 証明書を発行しました。
これにより、影響を受けた CA 証明書のいずれかによって署名された証明書を誰でも簡単に作成できるようになります。現在のところ、影響を受ける鍵は 8 個あり、そのうち 6 個は Web PKI で信頼されていた証明書に含まれています。
主要なウェブブラウザは影響を受けた中間 CA 証明書を直ちに信頼しなくなりましたが、容易に更新できないデバイスは、相当な期間にわたってこれらの悪意のある証明書を受け入れる危険性があります。
詳細な背景とタイムラインについては、こちらの Bugzilla エントリを参照してください。
このパッケージは、影響を受ける中間 CA 証明書の Subject Public Key Info (SPKI) にマッチします。SPKI は、侵害された鍵を含む証明書の部分です。したがって、潜在的に未知のクロス署名や、同じ鍵で作成される可能性のあるその他の証明書も検出されます。
SPKI の一覧:
| 中間 CA | 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
または、スクリプトを直接ロードします:
zeek -r trace.pcap /path/to/emudhra-weak-keys/scripts
このパッケージは、Zeek によって解析されるすべての証明書をリストと照合します。
すべての通知タイプは EMudhraWeakKeys:: の下にあります。
| 通知 | 観測内容 |
|---|---|
Compromised_Intermediate_Cert | 接続内で影響を受ける中間証明書を検出 |
Compromised_Intermediate_Cert_Established | 影響を受ける証明書を検出、ハンドシェイク完了 |
Compromised_Intermediate_Issuer | 接続内で影響を受ける発行者を持つ証明書を検出 |
Compromised_Intermediate_Issuer_Established | 影響を受ける発行者を検出、ハンドシェイク完了 |
結果は notice.log に出力されます。追加のログは作成されません。
デフォルトでは、_Cert 通知はサーバー IP アドレスごとに 1 日 1 回発行され、_Established 通知はクライアント IP アドレスごとに 1 日 1 回発行されます。
Compromised_Intermediate_Cert 通知は接続内に侵害された証明書が存在したことを示すのに対し、Compromised_Intermediate_Issuer 通知は証明書の発行者文字列にのみマッチする点に注意してください。これはより弱いシグナルです。
さらに、Established 通知はハンドシェイクが完了したかどうかのみを追跡します。これは必ずしもデータが交換されたことを意味するものではありません。一部のクライアントは、証明書検証が失敗してもハンドシェイクを完了し、その後で初めて中断する場合があります。
スクリプトはクライアントとサーバーの両方の証明書チェーンを検査します。クライアント証明書でこれらの証明書が見られることはほとんどありません(もし見かけた場合は、ぜひご連絡ください)。
証明書は、Zeek がサポートする非 TLS プロトコル(RDP、Kerberos)でも検査されます。ファイルとして転送される証明書(例:HTTP 経由でダウンロードされたもの)は検査されません。
通知の抑制間隔は EMudhraWeakKeys::suppression_interval で変更できます。
侵害された鍵のリストを変更するなど、他にも多くのオプションがあります。詳細はスクリプトファイルを参照してください。
注: このパッケージは Claude Opus 5.5 の支援を受けて作成されました。 すべてのコードとテキストは手動でレビュー、編集、検証されています。