Brotliに脆弱性が見つかりました。Node.js、Bun、Pythonなどが影響を受けます。攻撃が成功すると、RCE(外部からのリモートコード実行)、機密漏えいなどが起こりえます。
BrotliはGoogleが開発した圧縮ライブラリで、様々なサービスで使われている技術です。

要注意なのは、自分でNode.jsを動かしてWebサービスを運用している場合です。ローカル上でNode.jsを使うだけなら、影響は限定的です。
今できる対策についてまとめていきます。
HTTP2Shell(CVE-2026-111497)について
今回の脆弱性について、ざっくり次の通りです。
| 項目 | 内容 |
|---|---|
| CVE | CVE-2026-111497 |
| 対象 | Google Brotli 1.0.3〜1.2.0(全プラットフォーム) |
| 何が問題? | Brotliのデコーダ(展開する処理)に、バッファオーバーフローの脆弱性 |
| 攻撃の方法 | 攻撃者が外部からサーバーにデータを送りつける。
または、悪意あるサーバーからデータを受け取る |
| 起こりうること | 機密情報の漏えい、サービス停止、任意のコード実行 |
| 詳細 | OpenCVE |
今回の攻撃では、バッファオーバーフローが利用されます。バッファオーバーフローとは、データを入れる枠からデータがあふれ、隣のメモリを書き換えてしまうバグです。

今回は、細工した圧縮データを展開させることで、バッファオーバーフローを引き起こせます。
影響を受けるソフトウェアと修正版
下記のとおりです。主なランタイム、プロキシ、ライブラリには、すでに修正版が出ています。
| 製品 | 影響を受ける条件 | 修正版 |
|---|---|---|
| Google Brotli(Cライブラリ) | 信頼できないデータを展開する場合 | 1.0.10 / 1.1.1 / 1.2.1 |
| Node.js | Brotliで圧縮された応答やリクエストを展開する場合 | 22.23.4 / 24.22.1 / 26.12.1(20以前はサポート終了で修正なし) |
| Bun | Brotliで圧縮された応答を展開する場合 | 1.4.4 |
| Envoy | Brotliの展開を有効にしている場合 | 1.36.12 / 1.37.8 / 1.38.6 / 1.39.3 / 1.40.0 |
| Istio | Brotliの展開を有効にしている場合 | 1.29.9 / 1.30.6 / 1.31.2 |
| Python Brotli | インストール済みで、Brotliで圧縮された応答を展開する場合 | 1.2.1 |
| Python brotlicffi | 同上 | 1.2.1.0 |
| cdxgen | 信頼できない入力をスキャンする場合 | 12.8.9 / 13.5.0 |
出典:The Hacker News、
対策
ここは、立場によってやることと手間暇が大きく異なります。
| 立場 | 深刻度 | やること |
|---|---|---|
| Node.jsやPythonなどでサーバーを運用 | 高い | 影響を確認し、必要なら修正版へ更新・再起動 |
| 開発者の手元のPC | 低い | Node.js、Bun、PythonのBrotliを更新 |
| レンタルサーバーでWebサイトを公開 | 低い | 基本的にサーバー会社が対応。
独自にNode.jsなどのアプリを動かしている場合は確認 |
| 一般の個人 | 低い | 普段どおりOSやブラウザを更新する |
Vercelなどではすでに攻撃をブロックするWAFルールを導入済み。
Vercelが管理する環境外でNode.jsを実行している場合はアップグレード必要。Vercel上でもNode.js 20系を利用している場合は、22系または24系への変更と再デプロイが必要です。
ApacheやNginxは、標準設定ではBrotliの展開をしません。
Laravelでの開発
わたしのブログはLaravel系が多いのですが、Laravelへの影響は限定的です。

ビルド(npm run build)したファイルを置くだけなら、サーバー上でNode.jsは動かないためです。
ただ、ローカル上でNode.jsやBunを使っている人は、念のためローカル環境を更新しておくと良いでしょう。
Node.js
バージョンを確認します。Node.js 22系は22.23.4以上、24系は24.22.1以上、26系は26.12.1以上ならOKです。
node -v
Bun
こちらも同様にバージョンを確認。1.4.4以上なら完了です。古い場合はbun upgradeを実施。Homebrewで入れた場合はbrew upgrade bunを使います。
bun -v
Python
Pythonを使っている場合は、パッケージで入っていないか確認。
pip show brotli brotlicffi
古いバージョンが表示されたら、pip install -U パッケージ名で更新します(brotliまたはbrotlicffi)。
さいごに
今回の脆弱性も生成AIが見つけたものということで、現時点で攻撃は確認されていません。
とはいえ、こういったニュースは悪い人もキャッチしているので、早めに予防しておくほうが良いでしょう。
個人的には、「また深刻な脆弱性…」って感じで、もうお腹いっぱいですが^^;
頑張って守りをかためていきましょう。

