概要
インドの認証局eMudhra(emSign)が発行した8枚の中間証明書について、2025年4月の鍵生成儀式に不備があり、秘密鍵が極めて脆弱な値になっていたことが発覚した。研究者の"Wayne"が10月17日に公開された証明書データをスキャンしてこの問題を発見し、別の研究者"Flüpke"が実際に復元した秘密鍵をGitHub上で概念実証として公開した。これを受けてMozillaとGoogleは発覚当日の10月17日に、Appleは10月22日に対応に動き、Go言語とPythonも最新リリースで該当証明書を強制的に信頼しないよう修正した。問題はCVE-2026-111943として追跡されている。
何が起きたのか
eMudhraの説明によると、問題のP-384秘密鍵は2025年4月の鍵生成時にスクリプトの誤りによって生成された弱い鍵セットで、本来生成されるべき正規の鍵と似たラベルが付けられていたために誤って証明書署名用に選択されてしまったという。生成された鍵の値は256より小さいものもあり、中には4という極端に小さい値まで存在した。この場合、攻撃者はわずか256通りの数値を試すだけで秘密鍵を復元できる計算になる。鍵が生成された2025年4月以降、理論上は攻撃者がこの弱さを悪用できる状態が1年半近く続いていたことになる。
eMudhra自身は「影響を受けた中間証明書の大半は本番環境で使用されていなかった」とし、「エンドユーザー向け証明書の発行に使用された証拠はない」と説明しているが、脆弱な鍵が存在していた期間の長さを踏まえると、影響範囲の完全な否定にはなっていない。
ブラウザ・プラットフォーム各社の対応
発覚当日の10月17日、MozillaはFirefoxのOneCRL機構を通じて該当証明書を即座にブロックし、10月20日にはFirefox 158.0.1をリリースしてこの対応を正式に組み込んだ。Google Chromeも同日中に6枚の該当中間証明書をブロックした。Appleは10月22日に保護機能を追加し、主要3ブラウザベンダーが揃って緊急対応を完了させた形となる。
言語・ランタイム側の追従
ブラウザだけでなく、プログラミング言語のランタイムレベルでも対応が進んだ。Go言語チームは10月19日にGo 1.27.3および1.26.10をリリースし、crypto/x509パッケージのVerifyが該当する中間証明書を含む証明書チェーンを検証時にフィルタリングし、呼び出し元に返さないよう修正した。この修正はGo Issue 82345として管理されており、即座のアップグレードが推奨されている。
Pythonも10月21日に3.15.1、3.14.9を「expedited security release(緊急セキュリティリリース)」として、3.13.17を「special security release(特別セキュリティリリース)」として公開した。いずれのバージョンでも同梱のpipを26.2.2に更新し、eMudhra/emSign CA証明書の問題に対応したcertifi 2026.10.19を含める形で対処している。通常、3.13のようにセキュリティ修正のみの保守フェーズに入ったバージョンではpipの更新は行わないが、今回は3.13が保守フェーズ(security-only mode)に入ったばかりだったことから、インストーラーを含む特別リリースに踏み切ったという。
今後の見通し
今回の事案は、認証局の鍵生成プロセス自体に起因する脆弱性が、ブラウザだけでなく各種言語のランタイムやライブラリにまで対応を要求する典型例となった。Mozillaのセキュリティ技術者Dennis Jacksonが追跡用サイトを設けて影響を受けるシステムと対応状況を公開しており、他の言語・フレームワークでも同様の追従修正が今後続く可能性がある。認証局の鍵生成儀式における検証体制の見直しが、業界全体の課題として改めて浮上した。