Google Brotli デコーダの脆弱性「node2shell」(CVE-2026-111497)について、Red Hat の公式情報(Security Bulletin RHSB-2026-015、CVE ページ、Security Data API、errata)を基に、Red Hat 製品での影響範囲と修正の有無を整理します。
本記事は 2026年11月6日時点の情報です。Red Hat の Bulletin は Status が「Ongoing」であり、今後更新される可能性があります。
概要
| 項目 | 内容 |
|---|---|
| 通称 | node2shell(Imperva)。HTTP2Shell(Aikido Security)、Brotli2Shell(Tenable / JFrog)、Broccoli2Shell(カナダ・サイバーセキュリティセンター)も同じ CVE を指す。HTTP/2 とは無関係 |
| CVE | CVE-2026-111497 |
| 影響するソフトウェア | Google Brotli デコーダ(c/dec/decode.c)1.0.3〜1.2.0。Brotli は HTTP の Content-Encoding: br に広く使われ、Node.js、Firefox / Thunderbird、.NET、Python バインディングなど多数のソフトウェアに同梱されている |
| 影響の内容 | 細工された Brotli 圧縮ストリームを復号すると、ブロック種別切り替え処理で境界外書き込み(CWE-787)が発生。メモリ内容の漏えい、サービス停止、または任意コード実行の可能性 |
| 攻撃の条件 | 攻撃者が制御する Brotli データを対象アプリケーションが復号すること。正常なエンコーダ出力では発生せず、意図的に壊したストリームが必要。認証・ユーザー操作は不要 |
| 深刻度(Google / 上流) | CVSS v4.0: 9.2(Critical) |
| 深刻度(NVD) | CVSS v3.1: 9.8(Critical、AC:L) |
| 深刻度(Node.js) | High |
| 深刻度(Red Hat) | Important。CVSS v3.1: 8.1(AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| 上流の修正版 | Brotli 1.0.10 / 1.1.1 / 1.2.1、Node.js 22.23.4 / 24.22.1 / 26.12.1(2026年10月21日公開)。Python Brotli 1.2.1、brotlicffi 1.2.1.0(10月22日) |
| Red Hat Security Bulletin | RHSB-2026-015(10月26日 公開、10月27日 更新、Status: Ongoing。11月6日時点で27日以降の更新なし) |
| 悪用状況 | CISA が10月27日(米国時間)に KEV カタログへ登録(連邦機関の対応期限は11月10日)。ELLIO が10月26日に Node.js 24.22.0 を狙う攻撃トラフィックを観測(同社検証ではクラッシュに留まる)。Imperva は公式 Node.js 24.22.0 コンテナでコード実行を実証(複数回の試行が必要、コードは非公開)。Sophos は「active exploitation」と報告。侵害された本番環境の公表事例はない |
| 発見者 | OpenAI Codex Security(Khai Tran 氏、Sylvie Mayer 氏) |
| 緩和策 | Red Hat は Bulletin に緩和手順を掲載(信頼できない相手からの Content-Encoding: br を拒否、Node.js での Brotli 復号 API の利用回避など)。ただしパッチの代替ではない |
出典:RHSB-2026-015、Red Hat CVE-2026-111497、Node.js October 2026 Security Releases
Red Hat の深刻度評価の根拠
上流が Critical(CVSS v4.0 9.2)、NVD が 9.8 と評価する一方、Red Hat は Important(8.1)としています。CVE ページの Statement に記載された根拠は次のとおりです。
- 悪用には、対象が攻撃者制御の Brotli データを復号する必要がある(
Content-Encoding: brの HTTP コンテンツ、Node.js の zlib / fetch() など) - 脆弱なパスに到達するのは「壊れたストリーム」であり、通常のエンコーダ出力では発生しない
- RHEL のコンパイラ / ランタイム強化(ASLR、NX、FORTIFY_SOURCE、SELinux)がメモリ破壊から確実なコード実行への転換を困難にする。ただしクラッシュやすべての影響を排除するものではない
- CNA(Google)が CVSS v4.0 で Attack Requirements: Present(AT:P)としている点と合わせ、Red Hat は Attack Complexity を High と評価し、Critical ではなく Important とした
php2shell(CVE-2026-109618 / 109619)と同様、上流と Red Hat で深刻度が異なる案件です。脆弱性スキャナが上流や NVD のスコアで Critical と報告する一方、Red Hat の errata は Important として発行されているため、対応優先度の判断では両方の評価を併記して扱う必要があります。
攻撃経路の整理
Red Hat の Bulletin と第三者の解析から、Brotli の復号が発生する経路は大きく4つです。
| 経路 | 内容 | 該当例 |
|---|---|---|
| サーバー側(受信) | リクエストボディの Content-Encoding: br を自動復号する |
Express 5 の express.json()(body-parser 2.x は既定で br を復号)、Koa(co-body)、Fastify + @fastify/compress、zlib.createBrotliDecompress() の直接利用 |
| サーバー側(送信) | 外部 URL へアクセスし、応答の Content-Encoding: br を自動復号する |
Node.js の fetch()(Accept-Encoding: identity を送っても防げない)、Python の urllib3 / requests / httpx / aiohttp(brotli または brotlicffi が導入済みの場合) |
| ブラウザ | 信頼できないサイトの Brotli 圧縮コンテンツを読み込む | Firefox、Thunderbird |
| ライブラリ直接利用 | ユーザー入力を brotli C ライブラリに渡す | 独自アプリケーション、リバースプロキシの br 対応モジュール |
Webhook など利用者が指定した URL へ Node.js が fetch() でアクセスする機能は、送信側経路として狙われやすいと指摘されています。受信側の br をブロックしても、送信側の経路は残ります。
出典:RHSB-2026-015、Sysdig: Node2Shell (CVE-2026-111497)、BleepingComputer
影響範囲(Red Hat 製品)
| 製品 | 影響 | 備考 |
|---|---|---|
| Red Hat Enterprise Linux 10 | 影響あり | brotli、dotnet8.0、Firefox / Thunderbird。修正済み。nodejs22 / 24 / 26 と dotnet9.0 / 10.0 / 11.0 はシステム brotli を使うため「Not affected」(brotli の更新が必要) |
| Red Hat Enterprise Linux 9 | 影響あり | brotli、nodejs:24 モジュール、dotnet8.0、Firefox / Thunderbird。修正済み。nodejs:26 モジュールは未修正。nodejs:22 と dotnet9.0 / 10.0 / 11.0 はシステム brotli を使うため「Not affected」 |
| Red Hat Enterprise Linux 8 | 影響あり | brotli、nodejs:24 モジュール、dotnet8.0、Firefox / Thunderbird。修正済み。nodejs:22 と dotnet9.0 / 10.0 / 11.0 はシステム brotli を使うため「Not affected」 |
| Red Hat Enterprise Linux 7 | 影響あり | Bulletin では影響製品に含まれる。Red Hat の CVE データで RHEL 7 に紐づく修正は Firefox(ELS)のみで、brotli パッケージとしての記載はない |
| Red Hat OpenShift Container Platform 4 / 5 | 影響あり | RHEL CoreOS(openshift/ose-rhel-coreos-8 / -9)が「Affected」。11月6日時点で修正版の記載なし |
| JBoss Core Services | 影響あり | jbcs-httpd24-brotli が「Affected」。未修正 |
| Red Hat Satellite 6 | 影響あり | Satellite 6.19 の python3.12-brotli は修正済み。python-brotli と satellite/iop-remediations-rhel9 は「Affected」で未修正 |
| Red Hat Ansible Automation Platform 2 | 影響あり | 2.4 / 2.5 / 2.6 / 2.7 の python3.12-brotli と ee-supported イメージは修正済み。automation-dashboard-rhel9 は「Affected」で未修正。controller、python3.11-brotli は「Not affected」 |
| Red Hat OpenShift AI | 影響あり | 3.0 / 3.4 / 3.5 のベースイメージ、mlserver、trustyai は修正済み。odh-mlserver-cuda-rhel9 は「Affected」 |
| Red Hat OpenShift Dev Spaces 3.31 | 影響あり | 修正済み(11月2日) |
| Red Hat Developer Hub 1 / 2 | 影響あり | rhdh-hub-rhel9 が「Affected」で未修正 |
| Red Hat build of Quarkus / Apache Camel / Apicurio Registry / Debezium | 影響あり | Quarkus 3.27.6.SP2 / 3.33.4.SP2、Camel 3.33.4.SP2 は修正済み。Camel 4 for Quarkus 3、Apicurio Registry 3、Debezium 3 の native-linux-x86_64 は「Affected」 |
| Red Hat build of Keycloak | 影響なし | rhbk/keycloak-rhel9、operator、native-linux-x86_64 とも「Not affected」 |
| OpenShift Service Mesh 3 | 影響なし | istio-proxy が「Not affected」 |
| Logging Subsystem for OpenShift | 影響なし | vector-rhel9 が「Not affected」 |
| RHEL / UBI ベースのコンテナイメージ | 影響の可能性あり | Container Health Index で修正状況を確認。ベースイメージ更新後に再ビルドが必要 |
| RHEL チャネルからパッケージを取る階層製品(OpenStack Platform、RHV など) | 影響の可能性あり | 基盤 RHEL の brotli パッケージを更新する |
影響を受けない条件(Red Hat Bulletin より)
Red Hat は Bulletin で、次の3点のいずれにも該当しない環境は「実際には影響を受けない」としています。
- brotli、firefox、thunderbird、nodejs パッケージがインストールされ、信頼できない入力に晒されている
- 外部または信頼できない相手との間で
Content-Encoding: brを含む HTTP リクエスト / レスポンスを受け付けるサービスがある - ユーザー入力を Brotli 復号 API(Node.js の
zlib.brotliDecompress()、fetch()の br 対応、brotli C ライブラリなど)に直接渡すアプリケーションがある
出典:RHSB-2026-015、Red Hat CVE-2026-111497(Security Data API の package_state)
システム brotli と同梱 brotli の違い
Red Hat の CVE ページ Statement は、Node.js と .NET についてどのパッケージがシステムの brotli を使い、どれが独自の同梱版を持つかを明記しています。運用上、最も誤解しやすい点です。
| パッケージ | brotli の種類 | 必要な対応 |
|---|---|---|
| RHEL 8 / 9 の nodejs:22 モジュール | システム brotli | Node.js パッケージは「Not affected」。brotli / libbrotli パッケージの更新が必須 |
| RHEL 8 / 9 の nodejs:24 モジュール | 同梱 brotli | nodejs:24 の errata を適用 |
| RHEL 9 の nodejs:26 モジュール | 同梱 brotli | 「Affected」。errata 待ち |
| RHEL 10 の nodejs22 / nodejs24 / nodejs26 | システム brotli | Node.js パッケージは「Not affected」。brotli パッケージの更新が必須 |
| RHEL 8 / 9 / 10 の dotnet8.0 | 同梱 brotli | dotnet8.0 の errata を適用 |
| RHEL 8 / 9 / 10 の dotnet9.0 / 10.0 / 11.0 | システム brotli | .NET パッケージは「Not affected」。brotli パッケージの更新が必須 |
「Not affected」は「対応不要」ではありません。システム brotli を使うパッケージは、brotli パッケージが更新されていなければ脆弱なままです。rpm -q brotli libbrotli で修正版(下表)になっていることを確認してください。
対象パッケージと修正の有無
RHEL の brotli パッケージ
| 対象 | 修正の有無 | 修正パッケージ | errata(公開日) |
|---|---|---|---|
| RHEL 10.2 | 修正済み | brotli-1.1.0-8.el10_2.1 | RHSA-2026:90449(10月26日) |
| RHEL 10.0 EUS | 修正済み | brotli-1.1.0-6.el10_0.3 | RHSA-2026:90889(10月27日) |
| RHEL 9.8 | 修正済み | brotli-1.0.9-10.el9_8.1 | RHSA-2026:90495(10月26日) |
| RHEL 9.6 EUS | 修正済み | brotli-1.0.9-7.el9_6.3 | RHSA-2026:90890(10月27日) |
| RHEL 9.4 E4S | 修正済み | brotli-1.0.9-6.el9_4.3 | RHSA-2026:90888(10月27日) |
| RHEL 9.2 E4S | 修正済み | brotli-1.0.9-6.el9_2.3 | RHSA-2026:90914(10月27日) |
| RHEL 8.10 | 修正済み | brotli-1.0.6-5.el8_10 | RHSA-2026:90501(10月26日) |
| RHEL 8.8 E4S / TUS | 修正済み | brotli-1.0.6-4.el8_8.1 | RHSA-2026:90891(10月27日) |
| RHEL 8.6 AUS / EUS Long-Life | 修正済み | brotli-1.0.6-4.el8_6.1 | RHSA-2026:90893(10月27日) |
| RHEL 8.4 AUS / EUS Long-Life | 修正済み | brotli-1.0.6-4.el8_4.1 | RHSA-2026:90892(10月27日) |
同梱 brotli を持つパッケージ
| 対象 | 修正の有無 | 修正パッケージ | errata(公開日) |
|---|---|---|---|
| RHEL 9 nodejs:24 モジュール | 修正済み | nodejs:24-9080020261027142403.rhel9 | RHSA-2026:92378(10月29日) |
| RHEL 8 nodejs:24 モジュール | 修正済み | nodejs:24-8100020261027151919.6d880403 | RHSA-2026:92376(10月29日) |
| RHEL 9 nodejs:26 モジュール | 未修正 | Red Hat CVE データで「Affected」。11月6日時点で修正版の記載なし | — |
| RHEL 10 dotnet8.0 | 修正済み | dotnet8.0-8.0.133-1.el10_2 | RHSA-2026:92428(10月29日) |
| RHEL 10.0 EUS dotnet8.0 | 修正済み | dotnet8.0-8.0.133-1.el10_0 | RHSA-2026:93455(11月2日) |
| RHEL 9 dotnet8.0 | 修正済み | dotnet8.0-8.0.133-1.el9_8 | RHSA-2026:92492(10月29日) |
| RHEL 9.6 EUS / 9.4 E4S dotnet8.0 | 修正済み | dotnet8.0-8.0.133-1.el9_6 / el9_4 | RHSA-2026:93457 / RHSA-2026:93456(11月2日) |
| RHEL 8 dotnet8.0 | 修正済み | dotnet8.0-8.0.133-1.el8_10 | RHSA-2026:92420(10月29日) |
| RHEL 7〜10 Firefox / Thunderbird | 修正済み | firefox-140.10.0 / thunderbird-140.10.0 | 2026年4〜5月発行の errata(RHSA-2026:10757 ほか) |
※ Firefox / Thunderbird について、Red Hat の CVE データは2026年4〜5月発行の 140.10.0 の errata を本 CVE の修正として紐づけています。CVE の公開(10月22日)より前の errata であり、同梱デコーダ側で先行して修正が取り込まれていたものと推測されますが、Red Hat からの説明はなく、理由は公開情報からは判断できません。
階層製品
| 対象 | 修正の有無 | errata(公開日) |
|---|---|---|
| Ansible Automation Platform 2.4(RHEL 8 / 9)python3.12-brotli | 修正済み | RHSA-2026:93065(10月30日) |
| Ansible Automation Platform 2.5(RHEL 8 / 9)python3.12-brotli | 修正済み | RHSA-2026:94100(11月2日) |
| Ansible Automation Platform 2.6 python3.12-brotli / ee-supported-rhel9 | 修正済み | RHSA-2026:94101 / RHSA-2026:92856(11月2日 / 10月29日) |
| Ansible Automation Platform 2.7 ee-supported-rhel9 | 修正済み | RHSA-2026:94108(11月2日) |
| Ansible Automation Platform automation-dashboard-rhel9 | 未修正 | — |
| Satellite 6.19(RHEL 9)python3.12-brotli | 修正済み | RHSA-2026:92861(10月29日) |
| Satellite 6 python-brotli、iop-remediations-rhel9 | 未修正 | — |
| OpenShift Container Platform 4 / 5(RHCOS) | 未修正 | — |
| JBoss Core Services jbcs-httpd24-brotli | 未修正 | — |
| build of Quarkus 3.27.6.SP2 / 3.33.4.SP2 | 修正済み | RHSA-2026:93908 / RHSA-2026:93902(11月2日) |
| build of Apache Camel 3.33.4.SP2 | 修正済み | RHSA-2026:93980(11月2日) |
| OpenShift Dev Spaces 3.31(udi、code、server など) | 修正済み | RHSA-2026:93987 / RHSA-2026:93984(11月2日) |
| OpenShift AI 3.0 / 3.4 / 3.5 ベースイメージ | 修正済み | RHSA-2026:94452〜94476(11月3日) |
| Red Hat Developer Hub 1 / 2 | 未修正 | — |
| Red Hat Hardened Images brotli / dotnet8 | 修正済み | RHSA-2026:87420(10月21日)/ RHSA-2026:91709(10月28日) |
出典:Red Hat CVE-2026-111497(Security Data API の affected_release / package_state)、各 errata ページ
※ errata と対象ストリームの対応は、Red Hat CVE データ API(affected_release)の記載に基づきます。Red Hat の CVE データに記載された修正リリースは 11月6日時点で 102 件あり、上表は RHEL と主要な階層製品を抜粋しています。
※ RHEL 8 の brotli 1.0.6 と RHEL 9 の brotli 1.0.9 はバージョン番号が据え置きで、リリース番号のみ更新されています(Red Hat のバックポートポリシー)。上流の「1.0.3〜1.2.0 が脆弱」という情報だけで判断するスキャナは、修正済みのシステムを脆弱と報告します。適用確認は errata 番号と rpm -q --changelog brotli の CVE 記載で行います。
対応
- 対象パッケージの有無を確認する:
rpm -qa 'brotli*' 'libbrotli*' 'nodejs*' 'dotnet*' firefox thunderbird、dnf module list nodejs(RHEL 8 / 9) - errata を適用する:
dnf update brotli libbrotli(全環境で必須)。同梱版を持つパッケージは個別にdnf update nodejs(nodejs:24)、dnf update 'dotnet8.0*' - プロセスを再起動する:brotli ライブラリを読み込んでいるプロセス(httpd、Node.js アプリケーション、Python アプリケーションなど)はライブラリ更新後に再起動しない限り修正が反映されない。コンテナは再ビルドして再デプロイ
- 適用を確認する:
rpm -q --changelog brotli | grep CVE-2026-111497、Node.js はnode -p "process.versions.brotli"(同梱版は 1.2.1 以降、または修正 errata の版数) - Python アプリケーションは pip 側の Brotli / brotlicffi も確認する:
pip list | grep -i brotli。RHEL の python3-brotli は brotli パッケージと同じ errata で更新されるが、venv に pip で入れたものは別途brotli>=1.2.1/brotlicffi>=1.2.1.0への更新が必要
Satellite / Red Hat Lightspeed(旧 Insights)を利用している環境では、該当 errata が適用対象として表示されます。
緩和策(Red Hat Bulletin より)
Red Hat は Bulletin で次の緩和策を示しています。いずれもパッチの代替にはなりません。
| 対象 | 緩和策 |
|---|---|
| 全般 | 信頼できない相手からの Brotli を復号するサービスの露出を減らし、ネットワークアクセスを制限する。アプリケーションの設定で可能なら、信頼できない相手からの Content-Encoding: br を受け付けない・自動復号しない |
| Web サービス / リバースプロキシ | brotli パッケージ更新までの間、リバースプロキシやロードバランサーで、信頼できないクライアントからのリクエスト・レスポンスの Content-Encoding: br を除去または拒否する |
| Node.js アプリケーション | nodejs パッケージ更新までの間、信頼できないソースからのデータに zlib.brotliDecompress() / zlib.createBrotliDecompress() を使わない |
| Firefox / Thunderbird | 更新版が入るまで信頼できないサイトの閲覧を避ける。企業環境ではプロキシやファイアウォールで信頼できない Web コンテンツへのアクセスを制限する |
リバースプロキシで受信側の br を拒否しても、Node.js の fetch() や Python の HTTP クライアントが外部サイトの応答を復号する送信側経路は残ります。Webhook など外部 URL へアクセスする機能を持つアプリケーションでは、送信先の制限も合わせて検討してください。
情報源
- RHSB-2026-015 Out-of-Bounds Write – Google Brotli Decoder (CVE-2026-111497) – “node2shell”
- Red Hat CVE-2026-111497
- Red Hat Security Data API CVE-2026-111497(JSON)
- RHSA-2026:90495 Important: brotli security update(RHEL 9)
- RHSA-2026:92378 Important: nodejs:24 security update(RHEL 9)
- Red Hat バックポートポリシー
- Node.js: Wednesday, October 21, 2026 Security Releases
- CVE-2026-111497 – CVE Record(cve.org)
- CISA Known Exploited Vulnerabilities Catalog
- Sophos: ‘Node2Shell’ vulnerability (CVE-2026-111497) in active exploitation
- Sysdig: Node2Shell (CVE-2026-111497): Detecting the Node.js Brotli RCE
- Atlas: Google Brotli’s October 2026 Decoder RCE: CVE-2026-111497
- BleepingComputer: Critical “HTTP2Shell” Brotli vulnerability triggers emergency patches
更新履歴
| 日時(JST) | 内容 |
|---|---|
| 2026年11月6日 | 初版公開 |
