eMudhra中間証明書、脆弱な鍵が原因で失効

by


·

Image

セキュリティ研究者らが最近、emSignの名称で事業を展開するインドの認証局eMudhraで、暗号処理における致命的なミスを発見しました。監査の結果、8つの中間認証局の秘密鍵が危殆化していたことが判明しています。中間証明書は下位のTLS証明書を発行する役割を担うため、悪意のある攻撃者は任意のドメインの証明書を偽造できます。その結果、世界中の暗号化通信に対して、気づかれることなく中間者攻撃を仕掛けることが可能になっていました。

注目すべきは、この問題が外部からのネットワーク侵入によるものではない点です。原因は、鍵の生成時に使用された乱数生成器に重大な欠陥があったことでした。MozillaはeMudhra中間証明書の危殆化に関するセキュリティレポートで、衝撃的な暗号上の欠陥を明らかにしました。8つのP-384楕円曲線の秘密鍵はいずれも、256未満の整数に相当するものでした。

P-384秘密鍵に見られた、あまりにも低いエントロピー

通常、P-384の秘密鍵には約384ビットの暗号エントロピーが必要です。ところが、問題の秘密鍵が持つスカラー値は、4、56、66、115、155、156、230、237というわずかな数値にすぎませんでした。一部の秘密鍵に至っては、1桁の数字で表されていました。つまり、各秘密鍵の実効的なセキュリティ強度は8ビット未満だったことになります。

このため、外部の観測者であれば誰でも、単純な総当たりスクリプトを使って数ミリ秒で秘密鍵を導き出せます。公開鍵が開示されていなくても、攻撃者はスカラー値の秘密を容易に推測できます。これらの証明書の暗号学的な安全性は、作成された時点で完全に崩壊していたと言えます。

エコシステム全体での緊急失効とパッチ適用

広範な通信傍受を未然に防ぐため、主要ブラウザベンダーは緊急の緩和策を連携して実施しました。Mozilla、Google、Apple、Microsoftはそれぞれ、集中管理する失効データベースを更新し、8つの中間証明書をすべてブロックしました。これにより、最新のブラウザは、これらの証明書チェーンを使うWebサイトを即座に「信頼できない」と警告します。

一方で、多くのプログラミング言語のランタイムには、オンラインで動的に失効を確認する仕組みがありません。そのため、開発エコシステム側で、信頼できないトラストアンカーを除去するライブラリの更新を手動で適用する必要があります。Go、NSS、Python certifi、Rust、Electronなどのプロジェクトは、緊急のセキュリティアドバイザリを公開しました。システム管理者は、開発環境全体でこれらの依存関係を直ちにアップグレードすべきです。

エンドユーザー向けの予防策

セキュリティアナリストは、デスクトップとモバイルの両方でWebブラウザを速やかに更新するよう、エンドユーザーに呼びかけています。古いビルドのブラウザは、内部の証明書失効リストを自動更新できない場合が少なくありません。そのため、パッチを適用していないクライアントは、公共ネットワーク上で気づかれないまま通信を偽装されるおそれがあります。認証局の根本的な不備に対する最善の防御策は、今後もオペレーティングシステムを最新の状態に保つことです。

翻訳元: https://meterpreter.org/emudhra-intermediate-certificates-compromise/

本記事は meterpreter.org の記事を翻訳・要約したものです。