脆弱性 HTTP2Shell CVE-2026-111497 を調査:.NET/FFmpeg/ClickHouse/Apache Arrow への影響は?

HTTP2Shell Vulnerability Extends Beyond HTTP, Affecting .NET, FFmpeg, ClickHouse, and Apache Arrow

2026/10/26 CyberSecurityNews — 脆弱性 HTTP2Shell の影響範囲は、Web トラフィックだけにとどまらない。新たな調査により判明したのは、同じ Brotli デコーダーの欠陥 (CVE-2026-111497) が、.NET アプリケーション/FFmpeg によるメディア処理/ClickHouse サーバ/Apache Arrow のワークロードにも障害を引き起こす可能性があることだ。今回の調査結果が示すのは、Node.js のバージョンを確認するだけでは、脆弱性の影響を受ける他のソフトウェアを見落とす可能性があることだ。10月25日に公開された調査結果では、JFrog の研究者 Aviv Engelberg/Eddy Tsalolikhin/Ofri Ouzan が明らかにしたのは、複数のソフトウェア・スタックにおける CVE-2026-111497 の影響である。

この調査で明らかにされたのは、影響を受けるライブラリを各アプリケーションが使用する方式に応じて、クラッシュ/メモリ破損/無限デコードループなどの障害が発生することである。

この脆弱性は、10月21日の Node.js セキュリティ・アップデートで初めて公表されたものであり、その原因は HTTP 自体ではなく、Google の Brotli デコーダに存在する。不正なブロック切り替えが、追加の入力データを要求する状態として、誤って解釈される可能性がある。

その結果、デコーダの内部が破損した状態で処理が継続され、確保されたメモリ・バッファの範囲外への書き込みが可能になる。影響を受けるアップストリームのリリースには、Brotli 1.0.3〜1.0.10 未満/1.1.0〜1.1.1 未満/1.2.0〜1.2.1 未満が含まれる。

さまざまなプロジェクトがあり、これらの修正版アップストリーム・バージョンに更新せずに、修正だけを個別に取り込む場合がある。そのため、開発チームはバージョン番号だけで判断せず、ベンダーのパッチ適用履歴を確認する必要がある。

HTTP2Shell の脆弱性

FFmpeg に対する調査では、JPEG XL 画像を処理する libjxl を経由して、脆弱なデコーダに到達した。そのために用いられた細工された画像には、圧縮されたメタデータ・ボックス内に不正な Brotli データが埋め込まれていた。libjxl が、このデータをデコードすると、メモリ破損が発生してクリーンアップ処理中にクラッシュした。

このテストが示すのは、破損したポインタの値を攻撃者が制御できることである。ただし、FFmpeg に対する完全なリモートコード実行 (RCE) のエクスプロイトが実証されたわけではない。

このようなファイルを経由した攻撃経路は、以前に報告された FFmpeg のメディア・ファイルに関する脆弱性や、FFmpeg のメモリ破損の脆弱性で指摘された懸念を、さらに強めるものである。ただし、これらの過去の報告は、別の脆弱性を対象とするものだ。

JFrog のチームは、.NET の Brotli 解凍 API を通じて、ネイティブコードのクラッシュも引き起こした。2段階に分けて入力されるデータ・ストリームにより、デコーダが不正な内部状態に陥り、その後のメモリ操作は設定されたヒープ領域の範囲外に及んだ。通常のマネージド例外とは異なり、発生したセグメンテーション違反によりプロセスが終了した。

実証には、ローカルのコンソール・アプリケーションが使用された。それに関連するデコーダの処理経路には、HttpClient のレスポンス解凍機能や、ASP.NET Core のリクエスト解凍ミドルウェアなどが該当する。Microsoft は10月25日の時点で、サポート対象のランタイムと、SDK に対するアップデートを提供すると発表した。

ClickHouse では、23 MB の Brotli 圧縮データを本文に取り込むかたちで細工された、1件の HTTP リクエストを受信した後に障害が発生した。デコーダのメモリ破損により、クリーンアップ処理中にクラッシュが発生し、テスト対象のサーバが停止して、実行中のクエリが中断された。JFrog によると、すでに修正がマージされているが、調査結果の公開時点では、修正を取り込むリリースは提供されていなかった。

Apache Arrow では、異なる種類の障害が確認された。pyarrow の Brotli デコード処理に、534 バイトの入力データを渡すと、CPU リソースが消費され続け、処理が完了しない無限ループが発生した。その一方で、Brotli 1.2.1 は、同じ入力データを 1秒以内に拒否した。調査結果の公開時点で、Apache Arrow の問題追跡チケットは未解決の状態だった。

Sysdig Threat Research Team によると、Node.js のバージョン 22.23.4/24.22.1/26.12.1 では修正が提供されており、24.22.1 のリリースノートでも Brotli の修正が確認されている。その他のアプリケーションについては、それぞれの更新済みビルドやライブラリ・パッケージを適用する必要がある。

開発チームにとって必要なことは、信頼できないファイル/バッファ/リクエスト/レスポンスが、解凍処理に渡される経路を調査することである。JFrog のスキャナーは、影響を受ける可能性のある処理経路の特定に役立つが、検出結果が一致しただけで、リモートから悪用可能であることが証明されたわけではない。