Node.jsに10件の脆弱性 ―Brotliのリモートコード実行リスクと修正版

Share
Node.jsに10件の脆弱性 ―Brotliのリモートコード実行リスクと修正版アイキャッチ画像

Node.jsの22・24・26系列に対し、2026年10月21日、計10件の脆弱性に対応するセキュリティ更新が公開されました。Brotliの展開処理におけるリモートコード実行の恐れがある問題をはじめ、TLS証明書の検証不備や乱数生成に関する問題などが修正されています。また、eMudhraの中間認証局の秘密鍵問題を受けた証明書検証の強化も実施されました。本記事では、Node.jsの修正版と主な脆弱性の影響を整理し、企業が確認すべき更新対象や運用上の注意点を解説します。

Node.js 22・24・26系列で公開された修正版

今回の修正版は、Node.js 22系列が22.23.4、24系列が24.22.1、26系列が26.12.1です。22・24系列は長期サポート版のLTS、26系列は10月22日時点ではCurrentに位置付けられています。各系列の公式リリースノートは、いずれもセキュリティリリースであると明記しています。

公式の個別告知を集計すると、修正対象は26系列が10件、24系列が8件、22系列が7件です。10件全体の内訳はHighが4件、Mediumが3件、Lowが3件となります。対象となる脆弱性は系列によって異なるため、利用中のNode.jsのバージョンを確認してください。

図1:Node.jsの系列別修正件数と今回の修正版

Node.jsの系列別修正件数と今回の修正版
出典:The Node.js Project「Wednesday, October 21, 2026 Security Releases」および各系列のリリースノートを基に作成。
各CVEの影響系列と公表された深刻度に基づいて集計。系列間で同じCVEが重複するため、系列別の件数を合算した値は脆弱性の総数を示しません。

Node.js 20や25など、サポートが終了した系列にも注意が必要です。修正版の一覧に載っていないことは、安全性を意味しません。公式のサポート状況を確認し、サポート中の系列への移行を検討してください。Node.jsプロジェクトは、本番アプリケーションにはActive LTSまたはMaintenance LTSの利用を推奨しています。

Brotliの展開処理にリモートコード実行の恐れ

Node.jsに含まれるBrotliデコーダーで、想定したメモリ領域の外側へデータを書き込む「境界外書き込み」が起こる脆弱性(CVE-2026-111497)が確認されました。攻撃者が細工したBrotli圧縮データをアプリケーションに展開させた場合、プロセスの異常終了やメモリ情報の漏えい、リモートコード実行につながる恐れがあります。Brotli開発元も同じCVEに対応するセキュリティリリースを公開しています。

Node.js側ではBrotliの上流修正を取り込んでいます。Node.jsを利用するシステムでは、各系列の修正版を適用してください。Brotli単体の修正版と、Node.js本体の修正版は区別して管理する必要があります。

影響を調べる際は、外部から受け取ったBrotli圧縮データを、Node.jsのnode:zlibで展開している処理がないか確認してください。攻撃の成立には、細工された圧縮データが脆弱な展開処理に渡される必要があり、Node.jsを導入しているだけで直ちにコード実行が成立するわけではありません。

Brotliの脆弱性「HTTP2Shell」について、Node.jsやPythonなどへの影響と、攻撃が成立する条件、企業が確認すべき対策を解説しています。
関連記事:「HTTP2Shellとは ―Node.jsやPythonに広がるBrotli脆弱性の影響と対策」

TLS証明書の検証不備とeMudhraへの対応

暗号化通信では、接続先の証明書を検証することが重要です。今回の更新には、IPアドレスの表記・解釈に関係するホスト名検証の修正が含まれます。CVE-2026-105483は全角数字で書かれたIPアドレスに関する問題で、24・26系列が対象です。CVE-2026-106069とCVE-2026-106072は、非正規形式などのIPアドレス表記に関係する問題で、22・24・26系列に影響します。

これらの検証不備とは別に、eMudhra/emSignの中間認証局の秘密鍵問題への対応も実施されています。中間認証局は、接続先の証明書と信頼済みのルート認証局をつなぐ役割を担います。Node.jsの修正PRは、従来のNode.jsにブラウザーのCRLSetやOneCRLに相当する仕組みや、既定のオンライン失効確認がなく、秘密鍵に問題のある中間認証局を経由していても、信頼済みルートにつながる証明書チェーンが検証を通る問題を説明しています。

今回の修正は、対象となる8つの中間認証局の公開鍵ハッシュを組み込みのブロックリストに登録し、その公開鍵を含む証明書チェーンを拒否するものです。すべての証明書についてオンラインで失効を確認する機能が追加されたわけではありません。外部APIへHTTPS接続するNode.jsアプリケーションでも、実行環境の更新を確認する必要があります。いずれもIPアドレスの特殊な表記を扱う際に、実際の接続先と証明書の検証対象が一致しなくなる可能性がある問題です。

図2:eMudhra関連の中間認証局に対するNode.jsの検証処理の変更

通常の証明書検証を有効にした新規TLS接続を想定した概念図
出典:The Node.js Project「tls: reject chains containing blocked public keys」(https://github.com/nodejs/node/pull/66871)
※更新前に確立されたTLSセッションを再開する場合、証明書が再検証されないことがあります。

更新後の動作確認では、Node.jsの実行プロセスを再起動するとともに、TLSセッションの保存・再利用の有無を確認することが重要です。更新前に確立されたTLSセッションを再利用する構成では、証明書の再検証が行われない場合があるため、セッションの有効期限や再利用の設定にも注意が必要です。

eMudhraの秘密鍵問題の背景や証明書チェーンへの影響、企業が確認すべきTLS通信の対策について解説しています。
関連記事:「eMudhraの中間CA秘密鍵が復元可能に ―証明書の信頼問題と企業のTLS対策」

乱数生成・DNS・HTTPなどにも脆弱性

CVE-2026-106074は、起動スナップショットや単一実行ファイルに乱数キャッシュが保存され、複数のプロセスで同じ乱数値が再利用される可能性がある問題です。スナップショット作成時にcrypto.randomUUID()やcrypto.randomInt()などが呼び出されると、生成された識別子の重複や乱数値の予測につながる恐れがあります。通常のすべての乱数生成に影響するわけではなく、スナップショットの作成・利用方法に応じた確認が必要です。

このほか、NUL文字を含む名前のDNS処理、HTTPのKeep-Alive接続での応答処理、ZIP処理、Permission Modelによるファイルアクセス制御などにも修正が入っています。個別機能の利用状況だけで更新対象を狭めず、利用中の系列に対応したセキュリティリリース全体を適用することが基本です。

同梱ライブラリにも変更があります。c-aresは3系列で1.34.9へ、OpenSSLは22・24系列で3.5.9へ更新されました。Node.jsの更新管理では、実行環境とともに配布されるライブラリの変更も確認しておくと、影響調査や動作確認の範囲を把握しやすくなります。

Node.js更新後に確認すべき実行環境と動作

パッチ管理では、更新対象を見つけ、優先順位を決め、修正版を適用し、その結果を確認するところまでが一連の作業です。NIST SP 800-40 Rev. 4 も、更新の導入確認を企業のパッチ管理に含めています。

今回のNode.js更新では、本番サーバーに加え、コンテナ、定期実行のバッチ、CI/CDの実行環境、製品に同梱したNode.jsを確認対象として整理してください。資産ごとに、利用バージョン、保守担当者、配布元、更新方法を対応付けます。OSディストリビューションや製品ベンダーが提供するNode.jsを使用している場合は、その提供元の修正情報と適用方法も確認します。

コンテナでは、修正版を含むイメージで再ビルド・再デプロイし、稼働中のコンテナが切り替わったことを確かめます。単一実行ファイルにNode.jsを組み込んで配布している場合は、組み込んだ実行環境の更新と成果物の再作成・配布を確認対象にします。サーバー上の別のNode.jsを更新しただけで、配布済みの成果物も更新されたと判断しないことが大切です。

適用後は、実際に稼働するプロセスのバージョンを確認し、外部APIとのHTTPS通信や圧縮データの処理など、利用している機能の動作を確かめます。更新対象、適用日時、確認結果を記録しておけば、担当者が変わっても対応状況を追跡できます。事前に確認した更新計画と、稼働中の環境が一致していることをもって、作業の完了を判断します。

脆弱性情報を継続的な対応につなげるために

脆弱性情報を把握しても、自社のどのシステムが影響を受けるのか、誰が対応するのかが明確でなければ、適切な更新管理は進みません。今回のNode.jsの脆弱性を機に、利用ソフトウェアの把握から更新状況の確認まで、一連の管理体制を見直すことが重要です。

株式会社ブロードバンドセキュリティ(BBSec)の「脆弱性情報提供 SAS(Secure Net Alert Mail Service)」は、登録されたシステム情報に基づき、関連する脆弱性情報をメールや管理画面で提供するサービスです。対応ステータスの管理にも対応し、継続的な脆弱性管理を支援します。脆弱性情報の収集や更新対象の確認、対応状況の管理に課題をお持ちの場合は、BBSecへご相談ください。

【参考情報】

編集責任:木下

ウェビナー開催のお知らせ

最新情報はこちら


Security NEWS TOPに戻る
バックナンバー TOPに戻る