書籍「Laravelの教科書」Laravel13対応サポートガイド公開中 → ダウンロードはこちら

Brotliに重大な脆弱性:Node.js・Bun・Pythonへの影響と対策をわかりやすく解説

Laravel

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が見つけたものということで、現時点で攻撃は確認されていません。

とはいえ、こういったニュースは悪い人もキャッチしているので、早めに予防しておくほうが良いでしょう。

個人的には、「また深刻な脆弱性…」って感じで、もうお腹いっぱいですが^^;

頑張って守りをかためていきましょう。

最後まで読んでいただき、ありがとうございました♪

XやYoutubeなどでも発信してます。よかったらフォローしてください。

 

タイトルとURLをコピーしました