
圧縮ライブラリ「Brotli」の脆弱性(CVE-2026-111497)が、2026年10月27日に、米国のCISAの「悪用が確認された脆弱性(KEV)」のカタログに登録されました。期限は、米国の連邦機関に対して、11月10日です(CISAのKEVのデータを、私が直接確認)。
この脆弱性は、10月21日にNode.jsが公表したため、「Node.jsの問題」として知られています。ただ、原因は、Node.jsが同梱しているBrotliというライブラリにあります。そのため、同じライブラリを使う別の製品にも、影響が広がっています。
この記事は、「自分のところは、どこを確認すればよいのか」を知りたい方向けに、一次情報を軸にして、確認できた事実と、確認できていない点を分けて整理したものです。情報は、2026年10月29日の時点のものです。
日本語で出回っている情報には、原文と異なる訳や要約が、かなり見受けられます。この記事は、一次情報を私たちも原文で確認して書いていますが、読者の皆さんも、各社の原文でのご確認をお勧めします。出典は、各記述のそばに示しています。
| 日付(2026年) | 出来事 | 出典 |
|---|---|---|
| 2月27日 | 修正が、Brotliのソースに入る。このときは、リリースも告知もなかった | Help Net Security |
| 10月21日 | Node.jsが、修正版を公開。Googleも、Brotli 1.2.1、1.1.1、1.0.10を公開 | Node.js、Google |
| 10月22日 | CVEのレコードとアドバイザリが公開。最初の概念実証(PoC)が出る | GitHubのアドバイザリ、Aikido |
| 10月25日 | Microsoftが、.NETの定例外の更新を公開 | Microsoft .NET Blog |
| 10月26日 | Palo Altoが、PAN-OSが対象と公表。JPCERT/CCが、注意喚起を公開。ELLIOが、攻撃の通信を観測したと報告 | Palo Alto、JPCERT/CC、Help Net Security |
| 10月27日 | CISAが、KEVに登録 | CISAのKEVのデータ |
見つけたのは、OpenAIのCodex Securityです(Khai Tran氏とSylvie Mayer氏。Node.js)。
修正は、2月にソースへ入っていたのに、リリースは10月でした。Help Net Securityは、その間の約8か月、修正が、公開のリポジトリで読める状態だったと指摘しています(Help Net Security)。
Brotliは、別の製品の中に、同梱されています。製品ごとの状況は、次のとおりです。
| 製品 | 修正版 | 出典 |
|---|---|---|
| Brotli(Cのライブラリ) | 1.2.1、1.1.1、1.0.10 | |
| Node.js | 22.23.4、24.22.1、26.12.1 | Node.js |
| Node.js 20、23、25 | サポート終了のため、修正なし | Aikido |
| Bun | 1.4.4 | Aikido |
Python(Brotli、brotlicffi) |
1.2.1、1.2.1.0 | GitHubのアドバイザリ |
| .NET | 8.0.33、9.0.22、10.0.14(.NET 11はRC3) | Microsoft .NET Blog |
| Palo Alto PAN-OS | 12.2.4-h1、12.1.4-h13、12.1.7-h11、12.1.10-h3、11.2系の各ホットフィックス | Palo Alto |
JPCERT/CCは、Node.js、Bun、PythonのBrotliパッケージを例として挙げ、Brotliは、多岐にわたる製品に組み込まれていると述べています。Google側には、緩和策がありません(JPCERT/CC)。
このほか、Envoy、Istio、curl、FFmpeg、Apache Arrow、ClickHouse、Javaのbrotli4jなどが、影響の話に挙がっています(Help Net Security、Aikido)。これらは、報道や、セキュリティ会社のブログに基づく二次情報なので、各製品の公式の案内で、確認してください。
注意が要るのは、次の点です。
「Brotliが入っている」だけでは、攻撃されません。攻撃者が用意したBrotliのデータを、展開したときに、問題になります。
| 場面 | 当たるか | 出典 |
|---|---|---|
Node.jsで、node:zlibを使って、外から来たデータを展開している |
当たる | Node.js |
Express 5(express.json())で、リクエストの本文を受けている |
当たる(既定で、Brotliの本文を展開する) | Sysdig |
| Express 4 | body-parser経由では、当たらない(415を返す) | Sysdig |
サーバー側のfetch()で、利用者が指定したURLや、Webhookの宛先を呼んでいる |
当たりうる(レスポンスのBrotliを自動で展開する) | Aikido、Sysdig |
.NETで、リクエストの展開や、HttpClientの自動展開を、有効にしている |
当たる。既定では無効 | Microsoft .NET Blog |
| PAN-OSで、TLS復号つきのBrotli検査を、有効にしている | 当たる。管理画面やAPIは、対象外 | Palo Alto |
PAN-OSは、11.2.4以降で、Brotliの検査は、既定では無効です。確認は、CLIでshow system setting brotliを実行し、「Enabled: yes」と出れば、当たります(Palo Alto)。
| 項目 | 内容 | 確度 |
|---|---|---|
| CISAのKEV登録 | 10月27日。要対処の期限は、11月10日。攻撃者や標的は、示されていない | 一次(CISAのKEVのデータ) |
| 攻撃の通信 | ELLIOが、10月26日に、自社のセンサーで観測したと報告。公開のPoCを使ったもので、脆弱なビルドでシェルが取れることを、確認したとしている | 報道(Help Net Security)。ELLIOの原文は、私は確認できていません |
| 公開のPoC | 10月22日。意図的に弱くしたビルドでだけ、コード実行に至ると報告されている。通常のビルドでは、クラッシュと、限られたメモリの読み出し | 二次(Aikido) |
| 通常の環境でのコード実行 | Impervaが、公式のNode.js 24.22.0(Linux arm64)で、複数回の試行のあと、成功したとしている。エクスプロイトは、非公開 | 二次(Sysdig) |
| Palo Altoの見解 | PAN-OSのこの件で、悪意のある悪用は把握していないとしている(10月29日更新時点) | 一次(Palo Alto) |
| 深刻度 | GoogleのCVEレコードは、CVSS v4.0で9.2(Critical)。Node.jsは、High | 一次(GitHubのアドバイザリ、Node.js) |
まとめると、「攻撃の通信は観測され、CISAも悪用として登録したが、どの環境でも確実にコードを実行できる、という段階ではない」と言えます。クラッシュは、簡単に再現できるとされています(Sysdig)。サービスが落ちるだけでも、被害です。
次の順に、洗い出してください。
確認のコマンドは、次のとおりです。
# Node.js
node --version
node -p "process.versions.brotli"
# Python
pip show Brotli brotlicffi
pipdeptree -r -p Brotli
# .NET
dotnet --list-runtimes
urllib3、requests、aiohttp、httpx、Scrapyなどを通じて、間接的に入っていることがあります。ロックファイルも、見てください(Aikido)。set system setting brotli-encoding disable。Palo Alto)。次のどれも、安全にはなりません。時間稼ぎです。
Content-Encoding: brのリクエストを拒否する。ただし、サーバー側から取りに行くレスポンスには、効きません(Aikido)express.json({ inflate: false })で、圧縮された本文を、拒否する。gzipも拒否されるため、先に、クライアントへの影響を確かめます(Sysdig)Node.jsの公式は、回避策を示していません。Node.jsの取得するレスポンスまで防ぐには、更新しかありません。
悪用の通信は、観測されています。更新の前に、次の点を、確認してください。
自社の環境で、Brotliを含む部品の洗い出しや、更新、侵害の確認でお困りの方は、下記よりお問い合わせください。
ただいま、セキュリティについての無料相談を受け付けています。「自社のサイトは大丈夫か」「何から確認すればよいか」など、お気軽にご相談ください。
