Node.jsがセキュリティ更新を公開、Brotliの脆弱性や中間CA鍵のブロックなど10件に対処
要点
-
Node.jsがサポート対象の全3系統(22.x、24.x、26.x)に向け、計10件のセキュリティ修正版を公開した。
-
内蔵するBrotliデコーダーの境界外書き込みにより、リモートコード実行につながる恐れがある欠陥を修正した。
-
実証コードでは標準ビルドでのコード実行に至っておらず、現時点で実環境における悪用は報告されていない。
-
TLS検証の回避やDNS処理の不具合に加え、侵害されたeMudhraの中間CA鍵の信頼停止も実施された。
-
Node.jsプロジェクトは2026年10月21日、サポート対象の全3系統を対象に、10件の脆弱性を修正するセキュリティ更新を公開した。対象は長期サポート(LTS: 長期保守が保証される版)の22.xおよび24.xと、現行ラインの26.xである。内蔵するデータ圧縮ライブラリ「Brotli」に起因するリモートコード実行(RCE: 外部から任意のコードを実行される脆弱性)の危険をはじめ、通信検証の回避など複数のセキュリティ問題に対処している。
Brotliデコーダーの境界外書き込みと影響
最も深刻とされたのは、内蔵のデータ圧縮ライブラリ「Brotli(Googleが開発した高圧縮率のデータ形式)」に関する欠陥(CVE-2026-111497)だ。本問題はユーザー自身のコードではなく、Node.jsに同梱されたライブラリ側に存在する。
Brotliデータの展開時に本コードが呼び出されるため、node:zlibモジュールの利用時だけでなく、fetch()関数でBrotli圧縮されたレスポンスを受信した際にも自動で実行される。これにより、外部リクエストや外部APIから取得したデータなど、攻撃者が制御可能な圧縮データを展開するアプリケーション全般に影響が及ぶという。
原因は不正な入力によって生じる境界外書き込み(割り当てメモリ領域の外側にデータを書き込む不具合)であり、今回の更新で不正入力を早期検知して処理を停止するよう改修された。
深刻度評価と実証コードでの検証結果
Node.jsプロジェクトは本脆弱性についてリモートコード実行の可能性があるとしつつも、深刻度は最上位のCritical(緊急)ではなく「High(高)」と評価している。実際の悪用可能性はより限定的とみられている。
10月22日に公開された概念実証(PoC: 脆弱性の悪用可能性を示す検証コード)では、意図的に防御を弱めたテスト用ビルドでのみコード実行が確認された。通常の標準ビルドではクラッシュやメモリの限定的な読み取りにとどまり、実用的な攻撃は達成できなかったと報告されている。
修正版はPoCの不正入力を拒絶し、現時点で実環境での悪用は確認されていない。なお、本修正はBrotliのソース上で2026年2月に作成されていたが、公式リリースは10月21日となったため、Brotliを同梱する他社ソフトウェアでも同様の更新が必要になる可能性がある。
TLS検証バイパスや乱数キャッシュの不具合
Brotliのほか、高深刻度(High)の脆弱性としてTLS(暗号化通信)のホスト名検証を回避できる2件(CVE-2026-106069、CVE-2026-105483)や、dns.resolveがヌルバイトを含むホスト名を途中で切断してしまう問題(CVE-2026-105482)が修正された。
中深刻度(Medium)では、キープアライブ接続での応答誤処理(CVE-2026-105481)や非正規化IPv4の検証不備(CVE-2026-106072)に加え、単一実行可能ファイル(SEA)等でcrypto.randomUUID()などのキャッシュが再利用されて乱数の予測不能性が損なわれる問題(CVE-2026-106074)を解消した。さらに低深刻度(Low)としてZipFileの不備やパーミッションモデルの迂回など3件にも対処している。
eMudhra中間CA鍵のブロックと提供バージョン
本更新では、インドの認証局eMudhraで侵害が報じられた中間CA鍵8件に対する信頼停止も実施された。Node.jsはMozillaのルート証明書リストを使うものの失効確認を標準で行わないため、更新前は侵害された鍵による証明書が検証を通過していたという。
今回の修正版は22.23.4、24.22.1、26.12.1の各バージョンである。サポート終了(EOL)を迎えた20.x以前のバージョンにはパッチが提供されないため、サポート対象のリリースラインへの移行が案内されている。