CVE-2024-32962 (CVSS 10): Critical Vulnerability in XML-Crypto Affects Millions
2024/05/01 SecurityOnline — XML ドキュメントの暗号セキュリティにおいて、広く使用されている不可欠なツール XML-Crypto npm パッケージに、深刻なセキュリティ上の欠陥が発見された。この脆弱性には CVE-2024-32962 が採番され、その深刻度は CVSS 値 10.0 と評価されている。この脆弱性は、電子署名の真正性を適切に検証しないという、同パッケージのデフォルト設定における基本機能の欠陥に起因しており、悪用に成功した攻撃者に対して、なりすまし署名を許してしまう。

脆弱性の概要
XML-Crypto は、XML ドキュメントに電子署名と暗号化を組み込むためのツールとして、開発者たちの間で高い人気を博し、毎週 100万件近くのダウンロードを達成している。その XML-Crypto に発見された脆弱性 CVE-2024-32962 は、XML 署名検証のパッケージの処理に起因するものだ。XML-Crypto のデフォルト設定では、W3C 勧告のセクション 3.2.2 “XML Signature Syntax and Processing“ で詳述されているように、署名者の認可を検証せずに、署名自体の有効性だけを検証している。
この問題の核心は、デジタル署名された XML ドキュメント内の証明書に対する、XML-Crypto の管理方法に起因する。この脆弱性に対して脆弱なバージョン 4.0.0〜6.0.0 未満では、署名付き XML 文書の <KeyInfo /> 要素で提供される、すべての証明書を信頼している。悪意の秘密鍵で XML ドキュメントに再署名する攻撃者が、対応する証明書を <KeyInfo /> 要素に添付することで、このデフォルト動作の悪用が可能になる。それにより、変更された XML が、XML-Crypto の検証チェックに渡される。
悪用の影響
この脆弱性の悪用に成功した攻撃者は、署名検証プロセスを詐称し、XML-Crypto のセキュリティに依存するシステムに、悪意のデータを持ち込むことを可能にする。それにより、データ漏洩や不正なデータ操作が発生し、多くのデジタル・トランザクションや通信システムが依存する、信頼メカニズムの崩壊などにいたる可能性が生じる。
解決策と緩和策
この問題は、XML-Crypto の最新バージョン 6.0.0 で修正されており、脆弱性の原因となるデフォルトの getCertFromKeyInfo 実装の暗黙の使用が無効化されている。直ちにアップグレードが不可能なユーザーに対しては、それ以前のバージョンのための回避策が、XML-Crypto の開発者たちから提供されている:
- 証明書の検証:getCertFromKeyInfo を介して抽出された証明書を、検証結果を受け入れる前に、信頼できる証明書のリストと手動で照合する。
- 設定の変更:XML-Crypto の getCertFromKeyInfo 関数を () => undefined に設定する。それにより、署名検証に明示的に設定された publicCert/privateKey を使用するようになり、欠陥のあるデフォルトのメカニズムを回避できる。
開発者および企業への推奨事項
機密データや貴重なデータを扱うアプリケーションにおいて、XML-Crypto を使用している開発者たちに推奨されるのは、この脆弱性に関連するリスクを軽減するために、バージョン 6.0.0 へのアップデートを優先的に実行することだ。あるいは、アップデートを適用できるようになるまで、提案されている回避策を実施することが、アプリケーションのセキュリティの完全性を維持するために重要となる。
XML-Crypto について調べてみましたが、それは何かという視点で、まとめられているコンテンツが見つかりませんでした。文中にもあるように、npm 内に説明 “An xml digital signature library for node. Xml encryption is coming soon. Written in pure javascript!” がありましたが、わりと最近のものだと思われます。リンク “For more information visit my blog or my twitter” も提供されています。
You must be logged in to post a comment.