OSを更新しても防げない 「Brotli」に重大脆弱性、Node.jsに潜む“見えない侵入口”:PHP2Shell級のリスクスコア

OSやアプリケーションを更新しても、脆弱性が残っているかもしれない。Googleの圧縮ライブラリ「Brotli」に、CVSS 9.2の重大脆弱性が見つかった。Node.jsではコード実行も実証され、攻撃の試みも観測されている。広く使われるライブラリだからこそ、見落とされやすい攻撃経路に注意が必要だ。

» 2026年11月02日 12時00分 公開
[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 Tenableは、Googleが開発した圧縮ライブラリ「Brotli」のデコーダーに存在する重大な脆弱(ぜいじゃく)性、通称「HTTP2Shell」(CVE-2026-111497)の危険性と対策を解説した。

 細工した圧縮データを処理させることで、メモリ破損やサービス運用妨害(DoS)、任意コード実行などを引き起こす恐れがある。「Node.js」ではコード実行が実証され、実環境での攻撃の試みも観測されている。Brotliは幅広いソフトウェアに組み込まれており、利用者が脆弱性の存在を把握しにくい点も厄介だ。

Node.jsでコード実行を実証 実環境での攻撃も観測

 CVE-2026-111497は、Brotliのデコーダーに存在するバッファーオーバーフローの脆弱性だ。Brotliのバージョン1.0.3〜1.2.0が影響を受ける。認証されていない遠隔の攻撃者が細工したBrotli圧縮データを処理させることで、メモリ破損や機密情報の漏えい、DoSを引き起こす他、任意のコードを実行できる可能性がある。CVSS v4.0のスコアは9.2で、深刻度「緊急」(Critical)と評価されている。

 この脆弱性を悪用した攻撃が成立する条件とは何か。

 攻撃が成立する条件は、アプリケーションが攻撃者の制御下にあるBrotliの圧縮データを展開することだ。例えば、サーバ側でBrotliの圧縮されたリクエストを受信して展開するケースや、クライアント側で外部サーバから受け取った圧縮レスポンスを自動展開するケースが攻撃経路となる。

 Node.jsでは、標準の「fetch」APIがBrotliの圧縮されたレスポンスを自動展開する他、「Express 5」などのボディーパーサーも圧縮されたリクエストを展開する。このため、アプリケーションがBrotliの処理を明示的に呼び出していなくても、脆弱性の影響を受ける可能性がある。

 研究者はNode.jsの公式ビルド「24.22.0」で任意コード実行を実証した。ただし、攻撃コードは対象となるビルドに合わせた調整が必要で、異なるバージョンにそのまま適用できるわけではない。PoC(概念実証)コードも「GitHub」で公開されている。

 ELLIOは2026年10月26日(現地時間、以下同)、Node.jsを標的とする攻撃トラフィックを実環境で観測したと報告した。米国土安全保障省サイバーセキュリティ・インフラストラクチャセキュリティ庁(CISA)は同月27日、今回の脆弱性を「既知の悪用された脆弱性カタログ」(KEV:Known Exploited Vulnerabilities Catalog)に登録した。Akamai Technologiesによると、同社の観測ネットワークの61%で影響を受けるNode.jsが稼働しているという。

OS側の更新だけでは不十分 実行環境に潜む「見えないBrotli」

 対策上の課題は、Brotliが実行環境やライブラリに同梱され、資産管理の対象から見落とされやすい点にある。

 例えば、Node.jsの公式ビルドや「Bun」はBrotliのライブラリを内蔵している。この場合、OS側のBrotliだけを更新しても、実行環境に組み込まれた脆弱なコードは残る。修正を反映するには、Node.jsやBunなど、それぞれの提供元が公開する修正版を適用する必要がある。

 また、ライブラリや実行環境を更新しただけでは、稼働中のプロセスに修正が反映されない場合がある。アプリケーションの再起動に加え、コンテナを利用している場合はイメージの再構築と再配備も必要だ。

 修正版はBrotliの他、Node.js、Bun、「.NET」「Envoy Proxy」「Istio」、Python用Brotliパッケージ、「Windows」版PHPなどで提供されている。Node.jsでは22.x系が22.23.4、24.x系が24.22.1、26.x系が26.12.1で修正された。サポート終了済みの20.x、23.x、25.x系には修正が提供されないため、サポート対象のバージョンへの移行が必要となる。

 即時更新が難しい場合、サーバ側でBrotliの圧縮リクエストを拒否すれば、攻撃経路の一つを遮断できる。ただし、これは外部サーバから取得した圧縮レスポンスの展開には効果がない。.NETのHttpClientなどでは自動展開を停止する回避策がある一方、Node.js標準のfetchには同様の回避策がなく、修正版への更新が必要だ。

 今回の脆弱性は、ライブラリ単体のバージョン管理だけでは十分な対策にならないことを示している。OSやアプリケーションの資産一覧に表れない依存ライブラリまで把握し、実行環境やコンテナイメージを含めて修正状況を確認する必要がある。

Copyright © ITmedia, Inc. All Rights Reserved.

アイティメディアからのお知らせ

スポンサーからのお知らせPR

注目のテーマ

横断特集:AIの置き場所
ID・パスワードから始める「引き算」のセキュリティ〜ゼロトラスト狂騒曲の果てに
その「AIコーディング」は本当に必要か?
Microsoft & Windows最前線2026
4AI by @IT - AIを作り、動かし、守り、生かす
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。