>
>
公開日
最終更新日
Node.jsの脆弱性CVE-2026-111497は、細工されたBrotliデータを展開するとリモートコード実行などに至るおそれがある問題で、修正版は22.23.4/24.22.1/26.12.1です。
更新が必要なのは、信頼できないBrotliデータを修正前のデコーダで展開する製品です。Node.js以外も、Pythonやcurl、Envoy Proxy、Istio、Electron製アプリなどを利用条件に応じて切り分けます。fetch()が外部サーバーの応答を自動展開する経路は、入口のWAFだけでは防げません。
最初に見るのは3点です。①fetch()やPythonのHTTPクライアントで外部サーバーの応答を取得しているか、②Express 5/body-parser 2で圧縮されたリクエスト本文を展開しているか、③Electron製の業務アプリやコンテナイメージに古いNode.jsが残っていないか。①か②に当てはまるシステムから修正版へ更新します。Node.jsを使っていない場合も、PythonのBrotliやcurlがあれば①の対象です。
確認日: 2026年10月30日。

Node.jsのBrotli脆弱性(CVE-2026-111497)で何が発表されたか
Node.jsは2026年10月21日、セキュリティリリースで、同梱しているBrotli(圧縮形式のひとつ)のデコーダ(圧縮データを元に戻す処理)の脆弱性 CVE-2026-111497 を深刻度「high」として公表しました。細工したBrotliデータを展開させると、メモリが壊れ、プロセスの停止、メモリの中身の漏えい、リモートでのコード実行に至る恐れがあります。海外では「Node2Shell」という通称で報じられています。CVEの記録では、登録したGoogleがこの脆弱性を「Google Brotli 1.0.3〜1.2.0のデコーダの欠陥」としており、CVSS 4.0の評価は9.2(Critical)です。Node.jsの「high」はNode.jsから見た評価です。Brotliを展開するソフトウェアはNode.js以外にもあり、Aikidoはこの広がりを「HTTP2Shell」と呼んでいます。この記事では、修正版と影響を受ける使い方、自社や委託先でNode.jsを使っている企業の情シスと開発の責任者が今週やることを整理します。情報は2026年10月30日時点のものです。
本記事のポイント
対象はNode.js 22.x・24.x・26.xで、修正版は22.23.4・24.22.1・26.12.1です。
Node.jsを使っていなくても無関係ではありません。CVEの記録でGoogleはGoogle Brotliのデコーダの欠陥としており、Aikidoは、Brotliを展開するPythonのパッケージやcurlも影響を受け得ると指摘しています。
外部のサーバーから取得したBrotli圧縮の応答を fetch() が自動で展開する経路でも影響を受けます。Patch the Planetは、WAFやリクエストサイズの制限だけではfetch()で取得する応答を防げないと案内しています。
研究者による実証が公開され、10月27日には米CISAがこの脆弱性を悪用が確認された脆弱性の一覧(KEV)に追加しました。
発表の経緯
日付 | 出来事 |
|---|---|
2026年2月27日 | Brotliの公開リポジトリに、この欠陥の根本の修正(「Detect and report invalid stream earlier」)が入る。 |
10月21日 | Node.jsがセキュリティリリースを公開し、22.23.4・24.22.1・26.12.1を配布。このリリースではCVE-2026-111497を含む計10件を修正。Brotli本体も修正版を公開。Vercelは自社のWAFに防御ルールを展開(Vercel) |
10月22日 | Impervaが、公式のNode.js 24.22.0(Linux arm64)でコード実行を実証した検証結果を公開(Imperva)。Bun 1.4.4、PythonのBrotli 1.2.1も公開 |
10月27日 | 米CISAが、CVE-2026-111497(Google Brotliの脆弱性として登録)をKnown Exploited Vulnerabilities Catalogに追加。米連邦政府機関の対応期限は11月10日 |
報告者は、OpenAIのCodex Securityです。OpenAIの取り組み「Patch the Planet」は、専用のページで修正版と暫定策をまとめています。Impervaの実証は毎回成功したものではなく、修正版の24.22.1では同じ入力が拒否されています。Impervaの検証は研究者による実証です。CVEの記録に入っているCISAの評価(10月23日付)では悪用の状況が「active(悪用あり)」とされ、10月27日にはKEVにも追加されました。KEVは、実際の攻撃で悪用された証拠がある脆弱性をCISAが載せる一覧です。どの製品やシステムで悪用されたかは示されていません。
Node.jsと関連製品の修正版
修正版は次のとおりです(各製品の公式リリース・告知をもとに2026年10月29日時点で編集部が整理しました。根拠は表の注記欄のリンクから確認できます)。
製品 | 修正版 | 注記 |
|---|---|---|
Node.js | 22.23.4/24.22.1/26.12.1 | Node.js のセキュリティリリース。20・21・23・25はサポートが終わっていて修正は出ない |
Bun | 1.4.4 | |
Envoy Proxy | 1.40.0/1.39.3/1.38.6/1.37.8 | 1.36.12も修正を含むが、1.36はサポート外(Envoy 1.40.0) |
Istio | 1.31.2/1.30.6/1.29.9 | 1.29はサポート終了(Istio のセキュリティ告知) |
Google Brotli(本体) | 1.2.1/1.1.1/1.0.10 | 使っている系列に合わせて選ぶ(Brotli 1.2.1) |
Python の Brotli/brotlicffi | 1.2.1/1.2.1.0 | Aikidoの調査による |
20・21・23・25はサポートが終わっており、今回の修正版は出ません。20・21・23・25を使っている場合は、22・24・26のいずれかに移ります。
クラウドと配布元の状況
Vercelは、Node.js 22と24の実行環境をVercel側で更新するとしています。Node.js 20のプロジェクトは、Vercelの告知に沿って22か24に変えて再デプロイします。VercelのWAFが防ぐのはVercelを通る通信だけで、関数が外部から取得した応答は対象外です。
Amazon Linuxでは、パッケージごとに修正の提供状況が異なります。Linuxのパッケージや、クラウドが管理する実行環境を使っている場合は、提供元の更新情報で、稼働中の環境に修正が入ったかを確かめます。
▶ 関連記事: サイバーセキュリティチェックリスト31項目|企業の自己点検に使える無料Excel(2026年10月版)

▲ 稼働中のNode.jsバージョンに応じた修正版への更新および移行の判断フロー。
影響を受ける使い方と受けない使い方
影響を受けるのは、信頼できないBrotliデータを、修正前のデコーダで展開する経路がある場合です。Node.jsが入っているだけで影響を受けるわけではありません。
使い方 | 影響 | 根拠 |
|---|---|---|
組み込みの fetch() で外部のサーバーから取得する | 影響あり。Content-Encoding: br の応答は自動で展開される。WAFだけでは防げない | |
node:zlib でBrotliを展開する | 影響あり(入力が信頼できない場合) | |
Express 5.0.0〜5.3.0/body-parser 2.0.0〜2.3.0 で、express.json() などのパーサーを使っている(初期設定のままでBrotli圧縮の本文も展開する) | 影響あり | |
Express 4、body-parser 1.x、素の http.createServer | 受け取っただけでは展開しないため、この経路では直ちに影響しない | |
セルフホストのNext.js | 画像の最適化などで外部のBrotli応答を取得する構成では影響を受け得る。画像の最適化の機能はBrotliの応答を止めない | |
Python(requests、httpx、aiohttp など) | 条件を満たす構成で影響を受け得る(Brotli 1.2.0以前か brotlicffi 1.2.0.x が入っている場合)。Aikidoによると、importしていなくても自動で展開される | |
curl/libcurl | 条件を満たす構成で影響を受け得る(Brotliに対応している場合)。Aikidoによると、サーバーから受け取った圧縮の応答を展開するクライアント側も対象。Brotliを静的に組み込んでビルドしたものは作り直しが必要 | |
Envoy Proxy/Istio | Patch the Planetによると、Brotliの展開フィルタを設定している場合に影響 | |
Electronで作られたデスクトップアプリ | Patch the Planetによると、ChromiumとNode.jsの両方にBrotliを持つアプリがあり、ブラウザ部分が直っていても内蔵のNode.jsが直っているとは限らない | |
Apache(初期設定) | Aikidoによると、Brotliを展開しないため影響しない | |
Brotliで圧縮して送るだけ | この問題の対象にはならない |
Electronのアプリは、どの製品が対象かが各ベンダーから示されていません。社員のPCに入っている業務アプリは、ベンダーの更新情報を確認し、更新が出たら配布します(編集部の提案)。

▲ Brotliデコーダの展開処理の有無による影響を受ける使い方と受けない使い方の比較。
自社のどこでNode.jsが動いているかを洗い出す
次に、Node.jsがどこで動いているかを洗い出し、1つの一覧にまとめます(編集部の提案)。
確認する場所 | 見るところ |
|---|---|
自社開発のWebアプリ・API | 本番のサーバーで動いているNode.jsの版、fetch()やExpress 5で外部のBrotliデータを展開しているか |
コンテナイメージ | ベースイメージのNode.jsの版。修正版のイメージで作り直し、再配置したか |
サーバーレス・PaaS | 提供元が実行環境を更新したか、利用者が版を変える必要があるか |
委託先・開発会社が運用するシステム | 次の章の文面で確認する |
社員のPCのデスクトップアプリ | Electronのアプリのベンダーの更新情報 |
Pythonを使うシステム | Brotli/brotlicffiの版(Node.jsを使っていなくても確認する) |
版を確かめるときは、手元のシェルで node -v を実行しただけで終わりにしません。Patch the Planetは、稼働中のサーバー、ワーカー、コンテナ、定期ジョブのそれぞれで、実際に動いている版を確かめるよう求めています。パッケージを更新しても、プロセスを再起動していなければ修正は効いていません。SBOMがある場合は node・brotli・brotlicffi・curl の項目で洗い出せますが、載っていないことは影響なしの根拠にならず、載っていても使い方次第で影響しない場合があるため、OSパッケージやコンテナイメージは配布元のアドバイザリ(Amazon LinuxならALASのCVE-2026-111497のページ)で修正の有無を見て、更新の優先度を決めます。

▲ Node.js環境の洗い出しから修正版適用とプロセス再起動までの対応手順。
すぐ更新できない場合の止め方
Patch the Planetは、更新が終わるまで、信頼できないBrotliデータの展開を止めるよう案内しており、経路ごとの止め方として次の4点を挙げています。gzipやdeflateは引き続き使えます。
リクエスト本文:パーサーより前で、Content-Encoding: br のリクエストを拒否します。
HTTPクライアント:Brotliの自動展開を止め、Brotliの応答は展開する前に拒否します。止められない場合は、その取得処理を止めるか修正版を使います。
Envoy Proxy/Istio:Brotliの展開フィルタを、リクエストと応答の両方で無効にします。無効にすると圧縮されたまま後ろに流れるので、後ろのアプリ側でも止めます。
Next.js:Node.jsを更新するまで、画像の最適化の機能を止める方法があります。
注意点として、CDNやWebサーバーでBrotliの「圧縮して返す」設定を切っても、受け取る側の展開は止まりません。WAFやリクエストサイズの制限だけでは、fetch()で取得する応答などすべての経路は防げません(Patch the Planet)。これらはNode.jsを更新するまでのつなぎです。
更新したあとも、更新前に侵害されていないとは言い切れません。Patch the Planetは、ログを保全し、普段と違う動きを調べるよう求めています。
委託先・開発会社への確認と問い合わせ文面
Node.jsを使うシステムの運用を委託している場合は、次の文面で確認します。対象と期限を差し替えて使えます(編集部の作成)。
件名:Node.jsの脆弱性(CVE-2026-111497、10月21日公表)への対応状況のご確認
[委託先名]ご担当者様
10月21日にNode.jsが公表した脆弱性CVE-2026-111497について、貴社で運用いただいている[対象のシステム]の状況を、[期限]までにご回答ください。
使っているNode.jsの版と入手元(公式の配布版、Linuxのパッケージ、コンテナイメージ、クラウドの実行環境のどれか)
修正版(22.23.4/24.22.1/26.12.1以降)への更新予定日。コンテナの場合は、作り直したイメージの再配置の予定
fetch()、Express 5、body-parser 2、node:zlibなどで、外部から受け取ったBrotliデータを展開しているか
サポートが終わった版(20・21・23・25)を使っている場合は、移行の予定
更新したあと、稼働中のプロセスが修正版で動いていることを確かめた結果
「影響なし」と回答された場合は、版によるものか使い方によるものか、根拠を確認します。
関連する対応として、PHPの脆弱性やFortiGateの一斉更新の解説記事もあわせて参照できます。アプリの更新が一段落したら、外部公開の範囲、アカウントと権限、ログなどの点検に進みます。本記事の対象外ですが、点検項目は「サイバーセキュリティチェックリスト」にまとめています。
▶ 関連記事: PHPの重大な脆弱性で情シスと経営が今週やること
まとめ
Node.jsは10月21日、同梱のBrotliデコーダの脆弱性CVE-2026-111497を公表し、22.23.4・24.22.1・26.12.1で修正しました。CVEの記録でGoogleはGoogle Brotliのデコーダの欠陥としており、Aikidoによると、Node.jsを使っていなくてもBrotliを展開するPythonやcurlは影響を受け得ます。外部から取得した応答をfetch()が自動で展開する経路でも影響を受け、WAFだけでは防げません。
自社と委託先で稼働中のNode.jsの版と使い方を洗い出し、外部のBrotliデータを展開しているシステムから修正版に更新します。更新できない間は、信頼できないBrotliデータの展開を止めます。
本記事の内容に誤り等がございましたら、こちらからご連絡ください。
監修
Admina Team
情シス業務に関するお役立ち情報をマネーフォワード Adminaが提供します。
SaaS・アカウント・デバイスの管理を自動化し、IT資産の可視化とセキュリティ統制を実現。
従業員の入退社対応や棚卸し作業の工数を削減し、情報システム部門の運用負荷を大幅に軽減します。
中小企業から大企業まで、情シス・管理部門・経営層のすべてに頼れるIT管理プラットフォームです。









