OpenAIがGoogle製の圧縮技術Brotliに脆弱性を見つけて公表

OpenAIがBrotliの脆弱性を見つけて報告

OpenAIのCodex Securityの2名がGoogleの圧縮技術Brotliに脆弱性を見つけ、Node.jsの開発チームに報告しました。Brotliは、Googleが公開しているデータ圧縮のライブラリ(ソフトに組み込む部品)です。Webサイトを表示するときなどのHTTP通信で、やり取りするデータを小さくするのに使われています。

また、Brotliを組み込んだソフトは多く、影響を受ける製品にはNode.js(サーバー上でJavaScriptを動作させる仕組み)やBunなどが含まれます。 OpenAIは脆弱性の情報を掲載する自社のサイト「Patch the Planet」に、修正版の一覧と対処の方法を公開しました。

細工した圧縮データを展開するとコードを実行される恐れ

欠陥はBrotliの圧縮データを元に戻す「デコーダ」にありました。 Brotliを組み込んだアプリが細工された圧縮データを展開すると、メモリが壊れます。その結果としてアプリの異常終了やメモリ上の情報の漏えいが発生し、外部からコードを実行される可能性もあります。

Node.jsによると、デコーダは本来エラーとして処理を終了すべき不正なデータを「入力がまだ足りない」と判断していたため、届いた入力を8バイトしかない内部の入れ物へ書き加え続け、入れ物の外まで書き込んでいました。

Node.jsはこの脆弱性の重要度を「high」としています。CVE(脆弱性ごとに付く世界共通の識別番号)は、CVE-2026-111497です。

JPCERT/CCの注意喚起のページの上部。BrotliのC言語実装における境界外書き込みの脆弱性(CVE-2026-111497)に関する注意喚起という表題と、2026-10-26の日付、概要の書き出しが表示されている
JPCERT/CCが10月26日に公開した注意喚起です。対象のバージョンと対策、名前の由来がこのページに書かれています。JPCERT/CC 注意喚起 JPCERT-AT-2026-0034
"本脆弱性の影響を受けるアプリケーションなどが、攻撃者が細工したBrotli形式の圧縮データを展開すると、メモリの破損によりアプリケーションの異常終了、メモリ上の情報の漏えい、任意のコード実行などにつながる可能性があります。" — 「I. 概要」より
公式情報を見る →

報告と修正に携わったのは誰か

この脆弱性を報告したのは、OpenAIのCodex SecurityのKhai Tran氏とSylvie Mayer氏です。 Node.jsは10月21日に公開したセキュリティ情報で、2名に報告への感謝を述べています。修正はNode.js側のmcollina氏とaduh95氏が担当したとのこと。

Node.jsの公式ブログのページの上部。Wednesday, October 21, 2026 Security Releasesという表題と、The Node.js Projectの名前、更新日のOct 21, 2026が表示されている
Node.jsが10月21日に公開したセキュリティ情報です。Brotliの脆弱性は、同日に修正された複数の脆弱性の1つとして掲載されています。Node.js 公式ブログ(2026年10月21日)

Codex SecurityとPatch the Planetは、脆弱性を見つけてから直すまでを進めるOpenAIの取り組みの一部です。今回の脆弱性についてのPatch the Planetのページは、10月23日に更新されました。

"An invalid block switch was reported as a temporary need for more input instead of a permanent format error, so the streaming decoder kept appending input bytes to an eight-byte internal buffer." / "Thank you, to OpenAI Codex Security - Khai Tran and Sylvie Mayer for reporting this vulnerability and thank you mcollina and aduh95 for fixing it." — Brotli decoder out-of-bounds write の項より
公式情報を見る →

呼び名が複数あるのはなぜか

Brotliで見つかった今回の脆弱性は「HTTP2Shell」と名付けられています。Node.jsの公表に関連して、当初は「Node2Shell」と呼ばれていました。ところが、原因がBrotli本体にあってNode.js以外の製品にも影響すると分かり、HTTP2Shellとも呼ばれるようになったとのこと。

2つの名前は同じ脆弱性を指しています。HTTP2Shellという名前ですが、通信の方式であるHTTP/2そのものに欠陥があるわけではありません。調べるときは、識別番号のCVE-2026-111497で検索すると、この脆弱性の情報が見つかります。

"本脆弱性はNode.jsが2026年10月21日に公表した脆弱性に関連して「Node2Shell」と呼称されていました。しかし、本脆弱性の原因はBrotliのC言語実装にあり、BrotliはHTTP通信で利用されるデータ圧縮ライブラリであったことから複数の製品で影響を受けるため「HTTP2Shell」とも呼称されています。" — 「I. 概要」より
公式情報を見る →

GoogleやNode.js、Bunなどが修正版を公開

Brotli本体を開発するGoogleと、Brotliを組み込んだNode.jsやBunなどが、すでに修正版を公開しています。つまり、対策の基本は使っているソフトを修正版に更新することです。

GoogleがBrotli本体の修正版を3つ公開

Googleは10月21日に、Brotli本体の3つの系統それぞれに修正版を公開しました。対象になるバージョンと、更新先の修正版は次のとおりです。

  • 1.2.0以降で1.2.1より前のバージョン:修正版は1.2.1
  • 1.1.0以降で1.1.1より前のバージョン:修正版は1.1.1
  • 1.0.3以降で1.0.10より前のバージョン:修正版は1.0.10

JPCERT/CCは、十分にテストしたうえで速やかに修正版を適用するよう呼びかけています。 Brotliを組み込んだ製品の対応は製品ごとに異なるため、使っている製品の開発元が出す更新情報で、修正版が出ているかを確認しておくとよいでしょう。

"Brotli v1.2.0からv1.2.1より前のバージョン" / "Brotli v1.1.0からv1.1.1より前のバージョン" / "Brotli v1.0.3からv1.0.10より前のバージョン" / "十分なテストを実施の上、速やかに修正済みバージョンを適用してください。" — 「II. 対象」「III. 対策」より
公式情報を見る →

ソフトごとの修正版の一覧

Brotliを組み込んだNode.jsとBunのほか、通信を中継するEnvoy ProxyとIstioも修正版を出しています。 Patch the Planetの一覧によると、10月23日時点の修正版は次のとおりとのこと。

OpenAIのPatch the PlanetのBrotliのページの上部。CVE-2026-111497とUpdated October 23, 2026の表示の下に、Brotli decoder vulnerabilityという表題と、修正版への更新を促す説明が表示されている
OpenAIのPatch the Planetのページです。ソフトごとの修正版と、すぐ更新できない時の無効化の方法が書かれています。OpenAI Patch the Planet「Brotli decoder vulnerability」

主なソフトの修正版(Patch the Planet、10月23日時点)

ソフト 修正版 補足
Node.js 22.23.4/24.22.1/26.12.1 影響を受けるのは22系と24系と26系
Bun 1.4.4 Brotli 1.2.1を含む
Envoy Proxy 1.40.0/1.39.3/1.38.6/1.37.8 1.36.12も修正済みだが、1.36はサポート外
Istio 1.29.9/1.30.6/1.31.2 1.29はサポートが終了している
Brotli(Google) 1.0.10/1.1.1/1.2.1 使っている系統の修正版を選ぶ

更新先は表の修正版か、同じ系統で表の修正版より新しいリリースです。更新したあとは、古いBrotliで動作しているサービスや定期的に動作する処理をすべて再起動するか、作り直して配置し直します。再起動するまでは、古いBrotliが動作したまま残ります。

"Fixed releases · Reviewed October 23, 2026" / "Update to a listed fixed version or a later patched release in the same branch, then restart or redeploy." / "Restart or redeploy every service, worker, scheduled job, and replica using the old build." — Start patching の項より
公式情報を見る →

脆弱性はBrotliでデータを展開するアプリやツールに影響

影響を受けるのは、細工されたBrotli形式のデータを、修正前のデコーダで展開するアプリやツールです。また、細工されたデータが入ってくる主な入口は、OpenAIによると次の3つとのこと。

  • 外から届いた、Brotliで圧縮されたリクエストの本文
  • 信頼できないサーバーから取ってきた応答
  • Brotliで圧縮されたファイル

Webサービスのほか、Node.jsやBunを中に含むツールも調べる対象です。Electron(Webの技術でパソコン向けのアプリを作る仕組み)で作られたアプリは、中にBrotliを複数持っていることがあります。ブラウザの部分が直っていても、中のNode.jsが直っているとは限りません。

curl(データを送受信するコマンド)や、PythonとJavaからBrotliを使うための部品も調べる対象に入ります。フォントやデータファイルの読み込みにBrotliを使うソフトもあり、影響はHTTP通信だけにとどまりません。

"Any application that passes attacker-controlled data to an affected Google Brotli decoder may be exposed. This includes compressed HTTP request bodies, responses fetched from untrusted servers, and compressed files." / "a fixed browser component does not establish that the embedded Node.js runtime is fixed." / "Exposure is not limited to HTTP traffic." — Who is affected の項より
公式情報を見る →

送信するデータの圧縮だけにBrotliを利用するなら対象外

サーバーが送信するデータをBrotliで圧縮しているだけなら、それだけでは今回の脆弱性による影響を受けません。 欠陥があるのは圧縮したデータを元に戻す側で、圧縮する側ではないためです。

ただし、同じサーバーが外から届いたBrotli形式のデータを展開していれば対象になります。CDN(Webサイトのデータをユーザーの近くから配信する仕組み)やWebサーバーで応答のBrotli圧縮を無効にしても、受け取る側の展開は止まらないとのこと。

"Using Brotli only to compress outgoing data does not by itself establish exposure to this decoder flaw." / "Turning off Brotli response compression on a CDN or web server does not disable request or client-side decompression." — Who is affected・Mitigation の項より
公式情報を見る →

すぐ更新できないならBrotli形式のデータを受け付けない

Brotliを組み込んだソフトをすぐに更新できない場合は、更新が終わるまで信頼できないデータのBrotli展開を無効にするようOpenAIは勧めています。 gzipやdeflateなど他の圧縮形式は、そのまま使い続けて問題ありません。

外から届くリクエストは、Brotliで圧縮されたものを展開する前に拒否します。Envoy ProxyとIstioでは、Brotliを展開する機能をリクエストと応答の両方で無効にすることが必要です。相手のサーバーへ「Brotliで受け取れる」と伝える設定を削除しただけでは、Brotli形式の応答が届く可能性は残るとのこと。

GoogleはBrotli本体について、更新の他に緩和策を出していません。Brotliを組み込んだ製品の緩和策は製品ごとに異なるため、使っている製品の開発元が出す最新の情報に従うのが確実です。

"If you cannot patch immediately, disable Brotli decompression of untrusted data until the update is deployed." / "Disable Brotli decoding of untrusted data while allowing gzip, deflate, or other supported codecs." / "Removing br from Accept-Encoding alone does not stop a server from sending it." — 冒頭・Mitigation の項より
公式情報を見る →

HTTP2Shellへの対応で会社と社員がすること

Brotliは多くのソフトに組み込まれているため、自社が影響を受けるかどうかは、使っているソフトを一つずつ見ないと判断できません。 影響を受ける製品を使っているなら、開発元の情報を確認して速やかに対策を適用し、侵害を受けていないかも調べる必要があります。

"本脆弱性の影響を受ける製品を利用している場合は、開発者が提供する情報などを参考に、速やかに対策の適用および侵害有無の調査を実施してください。" — 「I. 概要」より
公式情報を見る →

会社側:Brotli形式を読み込む箇所を洗い出して更新

会社として最初にするのは、Brotli形式のデータを読み込む箇所の洗い出しです。自社で作ったWebサービスや社内ツール、導入している製品から、次の2つのいずれかに該当するものを探します。

  • Node.jsやBunを使っているもの
  • Envoy ProxyやIstioで、Brotliを展開する設定で運用しているもの

見つかったものはテストしたうえで修正版に更新し、再起動まで終わらせます。 すぐ更新できないものは、Brotli形式のデータを受け付けない設定で更新までのあいだ対処します。更新とあわせて、脆弱性を突かれた形跡がないかも調べてください。

"アプリケーションなどでBrotli形式の圧縮データを展開する処理を利用している場合は、各開発元が提供する最新の情報を確認し、影響の有無および本脆弱性への対応状況を確認してください。" — 「II. 対象」より
公式情報を見る →

社員側:仕事で利用するアプリやツールを最新版にする

社員一人一人ができる対策は、仕事用のパソコンに入れたアプリやツールを最新版にしておくことです。Electronで作られたアプリは中にNode.jsを含んでいることがあり、アプリの中のブラウザ部分が修正されていても、Node.jsの部分まで修正されているとは限りません。アプリから更新の通知が出たら、後回しにせずアプリ自体を更新してください。

また、開発の仕事をしている社員は仕事用のパソコンに入れたNode.jsやBunのバージョンも確認します。 「主なソフトの修正版」の表にある修正版より古ければ、修正版に更新してください。

"apps such as Electron-based desktop tools can include multiple Brotli copies. Check both Chromium and Node.js" — Other software to check の項より
公式情報を見る →

FAQ

HTTP2ShellとNode2Shellは別の脆弱性ですか?
同じ脆弱性です。どちらもBrotliの脆弱性CVE-2026-111497の呼び名で、Node.jsの公表に関連してNode2Shellと呼ばれていました。原因がBrotli本体にあり、複数の製品が影響を受けることから、HTTP2Shellとも呼ばれています。
Brotliで圧縮して送信しているだけのサーバーも影響を受けますか?
それだけでは影響を受けるとは言えません。今回の脆弱性は、圧縮データを元に戻す側(デコーダ)にあるためです。ただし、同じサーバーが外から届いたBrotli形式のデータを展開していれば対象になります。
すぐに更新できない場合はどうすればよいですか?
更新が終わるまで、信頼できないデータのBrotli展開を無効にします。gzipやdeflateなど他の圧縮形式は、そのまま使い続けて問題ありません。