2026年10月21日、Node.jsプロジェクトが3つのリリースラインに同時にセキュリティ修正版を出しました。
国内ポータルに載った見出しは「全体で10件の脆弱性を修正」という合計の件数を前に出しています。
一方で、検索で関心を集めた語は見出しに入っていない「brotli」でした。
本稿ではNode.js公式のセキュリティ告知と各版の変更履歴に当たり、「10件」が何を数えた数か、brotliの1件が原典でどう書かれているかを確認します。
何が報じられたか
au Webポータルに掲載された記事(配信元はGIGAZINE)の見出しは、Node.jsが「22.23.4」「24.22.1」「26.12.1」を配信し、「全体で10件の脆弱性を修正」したという内容です。
見出しに出ているのは、3つの版番号と合計件数の2種類の情報です。
発表元はNode.jsプロジェクトで、公式ブログのセキュリティ告知「October 2026 Security Releases」の公開日は2026年10月21日です。
同じ日付で3版のリリースノートも公開されています。
22.23.4と24.22.1は長期サポート版(LTS)、26.12.1は最新版(Current)です。
なお、ポータルの転載ページで取得できたのは見出しと配信元の表示だけで、本文の詳細は確認できませんでした。
そのため、本稿で比べる対象は見出しの文言に限ります。
原典に当たる
公式のセキュリティ告知は、修正した脆弱性を10件のCVE番号(共通脆弱性識別子)で一覧にし、それぞれに深刻度と影響するリリースラインを付けています。
深刻度の内訳はHIGHが4件、MEDIUMが3件、LOWが3件です。
HIGHの4件は次のとおりです。
- CVE-2026-105482: dns.resolve()がNUL文字を含む名前を途中で切る。
影響は26.x・24.x・22.x
- CVE-2026-105483: 全角数字で書かれたIPアドレスで、TLS証明書のホスト名検証をすり抜けられる。
影響は26.x・24.x
- CVE-2026-106069: 先頭にゼロが付いたIPv4表記で、同じく検証をすり抜けられる。
影響は26.x・24.x・22.x
- CVE-2026-111497: 同梱しているBrotliデコーダの範囲外書き込み。
影響は26.x・24.x・22.x
Brotliは圧縮形式の名前で、Node.jsは標準モジュールnode:zlibの中にその伸長(デコード)処理を同梱しています。
告知によると、不正なブロック切り替えが「恒久的な形式エラー」ではなく「入力がまだ足りない」という一時的な状態として扱われていました。
その結果、ストリーム型のデコーダが8バイトの内部バッファに入力を書き足し続け、バッファの末尾を越えて書き込みます。
告知は起こりうる結果として、プロセスのクラッシュ、メモリ内容の漏えい、遠隔からのコード実行を挙げています。
成立する条件は、攻撃者が用意したBrotliデータをアプリケーションがnode:zlibで伸長することです。
報告者はOpenAI Codex Securityの2名と記載されています。
修正は、Brotliの開発元であるgoogle/brotliのコミット0ed4268を取り込む形で行われました。
このコミットの題は「Detect and report invalid stream earlier.」です。
ブロック切り替えの処理が真偽値ではなくエラーコードを返すように改められ、新しいエラーコードBROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH(値は-17)が追加されています。
Node.js側にも、このエラーコードを公開する変更が同じ修正単位で入っています。
告知はこのほか、eMudhraの中間認証局の侵害に対応するCA証明書の更新と、サポート終了版は常に影響を受けるという注意書きを載せています。
報道との差分
見出しの「全体で10件」は告知の一覧の件数と一致しています。
ただし、10件すべてを含む版は1つだけです。
告知の影響範囲の欄から版ごとに数え直すと、次のようになります。
| リリースライン |
告知で影響ありとされた件数 |
差の内訳 |
| 26.x(26.12.1) |
10件 |
全件 |
| 24.x(24.22.1) |
8件 |
26.x専用のLOW 2件(ZIP処理・権限モデル)を除く |
| 22.x(22.23.4) |
7件 |
さらにHIGHのCVE-2026-105483を除く |
つまり「10件」は3つのラインの合計で、LTS版を使っている人に関係するのは7件か8件です。
見出しの「全体で」という語がこの区別を担っていますが、版ごとの数までは示していません。
深刻度の表記にも、原典どうしの差があります。
告知はCVE-2026-106072をMEDIUMとしています。
ところが3版の変更履歴では、CVE-2026-106069とCVE-2026-106072が「tls: reject non-canonical IP addresses」という1行にまとめられ、行末に「High」と付いています。
変更履歴だけを見てHighの行に載った番号を数えると5件になり、告知の4件と合いません。
件数の正本は、番号ごとに深刻度を付けている告知の側です。
選択・省略・強調の3点で整理すると、見出しは版番号と合計件数を選び、個別の内容を省略しています。
告知が唯一、遠隔からのコード実行の可能性を明記した項目はBrotliの1件ですが、その名前は見出しにありません。
なぜそうなったか
見出しの形は、資料の構造から説明できます。
告知は冒頭で「26.x、24.x、22.xの各ラインに更新が出た」と述べ、そのあとに10件の一覧を並べています。
読者が最初にすべきことは自分の版を上げることなので、版番号と総数を前に出す見出しは、この構造をそのまま要約した形になります。
10件の中身は、DNS、TLS、HTTP、暗号、権限モデル、ZIP、Brotliと7つの領域に分かれていて、1つの語でまとめられません。
それでもbrotliが検索語として残ったのは、告知の中でこの1件だけ性質が違うからだと考えられます。
ただし、検索した人の動機は資料からは確認できません。
ここで言えるのは資料の側の事実です。
HIGHの4件のうち3件は証明書検証や名前解決の取り違えですが、Brotliの件だけが「遠隔からのコード実行」を結果に挙げています。
さらに条件が「外から受け取った圧縮データを伸長する」ことなので、HTTPのContent-Encodingを扱うサーバーやプロキシなど、自分の用途に当てはまるかを調べる必要が生じやすい項目です。
もう1つの構造上の要因は、修正の出どころがNode.jsの外にあることです。
変更履歴の該当行は「deps: brotli: cherry-pick」、つまり依存ライブラリへの上流修正の取り込みとして書かれています。
同じBrotliのデコーダを組み込んだ他のソフトにも同じ欠陥があるのかという問いは、Node.jsの告知だけでは答えが出ず、ライブラリ名での検索に向かいます。
ただ、この見立てを裏づける検索データは取得していないため、推測にとどまります。
変更履歴と告知で深刻度がずれた件は、変更履歴が「修正1件につき1行」で書かれていることから説明できます。
1つの修正が2つのCVEを同時に塞いだため、2つの番号が1行にまとめられ、その行の深刻度には高いほうが付いたと読めます。
これは資料の書式から読み取った説明で、Node.js側がそう説明した記述は見つかっていません。
分からなかったこと
GIGAZINEの元記事の本文は取得できず、本文でBrotliにどこまで触れていたかは確認できませんでした。
比較は見出しに限っています。
26.12.1の変更履歴の主要変更欄では、告知が26.x専用とするCVE-2026-106071の番号を確認できませんでした。
各CVEのCVSS値(深刻度の点数)は告知の取得範囲に載っておらず、本稿では書いていません。
上流のBrotliが修正を含む正式リリースを出したか、他のソフトが影響を受けるかは調べきれていません。
検索量の推移の元データも未確認です。
出典
- Node.js公式ブログ「October 2026 Security Releases」2026年10月21日 https://nodejs.org/en/blog/vulnerability/october-2026-security-releases
- Node.js公式ブログ「Node.js 26.12.1 (Current)」2026年10月21日 https://nodejs.org/en/blog/release/v26.12.1
- Node.js公式ブログ「Node.js 24.22.1 (LTS)」2026年10月21日 https://nodejs.org/en/blog/release/v24.22.1
- Node.js公式ブログ「Node.js 22.23.4 (LTS)」2026年10月21日 https://nodejs.org/en/blog/release/v22.23.4
- google/brotli コミット0ed4268「Detect and report invalid stream earlier.」 https://github.com/google/brotli/commit/0ed4268a4401abcb44720963
- au Webポータル(配信元GIGAZINE)「Node.jsがセキュリティアップデートで…全体で10件の脆弱性を修正」 https://article.auone.jp/7e67b70c-cd8a-4971-b79b-3a1165016edf
※本記事は報道・公開情報をもとに作成した速報であり、内容が後に更新・訂正される場合があります。
最新かつ正確な情報は、一次情報や公式発表をご確認ください。
コメント