概要
セキュリティ勧告:Node.js v14 と Node v16 の多くのバージョンは、サービス拒否にさらされる可能性のあるバージョンの openssl をまだ使用しています。悪意を持ってフォーマットされた PKCS12 ファイルを処理すると、 OpenSSL がクラッシュし、サービス拒否攻撃を受ける可能性があります。
詳細
モジュール情報
影響を受けるパッケージ:openssl
影響を受けるバージョン
1.0.2 ~(除く)1.0.2zj
1.1.1 ~(除く)1.1.1x
3.0.0 ~(除く)3.0.13
3.1.0 ~(除く)3.1.5
リポジトリhttps://github.com/openssl/openssl
公開パッケージ:openssl
脆弱性情報
この問題は深刻度が中程度であり、openssl のいくつかのブランチに存在し、これらのバージョンを使用するプロジェクトに影響を与える可能性があります。
OpenSSLは、証明書と鍵を保持するためにPKCS12形式のファイルを使用することができます。PKCS12 の仕様では特定のフィールドが NULL になることが許されていますが、OpenSSL はこのケースを正しくチェックしていません。フィールドが NULL の場合、OpenSSL は NULL ポインターを参照しようとし、その結果 OpenSSL がクラッシュします。
アプリケーションがOpenSSL APIを使用してPKCS12ファイルを処理する場合、そのアプリケーションはこの問題に対して脆弱である。
この脆弱性がある OpenSSL API は以下の通りです:PKCS12_parse(), PKCS12_unpack_p7data(), PKCS12_unpack_p7encdata(), PKCS12_unpack_authsafes(), PKCS12_newpass() です。
3.2、3.1および3.0のFIPSモジュールは、この問題の影響を受けません。
再現の手順
- パッチが適用される前の1.0.2から3.1.5までのOpenSSLに依存するバージョンのNodeでマシンをセットアップする。
- PKCS12ファイルを作成または修正する。このファイルでは、仕様上NULLとすることが許されている特定のフィールドが、実際にNULLとなっている。キーから始める:
openssl pkcs12エクスポート-incert.pem -inkey key.pem -out malicious.p12 -passout pass:password
- 16進エディタまたはファイルを修正できるソフトウェアでファイルを修正する。特定のフィールドにヌル値を挿入する。
- 悪意のある鍵を使用する脆弱なバージョンのOpenSSLを使用し、クラッシュすることを観察する。
回避策はない。
緩和
OpenSSL はよく使われるライブラリで、Node.js などの他のパッケージと頻繁にバンドルされています。 あなたのソフトウェアのセキュリティギャップを避けるために、依存関係の更新を維持し続けるNodeのバージョンを実行していることを確認してください。 Nodeの最新バージョンに更新するか、HeroDevsのようなベンダーの商用サポートを利用してください。
その他のリソース
- NISTエントリー https://nvd.nist.gov/vuln/detail/CVE-2024-0727
- https://github.com/advisories/GHSA-9v9h-cgj8-h64p
弊社がサポートするオープンソースソフトウェアに新たな脆弱性が修正された場合、いつでもアラートを受け取ることができます。