CVE-2026-111497に対するシステムの保護:Node.jsおよびPythonにおけるBrotli脆弱性の理解

セキュリティ研究者たちは、CVE-2026-111497として追跡され、「Node2Shell」と広く呼ばれる重大なメモリ破損の脆弱性を公開しました。この脆弱性はGoogleのBrotli圧縮デコーダに影響を与えます。QualysおよびImpervaチームによる2026年10月の脅威インテリジェンスの開示によると、このバッファ外書き込み脆弱性は、Node.js、Bun、PythonのBrotliパッケージ、Envoyプロキシを含む主要なソフトウェアエコシステムに影響を与えます。CVSS 4.0の深刻度スコアは9.2で、信頼できない圧縮データストリームを展開するバックエンドサービスはリモートコード実行(RCE)のリスクにさらされます。
CVE-2026-111497は、Googleが開発したC言語ベースのBrotliデコンプレッションライブラリに由来するバッファ外書き込み脆弱性です。ソフトウェアセキュリティアナリストが公開した技術的解説によると、この脆弱性はデコードループ内の返値チェックの欠如に起因し、特別に作成された圧縮データストリームが割り当てられたヒープバッファの末尾を超えてメモリを上書き可能になります。
Node.jsやさまざまなPythonパッケージなどのランタイム環境は、Brotliデコーダーのコードの独立したコピーを静的にバンドルまたはコンパイルするため、コアCライブラリの不具合がそれを再利用するあらゆるアプリケーション層に影響を及ぼします。アプリケーションがBrotli形式で圧縮されたHTTPレスポンスやアップロードされたファイルペイロードなどの悪意のある入力を処理すると、デコード処理がメモリ破損を引き起こします。Impervaのセキュリティ研究者によると、このメモリ破損は、アプリケーションのクラッシュ、メモリリーク、または実行中のプロセスの権限での完全なリモートコード実行を引き起こす可能性があります。
この脆弱性は、パッチが適用されていないバージョンのGoogle Brotliライブラリ(バージョン1.0.3から1.0.9、1.1.0、および1.2)をバンドルまたはリンクしているあらゆるソフトウェア製品やランタイム環境に影響します。ITセキュリティ企業が公開した脆弱性追跡アラートによると、影響を受けるエコシステムは複数の言語およびインフラツールにまたがります:
-
Node.js:コアランタイムはdeps/brotliにBrotliデコーダーを独自に組み込んでいます。緊急パッチ適用前に、22.x、24.x、26.xのサポートリリースラインが公開されていました。
-
Pythonパッケージ:brotliおよびbrotlicffiを含む標準的なPythonラッパーパッケージは、同じ下層のCコードの欠陥を継承しています。
-
代替ランタイムとプロキシ:Bunのような高性能ランタイム、サービスメッシュ、およびEnvoyやIstioのような圧縮トラフィックを処理するAPIゲートウェイも同様に脆弱です。
この脆弱性は高レベルのパッケージ依存関係ではなく、コアランタイムバイナリ内部に存在するため、標準的なアプリケーション依存関係スキャナーでは、通常、自動的にこの暴露を検出できません。
外部ネットワークトラフィックを処理するパッチが適用されていないサービスは、サービス拒否(DoS)状態からシステム全体の乗っ取りに至るまでの即時リスクに直面します。クラウドセキュリティプロバイダーによるインシデント分析によると、主要な攻撃ベクトルには以下が含まれます:
-
サーバーサイドインジェクション:圧縮ファイルのアップロードを受け付けるバックエンドAPI、または悪意のあるサーバー応答を展開するHTTPクライアントモジュールがネイティブなfetch関数を実行する。
-
クライアントサイドの露出:信頼できない外部エンドポイントからデータを取得し、受信したBrotliペイロードを自動的に展開するWebアプリケーションまたはマイクロサービス。
成功的に悪用された場合、攻撃者はクラウドワークロードまたはコンテナ化されたインスタンス上で認証なしのリモートコード実行を達成し、内部サービスメッシュ全体での横断移動とデータの不正送出が可能になります。
公式の設定回避策が利用できないため、影響を受けるソフトウェアランタイムを対応するパッチ済みバージョンにアップグレードすることが、唯一の完全で恒久的な対策です。2026年10月21日に公開された公式セキュリティアドバイザリーによると、開発者およびシステム管理者は以下の直ちに実施すべきステップを取るべきです:
-
Node.jsランタイムを更新:Node.jsのインストールをセキュリティパッチ適用済みのリリースバージョン22.23.4、24.22.1、または26.12.1にアップグレードしてください。サポート終了(EOL)バージョン(例:Node.js 20.xやパッチ未適用のカスタムバージョン)は、公式なバックポートパッチが提供されないため、直ちにアップグレードしてください。
-
Pythonパッケージをアップグレード:Brotli圧縮に関連するすべてのPython依存関係を、パッケージマネージャーを通じて最新の安全なバージョンに更新してください。
-
インフラストラクチャ資産をスキャン:標準的なパス以外に隠された脆弱なBrotliデコーダのバイナリコピーを監査するため、ランタイムスキャンツール(Qualys InstaScanなど)をデプロイしてください。
CVE-2026-111497(「Node2Shell」)の発見は、現代のクラウドアーキテクチャに深く組み込まれたユーティリティライブラリがもたらすシステム全体のリスクを浮き彫りにしている。GoogleのBrotli圧縮解除アルゴリズムは、多数の言語ランタイムやプロキシに静的にコンパイルされているため、1つのメモリ破壊の脆弱性がNode.js、Python、その他のWebインフラ全体に広範な暴露を引き起こす可能性がある。セキュリティチームは、単なる依存関係管理を超えて、コアバイナリバージョンの積極的な監査、ランタイム更新の追跡、脆弱な環境の即時パッチ適用に取り組み、リモートコード実行攻撃の可能性を防ぐ必要がある。進化するサプライチェーン脅威に対する最も効果的な防御策は、資産の能動的な可視化と迅速なパッチ展開である。
CVE-2026-111497とは何を意味しますか?
CVE-2026-111497は、GoogleのBrotliデコンプレッションCライブラリに存在する深刻なアウトオブバウンズ書込み脆弱性に割り当てられた公式なCommon Vulnerabilities and Exposures識別子です。
なぜこの脆弱性は「Node2Shell」というニックネームで呼ばれているのですか?
Impervaのセキュリティ研究者は、この脆弱性を「Node2Shell」と名付けました。これは、パッチが適用されていないNode.jsランタイム環境に対して、初期の成功した概念実証攻撃がリモートコード実行を可能にしたためです。
標準的なnpmパッケージ監査はこの脆弱性を検出しますか?
いいえ、標準的なnpm依存関係チェックツールでは、CVE-2026-111497を検出できません。この脆弱性は、外部のユーザーランドパッケージではなく、deps/brotliにコンパイルされたNode.jsバイナリのコア部分に存在するからです。
Node.jsのすべてのバージョンはCVE-2026-111497の影響を受けますか?
いいえ、影響を受けたのは特定のリリースラインのみであり、修正版はサポートされているバージョンに限定されています。Node.jsはバージョン22.23.4、24.22.1、および26.12.1でこの脆弱性を修正しましたが、それより古いエンドオブライフ版はアップグレードしない限り永続的に脆弱な状態のままです。
Brotli脆弱性のCVSS深刻度スコアはいくらですか?
Googleおよび主要な脆弱性管理プラットフォームは、認証なしのリモートコード実行の可能性により、CVE-2026-111497に10.0満点中9.2のクリティカルなCVSS 4.0スコアを割り当てました。
免責事項: このページは、お客様の便宜のためにAI技術を使用して翻訳されています。最も正確な情報については、元の英語版を参照してください。
