注意まだ起きていない

eMudhra の中間CA鍵が割り出せる状態。macOS の Git は今も信頼

eMudhra の中間CA 8本の秘密鍵が推測可能だった。Windows は緊急更新を出したが、macOS の git・curl は28日時点でも信頼したまま。確認方法をまとめる。

要点

  • インドの認証局 eMudhra の中間CA(証明書を発行する下位の認証局)8本の秘密鍵が、誰でも割り出せる状態だった。
  • 鍵を使えば、どんなサイトにもなりすませる偽の証明書が作れてしまう。ブラウザは対策が進んだが、コマンドラインの道具は環境ごとに差がある。
  • Dennis Jackson の報告によると、macOS 標準の git・curl・python3 は10月28日時点でも、問題の証明書を信頼したままだ。

何が起きたか

HTTPS の安全は、「信頼された認証局が出した証明書だけを正しいと見なす」ことで成り立つ。その認証局の鍵が破られると、偽物を見分けられなくなる。

今回の問題の鍵は、2025年4月に作られた eMudhra の中間CA 8本のものだ。6本は Web サイト用(TLS)、2本はコード署名用である。Dennis Jackson(Mozilla の暗号技術者)の報告サイトによると、鍵の作り方に誤りがあり、証明書の公開情報だけから誰でも鍵を復元できる。The Register によると、Scott Helme が調べた鍵の1つは、値がなんと「4」だった。ほかにも56や115といった小さな値の鍵があった。

10月17日に、コミュニティの一人が Mozilla に報告した。Firefox と Chrome は同日中にブロックした。Microsoft は10月20日に、Windows の「信頼しない証明書の一覧」へ追加した。10月26日には、7つの証明書を信頼の一覧から外す臨時の更新を出した。Apple は10月19日から、Safari など Apple の仕組みを使うアプリで12の証明書をブロックしている。

穴が残るのは macOS のコマンドラインだ。Apple の説明では、git・curl・python3・ruby・perl・openssl は、/etc/ssl/cert.pem という信頼の一覧を読む。この一覧の修正は「今後の更新」とされているだけだ。Jackson は、10月26日の macOS 27.2 でも直らず、利用者が手で行った回避策も元に戻された、と報告している。

偽の証明書が実際に悪用された、という報告は、今回確認した一次情報にはない。ただし、悪用されていないことも確かめられていない。ブラウザは Certificate Transparency(発行した証明書を公開ログに残す仕組み)を必須にしているため、この鍵では攻撃しにくい。一方、curl のような道具はこれを確認しない。そのため危険が大きい。

日本の利用者への影響

日本の組織や利用者に被害が出たかどうかは、分からない。ただし影響は地域を問わない。eMudhra の証明書は、Mozilla・Microsoft・Apple・Chrome の信頼の一覧にある根につながっており、それらを引き継ぐ多くの一覧にも及ぶ、とされる。ただし Microsoft は10月26日に、Windows の信頼の一覧から7つの証明書を外している。

とくに注意したいのは、Mac の CI(自動ビルド)環境や開発者の端末だ。通信経路の途中にいる者が、git の通信を偽装できる可能性がある。その場合、悪意あるコードを受け取らされたり、GitHub のトークンを盗まれたりするおそれがある。これは Jackson の指摘であり、実害の報告ではない。

今すぐやること

  1. Windows は、証明書の自動更新が止まっていないかを確かめる。ネットから切り離した端末や、更新を無効にした端末が危ない。Microsoft は、そうした端末向けに臨時更新(KB5134133 など)を出している。ただし、10月の更新にある既知の不具合も引き継ぐ。入れる前に確認すること。
  2. Mac の git・curl が今も信頼していないかを、Jackson の検査用サイトで試す。エラーが出れば守られており、通ってしまえば危ない。
  3. 守られていない Mac は、Apple が管理者向けに示した回避策を使う。信頼の一覧から該当の根を外す方法だ。macOS を更新するたびに元に戻っていないかを再確認する。
  4. Java と Git for Windows を更新する。Oracle JDK と Git for Windows には修正版がある。ただし OpenJDK は、報告時点でまだ対応していない。Linux は、各ディストリビューションの更新を適用する。
  5. 開発や配備の自動処理に Mac を使っているなら、その通信を信頼できる回線に限る。機密を扱う処理は、修正が出るまで見直す。

背景

認証局の鍵や発行の不備は、過去にも何度も起きている。そのたびに、各社の信頼の一覧から外す対応が行われてきた。ただし、ブラウザの更新は速くても、OS 付属の道具やアプリが持つ独自の一覧は遅れがちだ。今回もその差が表に出た。Apple も、独自の一覧を持つアプリは開発元に確認するよう勧めている。

Microsoft は、中間CAを失効させることと、親の根を信頼の一覧から外すことは、影響の大きさが違うと述べている。外すと、その配下の正規の証明書も使えなくなるためだ。そのため残りの eMudhra の根は、検討を続けている段階だ。

技術者向けの詳細
  • 対象: 中間CA 8本(TLS 6本、コード署名 2本)。Apple は TLS の12証明書(各中間CAの通常版とSectigoのクロス署名版)と、emSign ECC Root CA - G3 をブロック済み。
  • Windows: KB5134133(Windows 11 24H2/25H2/26H2)、KB5134125(Windows 10 21H2/22H2)。7つの証明書(eMudhra G3 の根6つと AAA Certificate Services のクロス署名)を信頼から外す。Microsoft は、Edge でも10月27日に同じ7つを外すとしていた。
  • Mozilla: NSS 3.131.1 で修正。
  • Oracle JDK: 27.0.1.0.3、25.0.5.0.3、21.0.13.0.3、17.0.21.0.3、11.0.33.0.3、8u511 b33。OpenJDK は未対応(報告時点)。Debian/Ubuntu は Java のキーストアの再生成が要る。
  • Git for Windows: 2.56.0.3 で修正。macOS の git はシステムの /etc/ssl/cert.pem を使うため、その一覧が直るまで影響を受ける。
  • 検査(Jackson のサイト)。証明書エラーなら守られている:
curl -sSI https://dv-g3b-emudhra.we-have-a-problem.com/
curl -sSI https://dv-g3b-noct-emudhra.we-have-a-problem.com/
  • 接続自体の失敗は、証明書を拒否した証拠にならない。
  • Apple の管理者向け回避策: /etc/ssl/cert.pem をバックアップし、emSign ECC Root CA - G3(必要なら AAA Certificate Services も)を削除する。後者を外すと、ほかのサイトの検証が壊れる場合がある。詳しい手順は Apple の文書を参照。
  • Jackson のサイトに、検査用のチェーン一式(chains.zip)と日本語の概要(ja.html)がある。

出典

一次情報

報道

記事は、運営者が生成 AI を活用して作成し、内容を確かめたうえで公開しています。 誤りに気づいたら編集方針の連絡先へ。

次に読む