最終更新:10 月 26 日 20:30(日本時間)
続報が出たら追記します。
すぐ見る:よくある疑問 / Node.js を使っているかの確かめ方 / 問い合わせ文のひな形 / 技術的な詳細 / 対象の版と修正版の早見表 / 経緯
ひとことで言うと
データを小さくする部品「Brotli」に、外から壊される弱点。Node.js などを直った版に更新する(10 月 21 日公表)
- Web のデータを圧縮する部品「Brotli」に弱点(脆弱性)が見つかった。細工したデータを受け取ると、プログラムが止まったり、外から操られたりするおそれがある
- この部品は、サーバーで JavaScript を動かすソフト「Node.js」のほか、Python・Linux・Microsoft の .NET・Windows 版の PHP などにも入っていて、それぞれ直った版が出ている
- Node.js の直った版は 22.23.4・24.22.1・26.12.1。サポートが終わった 20 系列・18 系列などには、直った版が出ない
どうすればいい?
よくある疑問と答え
-
自社のサイトは対象?
Node.js などで動くサイトやシステムが対象です。WordPress のホームページでは、表示のためにサーバーで Node.js が動いていることは少なめです(この記事での整理)。
→ 使っているかの手がかり -
どの版に更新すればいい?
Node.js は 22.23.4・24.22.1・26.12.1 です。Python・Linux・.NET などは、それぞれ別の版が出ています。
→ 版の早見表 -
版の確かめ方は?
Node.js は「node -v」、Python の Brotli は「pip show brotli」、.NET は「dotnet --list-runtimes」で分かります。
→ 確かめ方の手順 -
どれくらい危ない?
CVE の記録の深刻度は 9.2(CVSS 4.0・CRITICAL)、Node.js の評価は high(高)です。10 月 23 日付の評価では、悪用は確認されていません。
→ 技術的な詳細 - 「HTTP2Shell」「Node2Shell」とは? この脆弱性の呼び名です。はじめは Node.js の発表にあわせて「Node2Shell」と呼ばれ、原因が Brotli にあり複数の製品が影響を受けることから「HTTP2Shell」とも呼ばれています(JPCERT/CC の説明)。
-
制作会社にサイトを任せている会社は?
使っているか、版、更新の予定を聞きます。そのまま送れる問い合わせ文を下に載せています。
→ 問い合わせ文のひな形
詳しくは:対象の版と修正版の早見表 / 管理者がやること / Node.js を使っているかの確かめ方 / 問い合わせ文のひな形
この記事では、Node.js の脆弱性(Brotli のデコーダの問題、CVE-2026-111497)について、Node.js のセキュリティリリースとリリースノート、Google の Brotli のリリース、CVE の記録、Python のパッケージの配布の仕組みを担う PyPA(Python Packaging Authority)の脆弱性データベース、Debian と Ubuntu のセキュリティの情報、Microsoft の .NET のセキュリティ更新の案内、JPCERT/CC の注意喚起と JVN の情報だけをもとに、影響を受けるバージョンと修正版、立場ごとにやることを整理します。あわせて、自社のサイトや業務システムが Node.js を使っているかの確かめ方と、制作会社・保守会社に送る問い合わせ文のひな形を、この記事での整理として載せます。攻撃の手順の細かい情報は載せていません。
何が見つかったか
まず、出てくるソフトの説明です。Node.js は、JavaScript で作ったプログラムをサーバーやパソコンで動かすためのソフトです。Web のサービスや業務システム、サイトを作るための道具などに使われています。Brotli は Google が公開している圧縮の方式とその部品(ライブラリ)で、Web のページを小さくして送るときなどに使われます。Node.js は Brotli を中に組み込んでいます(この記事での整理)。
10 月 21 日、Node.js は、この Brotli の「圧縮を元に戻す処理」に弱点があると公表しました。形のおかしい圧縮データを受け取ると、プログラムのメモリを壊されます。その結果、プログラムが止まったり、メモリの中身が漏れたり、外から別のプログラムを動かされたりするおそれがあります。
弱点は Brotli という部品そのものにあるため、Node.js だけでなく、同じ部品を使う Python のパッケージや Linux のパッケージ、Microsoft の .NET、Windows 版の PHP などにも広がっています。どれも、それぞれの提供元から直った版が出ています。
自社のサイト・業務システムが Node.js を使っているかの確認方法
ここからは、Node.js を自分では触らない会社向けにまとめたものです(この記事での整理)。Node.js はサイトやシステムの裏側で動くため、使っている側からは見えません。まず、サイトやシステムの種類から見当をつけます。
| サイト・システムの種類 | Node.js を使っているか |
|---|---|
| WordPress のホームページ(レンタルサーバー) | WordPress は PHP で動くため、表示のためにサーバーで Node.js が動いていることは少ない。ただ、制作会社が作業用のパソコンで、デザインのファイルを作る道具として使っていることはある |
| HTML だけのサイト | 公開しているサーバーでは動いていない。サイトを作るときに Node.js の道具を使っていることはある |
| Next.js・Nuxt などで作ったサイト | サーバーで Node.js が動いていることが多い。公開の場所(クラウドのサービスなど)とあわせて確かめる |
| 予約・会員・通販などの独自のシステム | 使っている言語は作った会社によって違う。Node.js で作られていることもあるので、作った会社に聞く |
| 社内の業務システム・チャットボット・連携の仕組み | ほかのサービスとデータをやりとりする小さなプログラムは、Node.js で作られていることがある。作った会社か、社内の担当者に聞く |
| AWS Lambda などクラウドの実行環境 | 設定の画面のランタイム(実行環境)の欄に、Node.js の系列が出る。細かい版の更新の扱いは、そのクラウドの案内を確かめる |
サーバーやパソコンで版を確かめる
サーバーやパソコンを自分で操作できる場合の確かめ方です(この記事での整理)。分からなければ、無理に操作せず、作った会社に聞いてください。
- Windows はコマンドプロンプトか PowerShell、Mac はターミナル、Linux のサーバーは SSH で入った画面で「node -v」と打つ。「v24.22.1」のように版が出れば Node.js が入っている。「見つからない」といった表示なら入っていない
- サイトやシステムのファイルの中に「package.json」があれば、Node.js で動かすか、Node.js で作るものと考えられる。「.nvmrc」や package.json の「engines」の欄に、想定している Node.js の版が書かれていることがある
- Docker で動かしている場合は、使っているイメージの中の Node.js の版を確かめる。イメージの名前に「node:22」のように系列が書かれていることが多い
- Python のアプリなら「pip show brotli」「pip show brotlicffi」、Debian・Ubuntu のサーバーなら「dpkg -l | grep brotli」で、Brotli のパッケージの版を確かめる
制作会社・保守会社への問い合わせ文のひな形
サイトやシステムを任せている会社に、そのまま送れる文面にしました(この記事での整理)。[ ]の中は自社に合わせて埋めます。使っているかどうかだけでなく、版と更新の予定日、費用の扱いまで一度に聞くのがこつです。
ひな形(この記事での整理)
件名:Node.js の脆弱性(Brotli・CVE-2026-111497)への対応状況の確認のお願い
[会社名] [担当者名]様
いつもお世話になっております。[自社名]の[名前]です。2026 年 10 月 21 日に Node.js から、Brotli の展開の処理の脆弱性(CVE-2026-111497)を直したセキュリティリリース(22.23.4・24.22.1・26.12.1)が公表されました。お願いしている[サイト・システムの名前]について、次の点を教えていただけますでしょうか。
- Node.js を使っているかどうか。使っている場合、公開しているサーバーで動かしているのか、作るときだけ使っているのか
- サーバーで動かしている場合、今の Node.js の版と、修正版への更新の予定日
- サポートが終わった版(20 系列・18 系列など)を使っている場合、サポート中の版への移行の予定と、おおよその費用
- Python の Brotli・brotlicffi のパッケージ、サーバーの OS の brotli のパッケージ、Microsoft の .NET を使っている場合、その更新の予定
- 今回の更新の作業が、保守の契約の範囲に入るか、別の費用になるか
対応が終わりましたら、更新後の版をお知らせいただけますと助かります。お忙しいところ恐れ入りますが、よろしくお願いいたします。
返事が来たあとの読み方です(この記事での整理)。
- 「使っていない」 返事の日付と内容を控えておく。次に同じような脆弱性が出たときに、確かめる手間が省ける。
- 「作るときだけ使っている」 公開しているサーバーでは Node.js が動いていないので、外から届いたデータを公開中のサイトで展開するという、今回の条件には当たりにくい。作業用のパソコンの Node.js も、次の作業の前に更新してもらうよう頼んでおく。
- 「サーバーで動かしている」 更新の予定日を決めてもらい、終わったら更新後の版を知らせてもらう。サポートが終わった版なら、移行の見積もりも頼む。
- 「クラウドのサービスに任せている」 サーバーを管理しているサービスの会社が更新する場合がある。どのサービスで、誰が更新するのかを確かめておく。
技術的な詳細(エンジニア・サーバーの担当者向け)
ここからは、Node.js・Python・.NET などでサービスを運用している担当者・エンジニア向けです。脆弱性の中身を、発表の言葉に沿って並べます。
10 月 21 日の発表で分かっていることです。Node.js によると、Node.js に組み込まれた Brotli のデコーダ(圧縮を元に戻す処理)は、形のおかしい圧縮データを受け取ると、内部の入れ物の終わりを越えて書き込んでしまいます。本来はエラーとして止めるべき不正なデータを、「入力がまだ足りない」と扱ってしまうことが原因です。アプリが node:zlib で展開する Brotli のデータを攻撃者が用意できる場合、プロセスのメモリが壊され、停止や、メモリの中身の流出、外部からのプログラムの実行(リモートコード実行)につながるおそれがあります。
| 項目 | 内容 |
|---|---|
| 番号 | CVE-2026-111497(CVE の番号を登録したのは Google) |
| 場所 | Google の Brotli のデコーダ(c/dec/decode.c)。1.0.3 から 1.2.0 までの版 |
| 起きうること | 細工した Brotli の圧縮データで、ログインなどの認証なしに、離れた場所からメモリを壊される。メモリの中身の流出、サービスの停止、外部からのプログラムの実行のおそれ |
| 条件 | 攻撃者が用意した Brotli のデータを、アプリが展開すること(Node.js では node:zlib での展開) |
| 深刻度 | Node.js の評価は high(高)。CVE の記録の CVSS 4.0 の値は 9.2(CRITICAL) |
| 悪用 | CVE の記録に、米国のサイバーセキュリティ・社会基盤安全保障庁(CISA)が 10 月 23 日付で加えた評価では、悪用は確認されていない(none) |
深刻度の表し方が 2 通りある理由です。Node.js は、Node.js の中での影響として high と評価しています。CVE の記録は Brotli そのものについての評価で、CVSS 4.0 の値(0 から 10 で、大きいほど深刻)は 9.2 です。どちらも、早めに更新したほうがよい水準です(この記事での整理)。CISA は、CVE の記録に悪用の有無などの評価を加えている米国の政府機関です。
同じセキュリティリリースでは、Brotli の件のほかに 9 つの脆弱性も直っています。TLS の証明書の確認や DNS の名前解決の問題などで、そのうち 3 つが high です。Node.js を更新すれば、これらもあわせて直ります。
Node.js 以外への広がりもあります。PyPA の脆弱性データベースは、この脆弱性は Node.js だけのものではなく Google の C のライブラリにあるとして、Python で Brotli を扱うパッケージ(Brotli・brotlicffi)を対象に挙げています。PyPA の記録では「Node2Shell」という呼び名も使われています。
呼び名と、日本の公的な注意喚起についてです。10 月 26 日、日本でサイバー攻撃の被害の報告を受け付け、対策の情報を出している JPCERT/CC(JPCERT コーディネーションセンター)が、この脆弱性の注意喚起を出しました。JPCERT/CC によると、この脆弱性は Node.js の発表にあわせて「Node2Shell」と呼ばれていましたが、原因は Brotli の C 言語の実装にあり、Brotli は HTTP の通信で使われるデータの圧縮のライブラリで、複数の製品が影響を受けることから、「HTTP2Shell」とも呼ばれています。影響を受ける製品には、Node.js、Bun、Python 向けの Brotli のパッケージなどが含まれるとしています。対象の製品を使っている場合は、開発元の情報をもとに、速やかに対策を当て、すでに侵害を受けていないかを調べるよう呼びかけています。同じ日に、脆弱性の対策の情報を公開している JVN(Japan Vulnerability Notes)も、この脆弱性の情報(JVNVU#97400824)を公開しました。
Microsoft の .NET にも広がっています。Microsoft は 10 月 25 日(米国の日付)、毎月の定例の更新とは別に、.NET 8・9・10 のセキュリティ更新を出しました。Microsoft によると、.NET が使う Brotli の展開の処理に問題があり、認証なしにプロセスのメモリを読まれたり壊されたりして、情報の流出、サービスの停止、権限の昇格につながるおそれがあります。影響を受けうるのは、ASP.NET Core のリクエストの展開、HttpClient の応答の自動の展開、System.IO.Compression の Brotli の機能で Brotli のデータを扱うアプリです。リクエストの展開と応答の自動の展開は、初期の設定では有効になっていません。.NET Framework は影響を受けません。Microsoft のセキュリティ更新プログラム ガイドでの深刻度は「緊急」、CVSS 3.1 の基本値は 8.1 で、悪用は確認されていないとしています。同じガイドでは、PowerShell 7.4〜7.6 と Visual Studio も対象に挙がっています。
対象の版と修正版の早見表
Node.js のセキュリティリリースとリリースノート、リリースの一覧のページのとおりです。影響を受けるのは、サポート中の 3 つの系列(26・24・22)です。
| 系列 | 状態 | 修正版 |
|---|---|---|
| 26 系列 | Current(最新の系列)。修正版より前の版が影響を受ける | 26.12.1 |
| 24 系列 | LTS(長期サポート)。修正版より前の版が影響を受ける | 24.22.1 |
| 22 系列 | LTS(長期サポート)。修正版より前の版が影響を受ける | 22.23.4 |
| 25・20・18 系列など | サポート終了(EOL)。Node.js は、サポートが終わった版はセキュリティリリースのたびに影響を受けるとしている | なし(サポート中の系列へ移行) |
Node.js での直し方についてです。リリースノートでは、Node.js に組み込んだ Brotli に、Google の修正を取り込んだ(cherry-pick)と書かれています。Node.js で動かしている場合は、Brotli の版ではなく、Node.js の版が修正版以上かどうかで判断します(この記事での整理)。Node.js は、本番で使うのは長期サポート(Active LTS・Maintenance LTS)の版だけにするよう勧めています。
Node.js 以外の対象です。CVE の記録、PyPA、Debian、Ubuntu、Microsoft の情報をまとめました。
| 対象 | 影響を受ける版 | 修正版 |
|---|---|---|
| Brotli(ライブラリ) | 1.0.3 〜 1.0.9 / 1.1.0 / 1.2.0 | 1.0.10 / 1.1.1 / 1.2.1 |
| Python の Brotli | 1.2.1 より前 | 1.2.1 |
| Python の brotlicffi | 1.2.1.0 より前 | 1.2.1.0 |
| Debian 13(trixie) | brotli 1.1.0-2 | 1.1.0-2+deb13u1(DSA-6582-1) |
| Debian 12(bookworm) | brotli 1.0.9-2 | 1.0.9-2+deb12u1(DLA-4855-1) |
| Ubuntu | brotli・nodejs とも、10 月 23 日の時点で評価中(Needs evaluation)。優先度は Medium | Ubuntu の案内を待つ |
| PHP(Windows 版) | Windows 版の PHP 8.5 / 8.4 / 8.3 / 8.2。cURL 拡張で HTTP の応答の自動の展開を有効にしているときに、脆弱な展開の処理に届く(cURL の初期設定では無効だが、アプリやライブラリが有効にすることがある) | 8.5.12-1 / 8.4.27-1 / 8.3.36-1 / 8.2.35-1(Brotli 1.2.1 を同梱。PHP 本体のバージョンは同じ) |
| .NET | Windows・Linux・Mac の .NET 8 / 9 / 10(.NET 11 のリリース候補版も)。.NET Framework は対象外 | 8.0.33 / 9.0.22 / 10.0.14(.NET 11 は RC3) |
| PowerShell | 7.4 / 7.5 / 7.6 | 7.4.22 / 7.5.13 / 7.6.9 |
| Visual Studio | 2019(16.11)/ 2022(17.14)/ 2026(18.11) | 16.11.61 / 17.14.43 / 18.11.2 |
Python のパッケージについての補足です。PyPA によると、Python の Brotli のパッケージは Google の Brotli と同じデコーダの C のコードを使っています。Brotli のパッケージを入れていると、urllib3・requests、httpx、aiohttp といったよく使われる通信のライブラリが、Brotli で圧縮された応答を自動で展開するため、外から届くデータで脆弱性に届きうると説明しています。自分で Brotli を使うつもりがなくても、パッケージが入っているかを確かめてください(この記事での整理)。
Debian についての補足です。Debian のセキュリティ追跡のページには、Debian の nodejs のパッケージは OS の brotli のライブラリを使うと注記されています。Debian で入れた Node.js では、Node.js とあわせて OS の brotli のパッケージを更新します(この記事での整理)。
.NET についての補足です。Microsoft の案内では、サーバーに入れた .NET で動かすアプリは、更新した版の .NET を入れてアプリを再起動します。アプリに .NET を同梱している場合(self-contained)は、サーバーの .NET を新しくしてもアプリの中の .NET は変わらないため、更新した .NET でアプリを作り直して入れ替えます。コンテナは、更新した .NET のイメージで作り直します。PowerShell と Visual Studio の修正版は、Microsoft のセキュリティ更新プログラム ガイドに載っている版です。
管理者がやること
発表の対策(修正版への更新)を、使い方ごとに作業の順に並べたものです(順番と、発表に無い補足は この記事での整理)。
Node.js を動かしているサーバー
- 「node -v」で版を確かめ、上の早見表で影響を受けるかを見る
- 同じ系列の修正版(22.23.4・24.22.1・26.12.1)へ更新する。外から届いたデータを展開している、利用者がファイルを送れるなど、外からのデータを受け取るサーバーから先に更新する(この記事での整理)
- Docker などのコンテナで動かしている場合は、もとにしているイメージを修正版の Node.js のものに替えて作り直す(この記事での整理)
- 更新のあとに、ログインや主な画面、外部との連携が普段どおり動くかを確かめる(この記事での整理)
- 25・20・18 系列などサポートが終わった版なら、サポート中の系列への移行を計画する。それまでの間に使う部品の対応も、作った会社と相談する(この記事での整理)
Python のアプリ
- 「pip show brotli」「pip show brotlicffi」で、パッケージが入っているかと版を確かめる(この記事での整理)
- 入っていれば、Brotli は 1.2.1、brotlicffi は 1.2.1.0 へ更新する。requirements.txt などで版を固定している場合は、その指定も書き換える(この記事での整理)
.NET のアプリ
- 「dotnet --list-runtimes」で、サーバーに入っている .NET の版を確かめる
- .NET 8 は 8.0.33、.NET 9 は 9.0.22、.NET 10 は 10.0.14 を入れ、アプリを再起動する
- アプリに .NET を同梱している場合とコンテナは、更新した .NET で作り直して入れ替える。この場合はサーバーの .NET の版だけでは判断できない
- 開発に使うパソコンの Visual Studio や PowerShell も、修正版へ更新する(この記事での整理)
Linux のサーバー
- Debian 13 は 1.1.0-2+deb13u1、Debian 12 は 1.0.9-2+deb12u1 へ、OS の brotli のパッケージを更新する。更新のあとは、brotli を使っているサービスを再起動する(再起動はこの記事での整理)
- Ubuntu は評価中のため、Ubuntu の CVE のページとセキュリティのお知らせを見て、修正が出たら更新する
- ほかの Linux や、Brotli を中に組み込んだほかのソフトは、それぞれの提供元の案内を確かめる。CVE の記録は、1.0.3 から 1.2.0 までの Brotli のライブラリやプログラムを、1.0.10・1.1.1・1.2.1 へ更新するよう求めている
次に読む:Linux カーネルで見つかった未修正の脆弱性(ksmbd ほか) / Ruby on Rails(Active Storage)の脆弱性と更新の手順
経緯
日付は、それぞれの発表に書かれている日付です(米国などの時間で書かれているため、日本時間では翌日になるものがあります)。
| 日付 | できごと |
|---|---|
| 2026 年 10 月 26 日 | PHP 公式が、Brotli 1.2.1 を同梱した Windows 版の PHP(8.5.12-1・8.4.27-1・8.3.36-1・8.2.35-1)を出した。Windows 版では、cURL 拡張で HTTP の応答の自動の展開を有効にしていると、脆弱な展開の処理に届くとしている |
| 10 月 26 日 | JPCERT/CC が注意喚起(JPCERT-AT-2026-0034)を出し、「Node2Shell」のほか「HTTP2Shell」とも呼ばれていると説明した。JVN が JVNVU#97400824 を公開した |
| 10 月 25 日 | Microsoft が、定例外の .NET のセキュリティ更新(8.0.33・9.0.22・10.0.14・.NET 11 RC3)を出した。セキュリティ更新プログラム ガイドに、PowerShell と Visual Studio を含む対象の製品が載った |
| 10 月 25 日 | Debian のセキュリティ追跡のページで、Debian 12・13 の brotli の修正済みのパッケージ(DLA-4855-1・DSA-6582-1)を確認した(この記事の確認日) |
| 10 月 23 日 | PyPA が、Python の Brotli と brotlicffi のパッケージについての記録(PYSEC-2026-4322・PYSEC-2026-4323)を公開した。Ubuntu が CVE-2026-111497 のページを公開した(評価中)。CVE の記録に CISA の評価が加わった |
| 10 月 22 日 | CVE-2026-111497 の記録が公開された。Python の Brotli のパッケージ 1.2.1 が公開された |
| 10 月 21 日 | Node.js がセキュリティリリース(22.23.4・24.22.1・26.12.1)を出し、Brotli の脆弱性を含む内容を公表した。Google が Brotli の 1.2.1・1.1.1・1.0.10 を公開した |
自社で見直すこと
今回の脆弱性は、Node.js・Python・Linux・.NET と、名前の違う複数のソフトに同じ部品(Brotli)が入っていたことで広がりました。サイトやシステムの土台の部品は、使っている側からは見えないぶん、更新が後回しになりやすいところです(この記事での整理)。
- 土台のソフトと部品を一覧にする Node.js・Python・PHP などの動かすためのソフトと、その版、更新する人を、作った会社と一緒に書き出しておく。今回のような部品の名前が出たときに、すぐ当たりがつけられる。
- サポートが終わる時期を控えておく Node.js は系列ごとにサポートが終わる。長期サポート(LTS)の系列は、重大な不具合の修正が合わせて 30 か月ほど続くとされている。使っている系列の予定を確かめ、移行の時期と費用を早めに相談する。
- 保守の契約に更新が入っているかを確かめる ソフトや部品の更新が保守の範囲に入っているか、入っていないなら誰に頼むのかを決めておく。
システムの土台のソフトの脆弱性のほかの例は 「Apache Tomcat の脆弱性」、ほかの最近の出来事は 「最近のサイバー攻撃と対策」、続けて備える体制の考え方は 「ホームページの保守」 にまとめています。
作り方は 3 つ|完成済み・自作・オーダーメイド
作り方はどれでも選べます。優劣ではなく、向いているケースが違います。
- オーダーメイドで作る(制作会社に依頼) 要件を渡せば設計から任せられます。自社に合わせて一から作りたい場合や、撮影・原稿まで任せたい場合に向きます。SITE PICK でもオーダーメイド制作の相談を受け付けています。
- 自分で作る(自作) 費用は抑えられます。そのかわり、Node.js のような土台のソフトや部品の脆弱性の情報を追い、更新を公開後もずっと自分で続けることになります。
- 完成済みのサイトから選ぶ(完成済み) 構成・更新の仕組み・入口が組まれた状態を実物で確かめ、社名・写真・文章を差し替えて公開します。完成形を先に確認してから決めたい場合に向きます。この記事の集計は、その実際のサイトのデータです。