Node.jsは、アプリケーションをクラッシュさせたり、サービス妨害(DoS)状態を引き起こしたりする可能性のある複数の脆弱性に対応する重大なセキュリティアップデートをリリースしました。
2026年3月24日に公開されたこのアップデートは、長期サポート(LTS)ブランチをバージョン20.20.2(コード名「Iron」)にアップグレードし、TLS、HTTP/2、V8、およびパーミッションモデルなどのコアコンポーネントに影響する7つの異なるセキュリティ欠陥を修正しています。
最も深刻な脆弱性はCVE-2026-21637として追跡されており、高い評価を受けており、Node.jsのTLS処理に影響します。
この問題は、TLSハンドシェイク中に証明書を選択するために使用されるSNICallback関数の不適切なエラー処理に起因しています。
悪意のあるクライアントが予期しないサーバー名の値を送信すると、既存のエラーハンドラーをバイパスする同期例外をトリガーすることができます。これにより、Node.jsプロセス全体をクラッシュさせるハンドルされない例外が発生します。
この欠陥は認証なしでリモートから悪用される可能性があるため特に危険であり、公開されているTLSサーバーは非常に脆弱です。
パッチはSNICallbackロジックをtry/catchブロックでラップすることで問題を解決し、ハンドルされない例外がプロセスを終了するのを防ぎます。
もう1つの注目すべき問題はCVE-2026-21714で、Node.jsのHTTP/2実装に影響します。これはNGHTTP2_ERR_FLOW_CONTROLエラーの不適切な処理を伴います。
攻撃者は特別に細工されたWINDOW_UPDATEフレームを送信して、メモリリークを繰り返しトリガーできます。時間の経過とともに、これはリソース枯渇と最終的なサービス中断につながります。
修正は、HTTP/2処理レイヤー内でこれらのエラー条件の明示的な処理を導入しています。
Node.jsはまたV8エンジン関連の脆弱性であるCVE-2026-21717にも対応しました。これはHashDoS攻撃を可能にします。
この欠陥は、V8が整数のような文字列をハッシュする方法にあり、それらを数値に変換することで衝突が予測可能になります。
特別に細工されたJSON入力を提供することで、攻撃者は過度なハッシュ衝突を強制し、パフォーマンスを大幅に低下させてCPUリソースを消費させることができます。
この問題は信頼できないJSONデータを処理するアプリケーションに特に関連があります。
暗号化レイヤーでは、CVE-2026-21713はHMAC検証のタイミングサイドチャネル脆弱性を露出します。
この問題は、非定時間比較関数(memcmp)を使用することから生じており、一致するバイト数に基づいてタイミング情報が漏えいします。
正確なタイミング測定を持つ攻撃者は、有効なHMAC署名を推測される可能性があります。パッチは、タイミングリークを排除するために、これを定時間比較方法に置き換えます。
さらに、2つの低重大度の脆弱性はNode.jsのパーミッションモデルに影響します。CVE-2026-21715とCVE-2026-21716は、攻撃者が特定の構成下でファイルシステムアクセス制限をバイパスすることを可能にします。
これらの欠陥は、不正なパス解決とファイルの存在開示を可能にし、機密的なファイルシステム構造情報の露出の可能性があります。
別の修正はCVE-2026-21710に対応しており、HTTPヘッダー処理でのプロトタイプ汚染の問題です。特定のヘッダーフィールドに対してnullプロトタイプオブジェクトに切り替えることで、Node.jsは攻撃者がオブジェクトプロトタイプに悪意のあるプロパティを注入するのを防ぎます。
セキュリティ専門家は、v20.20.2、v22.22.2、v24.14.1、およびv25.8.2を含む修正バージョンへの直ちのアップグレードを強く推奨しています。
CVE-2026-21637のリモート悪用可能性とプロセスクラッシュの可能性を考えると、本番環境でNode.jsを実行している組織、特にインターネット向けサービスをホストしている組織は、このアップデートを高優先度として扱う必要があります。
修正されたリリースは、Windows、Linux、macOS、およびエンタープライズアーキテクチャを含むすべての主要なプラットフォームで利用でき、公式のNode.js配布チャネルを通じて入手できます。
翻訳元: https://cyberpress.org/node-js-fixes-multiple-vulnerabilities/