本文へ
ハクソク

世界を動かす技術を、日本語で。

信頼の八ビット;eMudhraのCAキーがミリ秒で破られる

元記事: 原文(scotthelme.co.uk)

概要

eMudhraの中間認証局8つの秘密鍵が 極めて単純な数値 (例:4や56)で生成されていたことが判明。 これにより秘密鍵が 即座に復元可能 となり、証明書の安全性が根本から崩壊。 主要ブラウザでは 即時ブロック されたが、多数の非ブラウザクライアントは依然として危険な状態。 多くのIoT機器や自動アップデータ等が 長期間脆弱 なまま運用される恐れ。 根本原因は スクリプトバグと人的ミス による弱い鍵ペアの選択。

eMudhra中間認証局の秘密鍵流出事件

  • eMudhraの中間認証局8つの秘密鍵が 極端に単純な数値 (例:4, 56, 115)で設定
  • これらの鍵は 公開証明書から即座に復元可能 な状態に
  • セキュリティ研究者がApple, Google, Microsoft, Mozilla, eMudhraに 2025年10月17日報告
  • ChromeとFirefoxは 即日ブロック措置、Mozillaはルート証明書も削除
  • 問題の8つは TLS発行CA6種・コード署名CA2種 (全て2025年4月作成)
    • さらにSectigoのルートでクロスサインされていた

問題の本質

  • これらは 楕円曲線P-384 の秘密鍵
  • 通常は 2³⁸⁴通り の巨大な乱数が必要
  • eMudhraの秘密鍵は 1バイト(最大256通り) しか変動せず
  • 1×G, 2×G, ...と計算するだけで 全パターン総当たりが一瞬で完了
  • 公開鍵自体は一見問題なく、 形式・構造上の異常は見えない
  • 事実上、 証明書発行時から秘密鍵が公開状態

被害の広がりと「封じ込め不可能」な理由

  • 通常の秘密鍵流出は「盗難」だが、今回は そもそも秘密鍵が秘密でなかった
  • 2025年4月以降、 誰でも即座に秘密鍵取得可能 な状態が17ヶ月続いた
  • ChromeやFirefoxなど 主要ブラウザはCT(証明書透明性)で守られる
  • しかし curl, Python, Node, Go, Java, git等の非ブラウザクライアント は
    • デフォルトで失効確認やCTチェックをしない
    • CAバンドルを更新しない限り脆弱性が残る
  • IoTや組み込み機器は 2039年まで証明書を信頼し続ける恐れ

具体的なリスク例

  • curl | sh型インストーラや自動アップデータ :偽証明書で任意コード実行
  • CI/CDパイプライン :依存関係取得や成果物配布時の乗っ取り
  • サーバ間API通信 :APIキーや顧客データの漏洩
  • IoT・組み込み機器 :長期にわたり脆弱な通信
  • Windowsコード署名 :悪意あるソフトも正規署名扱い

実証テスト

  • api.stripe.comの証明書を偽造し、curl/Python/Nodeで 検証OK
  • Windowsも失効確認をしない限り チェーンを受け入れる

今後の対策

  • OSや主要ミドルウェアのCAバンドルを必ず更新
  • certifi, Node, Homebrew等も アップデート必須
  • 更新不可能な機器は2039年までリスクが残る
  • 根本原因は HSMスクリプトのバグと人的ミス で誤った弱い鍵ペアが選択されたこと

参考・ソース

提供: ハクソク · 要約更新:

AIによる日本語要約です。内容は原文とあわせてご確認ください。

Hacker Newsの議論を読む

Hackerたちの意見

そりゃ、簡単に割れるよね。4なんて素数じゃないし!

└

彼らの3つの以前の秘密鍵の値を誰も見つけられなかったのは、本当にすごいことだよね。

└

彼らを擁護するなら、たぶんメルセンヌ素数の2^2 - 1を狙ってたんだろうけど、単にタイプミスしたんじゃないかな。

└

https://xkcd.com/221/

└

え、俺の荷物のロックと同じ番号だ!

└

うん、冗談だよ。でも分からない人のために言っとくと、楕円曲線には素数はいらない。

└

57にすればよかったのに。みんな素数って知ってるし。

関連: https://news.ycombinator.com/item?id=50166579 「eMudhra中間CAの妥協」 | 947ポイント | 19時間前 | 408コメント

振り返ってみると、100の信頼できる証明書機関があるのはちょっと多すぎたかも。

└

振り返ってみると、ちょっとした能力チェックがなかったのは見落としだったかもね。

└

いや、もしかしたら、バカなやつがいてもあんまり影響しないようにもっと必要かも。

└

その通り、ゼロだけでいいんだ。

Hacker Newsで議論の続きを見る

同じ出典の記事