Brotli脆弱性(HTTP2Shell)の確認と対応方法
目次9
2026年10月26日、JPCERT/CCは、データ圧縮のしくみ「Brotli(ブロトリ)」の脆弱性 CVE-2026-111497 について注意喚起を出しました。翌27日には、米国のCISAが「実際に悪用が確認された脆弱性」の一覧に加えています。一部では「HTTP2Shell」「Node2Shell」とも呼ばれています。
Brotliは、Node.js、.NET、Python、Linuxなど、多くの仕組みの中に部品として組み込まれています。この記事では、自社が影響を受けるかの見分け方と、対応の手順を順番に説明します。
この記事のポイント
- Brotliそのものを入れた覚えがなくても、Node.js・.NET・Python・Linuxの中に入っていることがあります。確かめるのは「Brotliの版」ではなく「それぞれの仕組みの版」です。
- Node.js → 22.23.4/24.22.1/26.12.1以降へ。.NET → 8.0.33/9.0.22/10.0.14以降へ。Python → brotli 1.2.1以降へ。
- 危ないのは、外から届いた圧縮データを「展開する」ときです。自社サイトの表示を圧縮して送っているだけなら、影響はないとされています。
- 更新したら、プログラムの再起動やコンテナの作り直しまで行いましょう。
9.2
深刻度(CVSS 4.0・緊急)
悪用確認
CISAが10月27日に認定
回避策なし
基本は修正版への更新(JPCERT/CC)
ことばの説明
Brotli=Googleが作った、データを小さくする(圧縮する)しくみです。Webサイトの表示を速くするためによく使われ、通信では「br」という名前で出てきます。
展開(てんかい)=圧縮されたデータを、もとの大きさに戻すことです。今回の弱いところは、この「展開」の部分にあります。
脆弱性(ぜいじゃくせい)=システムの"弱いところ"。悪い人に見つかると、そこから攻撃されるおそれがあります。
どんな脆弱性? なぜ危ないの?
JVN(日本の脆弱性情報サイト)によると、Brotliの展開処理に、決められた範囲の外にデータを書きこんでしまう不具合がありました。細工した圧縮データを読み込ませると、次のようなことが起きるおそれがあります。
プログラムを勝手に動かされる
攻撃者が、サーバーの上で好きな命令を実行できてしまうおそれがあります。
情報をぬすみ見られる
プログラムが使っているメモリの中身が、外にもれるおそれがあります。
サービスが止まる
プログラムが異常終了し、サイトやシステムが使えなくなるおそれがあります。
すでに攻撃が始まっています
CISAは10月27日、この脆弱性を「悪用が確認された脆弱性」に加えました。海外のセキュリティ会社は、10月26日に修正前のNode.js(24.22.0)をねらった攻撃の試みを観測したと報告しています。JPCERT/CCは「回避策はなく、修正版への更新を」と呼びかけています。
どんなときに危ない? 「展開する側」かどうかがポイント
弱いところは「展開」の処理だけにあり、「圧縮」の処理にはありません。そのため、自社のシステムが外から届いた圧縮データを展開しているかで、危なさが変わります。
受け取ったデータを展開する 要注意
利用者や取引先から送られてくる圧縮データ(br)を、サーバーが自動で展開する設定の場合です。例:Node.jsのExpress 5、Koa、ASP.NET Coreのリクエスト展開を有効にしている場合など。
ほかのサーバーからデータを取りにいく 要注意
外部のサイトやAPIから情報を取ってくる機能です。相手のサーバーが細工した圧縮データを返してくるおそれがあります。例:Webhook、URLを入力すると内容を読み込む機能など。
自社サイトの表示を圧縮して送るだけ 影響は小さい
圧縮だけで展開はしないため、今回の弱いところは使われないとされています。ただし、同じサーバーで動くほかのプログラムが展開している場合もあるので、更新はしておきましょう。
※「どの機能が、どこからデータを受け取っているか」は、外からは見分けにくいものです。わからなければ、使っている仕組みをすべて更新するのがいちばん確実です。
対象の仕組みと、移る先
Brotli本体の修正版は、1.0.10/1.1.1/1.2.1(10月21日公開)です。ただし多くの場合、Brotliは別の仕組みの中に入っているので、次の表で「使っている仕組みの版」を確かめます。
| 仕組み | 状態 | 移る先(修正版) | 補足 |
|---|---|---|---|
| Node.js 22・24・26 | 要更新 | 22.23.4/24.22.1/26.12.1以降 | 10月21日の更新で対応済み |
| Node.js 20以前 | 修正版なし | サポート中の版へバージョンアップ | サポート終了のため直りません |
| .NET 8・9・10 | 要更新 | 8.0.33/9.0.22/10.0.14以降 | 10月25日の臨時更新。.NET 8・9は11月10日にサポート終了 |
| .NET Framework | 対象外 | — | Microsoftの発表より |
| Python(brotli) | 要更新 | brotli 1.2.1/brotlicffi 1.2.1.0以降 | requests・httpx・aiohttpなどが自動で使うことがあります |
| Linux(Ubuntu・Debianなど) | 配布元しだい | 各配布元の修正済みパッケージ | Ubuntu 22.04/24.04、Debian 12/13は修正版あり |
このほか、Bun、Envoy、Istio、Go言語のBrotli部品なども修正版が出ています。Node.jsの今回の更新の全体は「Node.js脆弱性の対応方法(2026年10月)」にまとめています。
Brotliの版番号だけでは判断できません
たとえばNode.jsでは、修正前も修正後も、中に入っているBrotliの版の表示は同じ「1.2.0」のままです。確かめるときは、Node.jsや.NETそのものの版を見てください。
これまでの流れ
- GoogleがBrotliの修正版を公開。同じ日にNode.jsも修正版を公開
- CVE番号が公開。Python向けの修正版(brotli 1.2.1)も公開
- Microsoftが.NETの臨時更新を公開
- JVN・JPCERT/CCが注意喚起。海外で攻撃の試みが観測される
- CISAが「悪用が確認された脆弱性」に追加(米政府機関の対応期限は11月10日)
自社が影響を受けるか確かめて、対応する5ステップ
- 使っている仕組みを洗い出す
自社のWebサイトや業務システムが、Node.js・.NET・Pythonのどれで動いているかを確認します。わからなければ、開発会社や保守会社に聞くのがいちばん早いです。
- それぞれの版を確認する
サーバーにログインできる方なら、Node.jsは
node -v、.NETはdotnet --list-runtimes、Pythonの部品はpip show brotliで版がわかります。 - 表と比べて、修正版に更新する
サーバーのOS(Linux)のパッケージも、あわせて更新します。テスト用の環境で、ふだんの業務が動くかを先に確かめると安心です。
- 再起動・作り直しまで行う
更新しただけでは、動いているプログラムは古いままです。プログラムを再起動し、Dockerなどのコンテナや、ひとつにまとめて配布しているアプリは作り直して入れ替えます。
- ログに異常がないか確認する
プログラムが急に止まったり、再起動をくり返したりしていないかを確認します。あやしい点があれば、専門の会社に調べてもらいましょう。
すぐに更新できないときの応急処置
入口のサーバー(リバースプロキシやロードバランサー)で、外から届く「br」で圧縮されたリクエストを受け付けないようにすると、受け取る側の危険は下げられます(Red Hatの案内)。ただし、ほかのサーバーからデータを取ってくる側の危険は残ります。あくまで更新までのつなぎです。
放っておくと? 対応すると?
そのままにした場合
- すでに悪用されている弱いところが残ったまま
- 細工したデータひとつで、サービスが止まるおそれ
- 最悪の場合、サーバーを乗っ取られるおそれ
修正版に更新し、入れ替えまで行った場合
- 今回の弱いところが直る
- Node.jsや.NETの、ほかの修正もまとめて受け取れる
- 取引先にも「対応済み」と説明できる
開発会社・保守会社に聞いておきたいこと
- うちのシステムは、Node.js・.NET・Pythonのどれを、どの版で使っていますか?
- CVE-2026-111497(Brotli)の修正版には、いつ更新できますか?
- 外から届いた圧縮データを展開する機能や、外部からデータを取ってくる機能はありますか?
- 更新したあと、プログラムの再起動やコンテナの作り直しまで行いますか?
- Node.js 20以前や.NET 8・9など、サポートが終わる版を使っていませんか?
Node.js 20や.NET 8・9のように、サポートが終わった(終わる)版を使っている場合は「古いシステムの脆弱性対策」もご覧ください。
Digi Dinosにおまかせください
Digi Dinos(デジダイノス)は、ベトナムと日本に拠点をもつシステム開発会社です。創業から8年、150件以上のプロジェクトを手がけてきました。日本語ができるチームが対応します。
- 古いシステムの保守を引き継ぎ:Node.js、.NET、Python、Java、PHP、Rubyなど、主な言語に対応します。
- 新しい脆弱性への対応:今回のような更新が出たら、影響を調べて修正し、入れ替えまで行います。
- まるごとバージョンアップ:言語、フレームワーク、サーバーやOSまで新しくします。
- 資料がなくても大丈夫:作った会社がいない、仕様がだれにもわからないシステムでも、プログラムを読んで調べ、資料を作り直し、計画をまとめてご提案します。
- 永久保証:私たちが手を入れた部分に不具合が見つかったら、責任をもって直します。保守契約を続けていただいている間は、期限を区切らずに保証します。
「うちのシステムにBrotliは入っている?」というご相談だけでも(相談無料)
使っている仕組みの確認から、修正版への更新、入れ替えまで、日本語でご案内します。資料がないシステムでもご相談ください。
よくある質問
Brotliを入れた覚えはありません。関係ありますか?
関係があるかもしれません。Brotliは、Node.js・.NET・Python・Linuxなどの中に部品として入っていることが多く、使っている側が気づかないのがふつうです。まずは、自社のシステムがどの仕組みで動いているかを確認しましょう。
WordPressなどのホームページだけでも影響はありますか?
ページを圧縮して送るだけなら、今回の弱いところは使われないとされています。ただし、サーバー会社が管理しているOSの部品が対象になることもあるので、サーバー会社の案内も確認してください。
パソコンのブラウザは大丈夫ですか?
Red HatはLinux向けのFirefoxやThunderbirdも対象として挙げています。ブラウザやメールソフトは、自動更新を有効にして、最新の版を使うようにしましょう。
費用はどれくらいかかりますか?
使っている仕組みの数や古さによって変わるため、まず現状を調べてからお見積もりします。調べた結果をもとに、全体の計画と費用をわかりやすくご説明します。
参考・出典
- JPCERT/CC「BrotliのC言語実装における境界外書き込みの脆弱性(CVE-2026-111497)に関する注意喚起」
- JVN「JVNVU#97400824: BrotliのC言語実装における境界外書き込みの脆弱性(CVE-2026-111497)」
- CISA「CISA Adds Two Known Exploited Vulnerabilities to Catalog」(2026年10月27日)
- Node.js「Security Releases: Wednesday, October 21, 2026」
- Microsoft .NET「Microsoft Security Advisory CVE-2026-111497」
- GitHub Advisory Database「GHSA-9v8h-qqgm-4m35」(Python brotli)
- Ubuntu「CVE-2026-111497」
- Red Hat「CVE-2026-111497」