Node.js、Brotliデコーダの脆弱性を修正 本体はGoogleのライブラリでPythonやDebianにも

[最終更新]

Googleで優先するソースとして追加するボタン

Debianが配るNode.jsでは、nodejsのパッケージを更新しても今回の修正は届きません。10月21日に直った範囲外書き込みの本体はGoogleのBrotliにあり、DebianのNode.jsはOSのBrotliを使うからです。同じ欠陥はPythonのパッケージにも及びます。どこでBrotliが動いているか、把握できているでしょうか。


Node.jsプロジェクトは2026年10月21日、26.x、24.x、22.x向けのセキュリティリリースを公表し、深刻度Highの4件を含む10件の脆弱性を修正した。このうちCVE-2026-111497は、同梱のBrotliデコーダで不正な圧縮データが内部バッファの外へ書き込まれる問題である。不正なブロック切り替えを入力不足として扱ったため、ストリーミング展開が8バイトのバッファに入力を追記し続けた。攻撃者が用意したBrotliデータをアプリケーションがnode:zlibで展開すると、プロセスの停止、メモリ内容の漏えい、遠隔からのコード実行につながりうる。

修正版はv26.12.1、v24.22.1、v22.23.4。報告者はOpenAI Codex Securityの研究者2人である。

From: 文献リンクNode.js — Wednesday, October 21, 2026 Security Releases

【編集部解説】

PHPの重大な脆弱性「PHP2Shell」の修正版が出た10月21日、Node.jsもセキュリティリリースを出していました。深刻度Highの4件のうち、Node.jsの外にも影響が及ぶのが、圧縮形式Brotliのデコーダに見つかった範囲外書き込み(CVE-2026-111497)です。一部では「Node2Shell」とも呼ばれていますが、欠陥があるのはGoogleが開発するBrotliそのもので、Node.jsはそれを同梱していた立場です。

Node.jsは深刻度をHighとしています。点数は評価する機関によって分かれていますが、メモリを壊す種類の欠陥で、遠隔からのコード実行に「つながりうる」と公式に書かれた点は重く受け止めたいところです。一方で、Node.jsの発表は実際の悪用に触れていません。10月25日時点で、米CISAの「悪用が確認された脆弱性」のカタログ(KEV)にも載っていません。

「データを展開するだけ」で届く

Brotliは、Webでファイルや通信を小さくするために広く使われている圧縮形式です。サーバはBrotliで圧縮した応答に「Content-Encoding: br」を付けて送り、対応するブラウザやHTTPクライアントはこれを展開します。

今回の欠陥が問題になるのは、攻撃者が用意したBrotliデータを、アプリケーションがnode:zlibで展開する経路がある場合です。ログインの前にその処理へ届く構成なら、認証なしで攻撃される恐れがあります。データを受け取って展開する、という日常的な処理そのものが入口になりうるわけです。

私は、とくに次の2つの向きを棚卸しする価値があると考えています。一つは、外部から届く圧縮されたリクエスト本文を、サーバやミドルウェアが自動で展開している構成です。もう一つは逆向きで、外部のURLからデータを取ってくるときに、HTTPクライアントが「br」の応答を自動で展開している構成です。取りに行く先を自分で選べないクローラーや、URLを受け取って中身を取得する機能は、後者にあたります。どこで、誰から受け取ったデータを展開しているのか。これを把握しておくことが、Node.jsを入れ替える作業と並ぶ、もう一つの対策になります。

直すべき場所は、Node.jsの外にもある

本体がBrotliにある以上、修正もNode.jsだけでは完結しません。Googleは10月21日、Brotliの1.2.1、1.1.1、1.0.10を公開しました。CVEの記録では、影響を受けるのは1.0.3〜1.0.9、1.1.0、1.2.0で、各系列の修正版が1.0.10、1.1.1、1.2.1にあたります。

Pythonでは、PyPIの「Brotli」が10月22日に1.2.1を、「brotlicffi」が同日に1.2.1.0を公開しています。GitHubの勧告は、この2つのパッケージも影響を受けると明記しています。Node.jsを使っていない組織でも、Pythonやほかの言語から同じデコーダを使っていれば、更新の対象になります。

Node.js側で一つ注意したいのは、版数の見え方です。修正版のNode.jsは、Brotliの修正部分だけを取り込む形で直しています。そのため、同梱のBrotliの版数は1.2.0(22系は1.1.0)のまま変わりません。Brotliの版数ではなく、Node.js自体のバージョンで確かめるのが確実です。

DebianのNode.jsは、OSのBrotliで直る

Linuxのディストリビューションが配るNode.jsは、事情が少し違います。Debianの追跡ページは、DebianのNode.jsはシステムが提供するBrotliライブラリを使う、と注記しています。nodejsのパッケージについては、重要度を「unimportant」としています。

つまりDebianでは、Node.jsのパッケージではなく、OSのBrotliの共有ライブラリ(パッケージ名はlibbrotli1)を更新することが対処になります。修正済みの版は、Debian 12(bookworm)が1.0.9-2+deb12u1、Debian 13(trixie)が1.1.0-2+deb13u1です。古いライブラリを読み込んだまま動いているNode.jsのプロセスは、更新したあとに再起動も必要です。テスト版のforkyと開発版のsidは、10月25日朝の時点で修正待ちです。

Debian 12と13が配るNode.jsは18系と20系で、本家のサポートはどちらも終わっています。今回の本家のセキュリティリリースでは対象外の系列ですが、Brotliの部分については、ディストリビューションの更新で手当てされる形です。自分の環境のNode.jsが公式のバイナリなのか、公式のDockerイメージなのか、ディストリビューションのパッケージなのか。それによって、更新すべきものが変わります。

同じリリースで直った、ほかの3件

残るHighの3件は、いずれも「名前やアドレスの解釈の食い違い」に関わるものです。DNSの問い合わせで、NUL文字を含む名前が黙って切り詰められる問題。全角数字で書いたIPv4アドレスに対し、TLSの証明書の照合が正しく働かない問題(26系と24系のみ)。そして「0127.0.0.1」のような先頭にゼロの付くアドレスを、TLSの検証処理と、macOSなど一部のOSの名前解決が別の数として読み、実際の接続先とは異なるIPアドレスの証明書を受け入れてしまう問題です。許可リストや証明書でアクセス先を絞っているアプリケーションほど、確かめておく意味があります。

あわせて、Node.jsが内蔵する信頼済みの証明書の一覧も、インドの認証局eMudhraの中間認証局が侵害されたことへの対応として更新されています。

AIの関わる発見と、各所の素早い修正

PHP2Shellは、OpenAIの取り組み「Patch the Planet」に参加したCalifなどが、AIを使った調査で見つけたものでした。今回のBrotliの欠陥について、Node.jsの発表は、カイ・トラン(Khai Tran)氏とシルビ・メイヤー(Sylvie Mayer)氏を「OpenAI Codex Security」の名義で報告者に挙げています。Codex Securityは、AIで脆弱性を調べ、修正案まで示すOpenAIのセキュリティ製品です。今回の調査でAIが担った具体的な工程までは、Node.jsの発表からは分かりません。それでも、AIによる脆弱性探しに取り組む人たちが関わった欠陥の修正が、同じ日に二つの基盤ソフトウェアで公表されたことになります。

注目したいのは、その後の動きの速さです。GoogleのBrotli、Node.js、Pythonの2つのパッケージ、Debian 12と13のパッケージが、10月21日から23日まで(UTC)の3日間で相次いで修正版を出しました。Debianの告知は、日本時間では24日の朝です。一つの欠陥が多くの製品に入り込んでいても、上流の修正と各所の取り込みがかみ合えば、短い時間で塞ぐ道筋をつけられます。

見つかる速さが上がるほど、受け取る側の更新の速さも問われていきます。自分の環境のどこにBrotliが入っているのかを知っておくことが、AIの時代の脆弱性対応の、新しい基本になっていくはずです。

【関連記事】

【解説】PHP2Shell、AIが見つけたPHPの重大脆弱性 CVE番号の流出で公開を前倒し
AIを使った調査で見つかり、Node.jsと同じ10月21日に修正版が出たPHPの重大な脆弱性の、公開までの経緯を追った記事。

PHP2Shell、修正から1日|「被害は確認されていない」をどう読むか?サービスは戻っても残る3つの宿題
PHP2Shellの修正から1日の動きを、攻撃の試み、侵害の成功、被害の公表という3つの段階に分けて丁寧に読み解いた記事。

LiteLLM 1.107.0に情報窃取マルウェア、PyPIとDockerで配布
同じ週にPyPIとDockerで改ざん版が配られた、AIゲートウェイLiteLLMのサプライチェーン攻撃の手口と対処をまとめた記事。

【編集部後記】

今回の欠陥を塞いだGoogleのコードは、10月に書かれたものではありません。同じ修正のコミットは、2月27日の日付でBrotliのリポジトリに残っています。添えられた説明は「不正なストリームを、より早く検出して報告する」という一行です。

それがCVEの付いた修正版として出たのは、8か月近くあとの10月21日でした。公開されている一行の修正のなかに、まだ名前の付いていない脆弱性の修正は、ほかにどれだけあるのでしょうか。


【用語解説】

Brotli
Googleが開発したデータ圧縮形式と、その参照実装のライブラリ。Webの通信やフォントの圧縮に広く使われ、HTTPでは「br」という名前で指定される。

範囲外書き込み
プログラムが確保したメモリ領域の外側へデータを書き込んでしまう欠陥。隣のデータを壊すため、停止や情報の漏えい、条件しだいでは任意のコードの実行につながる。

node:zlib
Node.jsに標準で組み込まれた圧縮・展開の機能。gzipやdeflateに加えてBrotliも扱え、Node.jsのfetchや多くのWebフレームワークが内部で使っている。

Content-Encoding
HTTPで、送るデータにどの圧縮をかけたかを示すヘッダー。「br」はBrotli、「gzip」はgzipを表し、対応する受け手はこの値を見て展開する。

共有ライブラリ
複数のプログラムが共通して読み込む部品。OS側で更新すれば利用するプログラム全体に修正が及ぶが、動いているプログラムには再起動するまで反映されない。

KEV
Known Exploited Vulnerabilitiesの略。米国のサイバーセキュリティ・社会基盤安全保障庁(CISA)が、実際に悪用が確認された脆弱性をまとめて公開しているカタログ。

【参考リンク】

Node.js(外部)
JavaScriptをサーバなどブラウザの外で動かすための実行環境の公式サイト。各系列の最新版とサポート期間を確認できる。

google/brotli(GitHub)(外部)
GoogleによるBrotliの公式リポジトリ。今回の修正版の1.2.1、1.1.1、1.0.10はリリースのページから入手できる。

CVE-2026-111497(Debian Security Tracker)(外部)
Debianの各版でのbrotliとnodejsの修正状況の一覧。nodejsがシステムのBrotliを使うという注記もここにある。

Brotli(PyPI)(外部)
PythonからBrotliを使うための公式のパッケージ。今回の欠陥を直した1.2.1が10月22日にここで公開された。

Codex Security(OpenAI)(外部)
コードを調べて脆弱性を見つけ、その調査と修正の確認を支援する、OpenAIのセキュリティ製品についての公式ドキュメント。

Known Exploited Vulnerabilities Catalog(CISA)(外部)
実際に悪用が確認された脆弱性を、米国のサイバーセキュリティ・社会基盤安全保障庁がまとめて公開しているカタログの公式ページ。

【参考記事】

Brotli: Out-of-bounds write in the Brotli decoder (“Node2Shell”) also affects the PyPI Brotli package · GitHub Advisory Database(外部)
PyPIのBrotliとbrotlicffiも影響を受けるとしたGitHubの勧告。影響を受ける版と修正版、CVSS 4.0の評価を載せる。

Release v1.2.1 · google/brotli(外部)
Googleが10月21日に公開したBrotli 1.2.1のリリース。同じ日に1.1.1と1.0.10も同じ修正の版として出ている。

[SECURITY] [DSA 6582-1] brotli security update(外部)
Debian 13(trixie)向けにbrotliの修正版1.1.0-2+deb13u1を告知した、10月23日付の勧告。

[SECURITY] [DLA 4855-1] brotli security update(外部)
Debian 12(bookworm)向けにbrotliの修正版1.0.9-2+deb12u1を告知した、10月23日付のLTSの勧告。

Googleで優先するソースとして追加するボタン
投稿者アバター
山本 達也 代表社員
合同会社デジタルの窓口 代表。ウェブ解析士。生成AI・サイバーセキュリティ・ 宇宙開発領域を中心に執筆。

おすすめ記事