All
SaaS管理
デバイス管理
セキュリティ対策
脅威・インシデント
IT基盤・インフラ
情シス業務・組織形成
AI / テクノロジー
プロダクト
イベントレポート
その他
ガバナンス

新着記事

もっと見る

>

>

Node.jsの脆弱性 Node2Shell(CVE-2026-111497):修正版と影響する使い方、情シスが今週やること

Node.jsの脆弱性 Node2Shell(CVE-2026-111497):修正版と影響する使い方、情シスが今週やること

Node.jsの脆弱性 Node2Shell(CVE-2026-111497):修正版と影響する使い方、情シスが今週やること

Node.jsの脆弱性 Node2Shell(CVE-2026-111497):修正版と影響する使い方、情シスが今週やること

公開日

Node.jsが2026年10月21日に公表したBrotliデコーダの脆弱性CVE-2026-111497(Node2Shell)の修正版(22.23.4/24.22.1/26.12.1)、影響するfetch()・Express 5・Next.js・Pythonなどの使い方、自社での洗い出し、更新できない場合の止め方、委託先への確認文面を整理します。

Node.jsの脆弱性Node2Shell(CVE-2026-111497)の概要や影響範囲、修正バージョンと情シスが今週実施すべき対応策をまとめたインフォグラフィック。

Node2Shell(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月24日時点のものです。

本記事のポイント

  • 対象はNode.js 22.x・24.x・26.xで、修正版は22.23.4・24.22.1・26.12.1です。Node.js公式は回避策を示していません。

  • Node.jsを使っていなくても無関係ではありません。脆弱性の本体はGoogle Brotliのデコーダで、Brotliを展開するPythonやcurlなども対象です。

  • 外部のサーバーから取得したBrotli圧縮の応答を fetch() が自動で展開する経路でも影響を受けます。この経路はWAFでは防げません。

  • 2026年10月22日時点で実際の攻撃での悪用は報告されていません。研究者による実証は公開されています。

発表の経緯

日付

出来事

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も公開

報告者は、OpenAIのCodex Securityです。OpenAIの取り組み「Patch the Planet」は、専用のページで修正版と暫定策をまとめています。Impervaの実証は毎回成功したものではなく、修正版の24.22.1では同じ入力が拒否されています。これは研究者による実証で、実際の攻撃での悪用を示すものではありません。CVEの記録に入っているCISAの評価(2026年10月23日時点)でも、悪用は「なし(none)」となっています。

Node.jsと関連製品の修正版

修正版は次のとおりです(Node.js、Patch the Planet、各プロジェクトの公開情報をもとに編集部で整理)。

製品

修正版

注記

Node.js

22.23.4/24.22.1/26.12.1

Node.js のセキュリティリリース。20・21・23・25はサポートが終わっていて修正は出ない

Bun

1.4.4

Brotli 1.2.1を同梱(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の調査による

Node.jsは、サポートが終わった版はセキュリティリリースのたびに常に影響を受けるとしています。20・21・23・25を使っている場合は、22・24・26のいずれかに移ります。26は10月28日にLTS(長期サポート版)になる予定です。

利用しているNode.jsの系列に応じた更新および移行の判断手順。

▲ 利用しているNode.jsの系列に応じた更新および移行の判断手順。

クラウドと配布元の状況

Vercelは、Node.js 22と24の実行環境をVercel側で更新するとしています。Node.js 20のプロジェクトは、22か24に変えて再デプロイする必要があります。VercelのWAFが防ぐのはVercelを通る通信だけで、関数が外部から取得した応答は対象外です。

Amazon Linuxでは、2026年10月23日時点で、Amazon Linux 2023のbrotliとnodejs24が「修正保留中」、nodejsとnodejs20が「修正予定なし」、nodejs22が「影響なし」と表示されています。Linuxのパッケージや、クラウドが管理する実行環境を使っている場合は、提供元の更新情報で、稼働中の環境に修正が入ったかを確かめます。

影響を受ける使い方と受けない使い方

影響を受けるのは、信頼できないBrotliデータを、修正前のデコーダで展開する経路がある場合です。Node.jsが入っているだけで影響を受けるわけではありません。

使い方

影響

根拠

組み込みの fetch() で外部のサーバーから取得する

影響あり。Content-Encoding: br の応答は自動で展開される。WAFでは防げない

Imperva

node:zlib でBrotliを展開する

影響あり(入力が信頼できない場合)

Node.js

Express 5.0.0〜5.3.0/body-parser 2.0.0〜2.3.0 で、圧縮されたリクエスト本文を展開する

影響あり

Imperva

Express 4、body-parser 1.x、素の http.createServer

受け取っただけでは展開しないため、この経路では直ちに影響しない

Imperva

セルフホストのNext.js

影響あり。画像の最適化の機能はBrotliの応答を止めない

Vercel

Python(requests、httpx、aiohttp など)

影響あり(Brotli 1.2.0以前か brotlicffi 1.2.0.x が入っている場合)。importしていなくても自動で展開される

Aikido

curl/libcurl

影響あり(Brotliに対応している場合)。サーバーから受け取った圧縮の応答を展開するクライアント側も対象。Brotliを静的に組み込んでビルドしたものは作り直しが必要

Aikido

Envoy Proxy/Istio

Brotliの展開フィルタを設定している場合に影響

Patch the Planet

Electronで作られたデスクトップアプリ

ChromiumとNode.jsの両方にBrotliを持つことがあり、ブラウザ部分が直っていても内蔵のNode.jsが直っているとは限らない

Patch the Planet

Apache/Nginx(初期設定)

Brotliを展開しないため影響しない

Aikido

Brotliで圧縮して送るだけ

この問題の対象にはならない

Patch the Planet

Node.jsにおいて脆弱なBrotliデコーダが呼び出される主な経路と影響。

▲ Node.jsにおいて脆弱なBrotliデコーダが呼び出される主な経路と影響。

Electronのアプリは、どの製品が対象かが各ベンダーから示されていません。社員のPCに入っている業務アプリは、ベンダーの更新情報を確認し、更新が出たら配布します(編集部の提案)。

自社のどこで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は、稼働中のサーバー、ワーカー、コンテナ、定期ジョブのそれぞれで、実際に動いている版を確かめるよう求めています。パッケージを更新しても、プロセスを再起動していなければ修正は効いていません。

脆弱性対応における棚卸しから稼働確認までの推進手順。

▲ 脆弱性対応における棚卸しから稼働確認までの推進手順。

すぐ更新できない場合の止め方

Node.js公式は回避策を示していません。Patch the Planetは、更新が終わるまで、信頼できないBrotliデータの展開を止めるよう案内しています。gzipやdeflateは引き続き使えます。

  • リクエスト本文:パーサーより前で、Content-Encoding: br のリクエストを拒否します(HTTP 415)。

  • 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、2026年10月21日公表)への対応状況のご確認

[委託先名]ご担当者様

2026年10月21日にNode.jsが公表した脆弱性CVE-2026-111497について、貴社で運用いただいている[対象のシステム]の状況を、[期限]までにご回答ください。

  1. 使っているNode.jsの版と入手元(公式の配布版、Linuxのパッケージ、コンテナイメージ、クラウドの実行環境のどれか)

  2. 修正版(22.23.4/24.22.1/26.12.1以降)への更新予定日。コンテナの場合は、作り直したイメージの再配置の予定

  3. fetch()、Express 5、body-parser 2、node:zlibなどで、外部から受け取ったBrotliデータを展開しているか

  4. サポートが終わった版(20・21・23・25)を使っている場合は、移行の予定

  5. 更新したあと、稼働中のプロセスが修正版で動いていることを確かめた結果

「影響なし」と回答された場合は、版によるものか使い方によるものか、根拠を確認します。

同じ週には、PHPの脆弱性やFortiGateの一斉更新への対応も重なっています。アプリの更新が一段落したら、外部公開の範囲、アカウントと権限、ログなどの点検に進みます。9機関の注意喚起をもとにした31項目を「サイバーセキュリティチェックリスト」にまとめています。

まとめ

Node.jsは2026年10月21日、同梱のBrotliデコーダの脆弱性CVE-2026-111497(Node2Shell)を公表し、22.23.4・24.22.1・26.12.1で修正しました。本体はGoogle Brotliのデコーダの欠陥で、Node.jsを使っていなくてもBrotliを展開するPythonやcurlなどは対象です。外部から取得した応答をfetch()が自動で展開する経路でも影響を受け、この経路はWAFでは防げません。

自社と委託先で稼働中のNode.jsの版と使い方を洗い出し、外部のBrotliデータを展開しているシステムから修正版に更新します。更新できない間は、信頼できないBrotliデータの展開を止めます。

本記事の内容に誤り等がございましたら、こちらからご連絡ください。

監修

Admina Team

情シス業務に関するお役立ち情報をマネーフォワード Adminaが提供します。

SaaS・アカウント・デバイスの管理を自動化し、IT資産の可視化とセキュリティ統制を実現。

従業員の入退社対応や棚卸し作業の工数を削減し、情報システム部門の運用負荷を大幅に軽減します。

中小企業から大企業まで、情シス・管理部門・経営層のすべてに頼れるIT管理プラットフォームです。