{"slug":"node2shell","title":"Node2Shell (CVE-2026-111497)","shortName":"Node2Shell","summary":"Out-of-bounds write in Google's Brotli decoder (1.0.3 to 1.2.0). Node.js, Bun, Envoy, Istio and the Python Brotli packages ship it. Attacker-controlled Brotli data can crash the process or leak memory, and can permit remote code execution. Google rates it CVSS 4.0 9.2. Node.js rates it High. Imperva Red Team demonstrated code execution on the official Node.js 24.22.0 image. Not in CISA KEV as of catalog 2026.10.23, checked 24 Oct 2026.","isExample":false,"draft":false,"family":"node2shell","kind":"shared-component","aliases":["Brotli decoder OOB write","CVE-2026-111497","GHSA-3wvj-j6qm-62mr","GHSA-9v8h-qqgm-4m35","HTTP2Shell","Node 2 Shell"],"publishedAt":"2026-10-21","updatedAt":"2026-10-24","patchStatus":"patched","exploited":false,"scores":{"cve":"CVE-2026-111497","cvss":{"cve":"CVE-2026-111497","score":9.2,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","version":"4.0","scorer":"cna","sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-111497","sourceDate":"2026-10-24","checkedDate":"2026-10-24"},"epss":{"cve":"CVE-2026-111497","score":0.0048,"percentile":0.40511,"date":"2026-10-23","sourceUrl":"https://api.first.org/data/v1/epss?cve=CVE-2026-111497","checkedDate":"2026-10-24"},"kev":{"cve":"CVE-2026-111497","listed":false,"dateAdded":null,"dueDate":null,"catalogVersion":"2026.10.23","sourceUrl":"https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json","checkedDate":"2026-10-24"},"addedDate":"2026-10-24"},"priority":{"label":"high"},"managementSummary":{"what":"Out-of-bounds write in Google's Brotli decoder (CVE-2026-111497) as shipped in Node.js and other runtimes. Google rates CVSS 4.0 9.2. Not in CISA KEV and not recorded as exploited in the wild on this page.","action":"Upgrade Node.js, Bun, Envoy, Istio, and Python Brotli packages to the fixed releases, and disable Brotli decompression where you cannot patch yet."},"seenInTheWild":[],"seenInTheWildLinks":[{"title":"Patch the Planet (OpenAI): fixed releases and Brotli-off mitigations for CVE-2026-111497. No exposure counts. Update cadence not stated; last updated 23 Oct 2026.","url":"https://patchtheplanet.org/brotli","observer":"OpenAI","metric":"possibly-vulnerable"},{"title":"Aikido Intel: libbrotli AIKIDO-2026-100918","url":"https://intel.aikido.dev/cve/AIKIDO-2026-100918","observer":"Aikido","metric":"possibly-vulnerable"},{"title":"Aikido Intel: PyPI brotli AIKIDO-2026-166481","url":"https://intel.aikido.dev/cve/AIKIDO-2026-166481","observer":"Aikido","metric":"possibly-vulnerable"},{"title":"Aikido Intel: google.brotli AIKIDO-2026-425328","url":"https://intel.aikido.dev/cve/AIKIDO-2026-425328","observer":"Aikido","metric":"possibly-vulnerable"},{"title":"OSV: CVE-2026-111497","url":"https://osv.dev/vulnerability/CVE-2026-111497","observer":"OSV","metric":"possibly-vulnerable"}],"whatChanged":{"date":"2026-10-24","items":[{"text":"Scope widened from Node.js to the upstream Brotli decoder: Envoy, Istio, Python Brotli and brotlicffi, and distro libbrotli added.","section":"impact","sourceUrl":"https://patchtheplanet.org/brotli"},{"text":"Envoy GHSA-3wvj-j6qm-62mr (Critical) and Istio ISTIO-SECURITY-2026-007 added.","section":"defenders","sourceUrl":"https://github.com/envoyproxy/envoy/security/advisories/GHSA-3wvj-j6qm-62mr"},{"text":"Public PoC repo added to the defenders index (README claims RCE only in exact-profile labs; DoS broadly).","section":"pocs","sourceUrl":"https://github.com/dimasma0305/CVE-2026-111497-POC"},{"text":"Red Hat rates it Important and says there is no public, reliable RCE PoC.","section":"exploitation","sourceUrl":"https://access.redhat.com/security/cve/CVE-2026-111497"},{"text":"Still not in CISA KEV as of catalog 2026.10.23, checked 24 Oct 2026.","section":"exploitation","sourceUrl":"https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json"},{"text":"Added Look for past exploitation: hunt from 21 Oct 2026 (public disclosure), no in-the-wild reports.","section":"retrohunt","sourceUrl":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases"},{"text":"Added Am I affected checks, mitigations and response guidance","section":"am-i-affected"},{"text":"Aikido now calls this bug HTTP2Shell. It is the same CVE-2026-111497, so we added the name as an alias. No new CVE.","section":"overview","sourceUrl":"https://www.aikido.dev/blog/python-packages-vulnerable-node2shell-brotli-cve-2026-111497"},{"text":"Added distro and package rows: SUSE (nodejs22 fix in QA), Alpine (brotli 1.2.1-r0 / 1.1.1-r0 fixed), Gentoo (tracker open), Homebrew and vcpkg (brotli 1.2.1).","section":"impact","sourceUrl":"https://security.alpinelinux.org/vuln/CVE-2026-111497"},{"text":"Added Red Hat product rows: Service Mesh 3, JBoss Core Services httpd, OpenShift 4, products shipping Python Brotli, and RHEL Firefox and Thunderbird are affected. Hardened Images brotli is fixed.","section":"impact","sourceUrl":"https://access.redhat.com/security/cve/CVE-2026-111497"},{"text":"Brotli4j (Java) merged the Brotli 1.2.1 fix but has not released it yet. Electron, Deno, Apache Arrow, DuckDB and the PHP brotli extension have no statement yet.","section":"impact","sourceUrl":"https://github.com/hyperxpro/Brotli4j/pull/273"},{"text":"Exploitation status is unchanged. Public RCE has been shown only on Node.js, there are no in-the-wild reports, and the bug is not in CISA KEV (catalog 2026.10.23).","section":"exploitation","sourceUrl":"https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json"},{"text":"Act-now priority block with sourced CVSS, EPSS, and CISA KEV dates.","section":"priority","addedDate":"2026-10-24"},{"text":"Detection rule coverage table and JSON, IOC CSV, and STIX feeds.","section":"detection","addedDate":"2026-10-24"}]},"whatTheBugIs":"Node2Shell is Imperva Red Team's name for CVE-2026-111497, an out-of-bounds write in Google's Brotli decoder as bundled with Node.js. Node.js disclosed it on 21 Oct 2026 in the Wednesday security releases and rates it High. NVD lists Google's CVSS 4.0 score of 9.2.\n\nA Node.js service can hit the decoder when it consumes a Brotli response (including via fetch()) or when middleware such as Express 5 / body-parser 2.x inflates an incoming Content-Encoding: br body. Crafted Brotli streams can corrupt decoder state, disclose memory, crash the process, or potentially execute code.\n\nFixed Node.js releases are 22.23.4, 24.22.1, and 26.12.1. Bun is fixed in 1.4.4. End-of-life Node.js lines (20.x, 23.x, 25.x and older) receive no fix. Google Brotli 1.0.3 through 1.2.0 is the stated affected range; branch-specific fixed releases include 1.0.10, 1.1.1, and 1.2.1.\n\nThe bug is in upstream Brotli, not only Node.js. OpenAI Codex Security (Khai Tran and Sylvie Mayer) found it and is credited on the CVE record. OpenAI's Patch the Planet page lists Node.js, Bun, Envoy and Istio as affected when they decode Brotli. Envoy is fixed in 1.40.0, 1.39.3, 1.38.6 and 1.37.8. Istio is fixed in 1.29.9, 1.30.6 and 1.31.2. The PyPI Brotli package is fixed in 1.2.1 and brotlicffi in 1.2.1.0. Any program that decodes untrusted Brotli with an affected libbrotli is in scope, including libcurl when decompression is turned on.","attackPath":{"caption":"High-level only. Not a reproduction guide.","steps":[{"id":"reach","label":"Untrusted Brotli","detail":"Attacker-controlled Brotli data reaches Node.js via a compressed response, an inflated request body, or a direct zlib call."},{"id":"decode","label":"Decoder flaw","detail":"The bundled Brotli decoder continues past an invalid stream condition and writes out of bounds."},{"id":"corrupt","label":"Memory corruption","detail":"Adjacent decoder state is corrupted. Memory disclosure or process crash can follow."},{"id":"exec","label":"Code exec","detail":"Node.js says the out-of-bounds write can permit remote code execution. Imperva showed code running on Node.js 24.22.0. Conceptual impact class only."}]},"exploitation":{"kev":{"listed":false,"date":"2026-10-24","url":"https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json","note":"Last verified 24 Oct 2026 against CISA KEV catalog 2026.10.23 (released 2026-10-23T19:30:18Z, 1,756 entries). CVE-2026-111497 is not listed."},"firstSeen":{"date":null,"note":"No authoritative source reports in-the-wild exploitation as of 24 Oct 2026. Imperva validated RCE in a lab on the official Node.js 24.22.0 image. Red Hat (23 Oct 2026) says there is no public, reliable RCE PoC."},"vendorStatements":[{"vendor":"Node.js Project","date":"2026-10-21","statement":"Node.js Brotli decoder out-of-bounds write permits remote code execution (CVE-2026-111497) - (high). Affects Node.js 26.x, 24.x, and 22.x. Credits OpenAI Codex Security (Khai Tran and Sylvie Mayer) for reporting, and mcollina and aduh95 for the fix.","url":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases","retracted":false},{"vendor":"Imperva Red Team","date":"2026-10-22","statement":"Our standalone proof of concept ran code carried in a Brotli response or request body inside applications using the official Node.js 24.22.0 Linux arm64 image. The same inputs were rejected by 24.22.1.","url":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","retracted":false},{"vendor":"Google (CNA)","date":"2026-10-22","statement":"A buffer overflow vulnerability in the Brotli decoder (c/dec/decode.c) in Google Brotli versions 1.0.3 through 1.2.0 on all platforms allows a remote unauthenticated attacker to corrupt adjacent decoder state memory, disclose sensitive memory contents, cause a denial of service, or potentially execute arbitrary code using a crafted Brotli-compressed stream.","url":"https://www.cve.org/CVERecord?id=CVE-2026-111497","retracted":false},{"vendor":"Envoy Proxy","date":"2026-10-23","statement":"Envoy deployments that have Brotli decompressor configured. Patched in v1.40.0, v1.39.3, v1.38.6, v1.37.8 and v1.36.12. Credits OpenAI Security Research.","url":"https://github.com/envoyproxy/envoy/security/advisories/GHSA-3wvj-j6qm-62mr","retracted":false},{"vendor":"Red Hat","date":"2026-10-23","statement":"This issue is rated Important. ... there is no public, reliable remote code execution proof-of-concept.","url":"https://access.redhat.com/security/cve/CVE-2026-111497","retracted":false}]},"timeline":[{"date":"2026-10-24","event":"Re-checked the live KEV feed: catalog version 2026.10.23 (released 2026-10-23T19:30:18Z, 1,756 entries). CVE-2026-111497 is not listed. (Checked 24 Oct 2026.)","source":{"title":"Known Exploited Vulnerabilities Catalog (JSON feed)","url":"https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json","publisher":"CISA"},"kind":"kev","addedDate":"2026-10-24"},{"date":"2026-10-23","event":"Envoy publishes GHSA-3wvj-j6qm-62mr (Critical) for its Brotli decompressor.","source":{"title":"Out-of-Bounds Write in Brotli Decompressor","url":"https://github.com/envoyproxy/envoy/security/advisories/GHSA-3wvj-j6qm-62mr","publisher":"Envoy Proxy"},"kind":"advisory","key":true,"addedDate":"2026-10-24"},{"date":"2026-10-23","event":"OpenAI's Patch the Planet page lists Node.js, Bun, Envoy and Istio fixes and Brotli-off mitigations.","source":{"title":"Brotli vulnerability (CVE-2026-111497)","url":"https://patchtheplanet.org/brotli","publisher":"Patch the Planet (OpenAI)"},"kind":"advisory","key":true,"addedDate":"2026-10-24"},{"date":"2026-10-23","event":"Debian ships DSA-6582-1 (trixie) and DLA-4855-1 (bookworm).","source":{"title":"Debian tracker CVE-2026-111497","url":"https://security-tracker.debian.org/tracker/CVE-2026-111497","publisher":"Debian"},"kind":"patch","addedDate":"2026-10-24"},{"date":"2026-10-23","event":"OpenAI says it found the Brotli flaw during a red-teaming exercise on its training environment.","source":{"title":"OpenAI resumes frontier AI training ... discloses flaw","url":"https://www.channelnewsasia.com/business/openai-resumes-frontier-ai-training-after-security-overhaul-discloses-flaw-in-widely-used-software-6487981","publisher":"CNA / Reuters"},"kind":"disclosure","addedDate":"2026-10-24"},{"date":"2026-10-22","event":"NVD publishes CVE-2026-111497 with Google CNA CVSS 4.0 score 9.2.","source":{"title":"NVD CVE-2026-111497","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-111497","publisher":"NVD"},"kind":"disclosure","key":true},{"date":"2026-10-22","event":"Imperva Red Team publishes Node2Shell analysis and confirms RCE on Node.js 24.22.0.","source":{"title":"Node2Shell: From Brotli Data to Remote Code Execution","url":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","publisher":"Imperva"},"kind":"poc","key":true},{"date":"2026-10-22","event":"Aikido publishes defender-oriented Node2Shell guidance covering Express, fetch(), and Bun.","source":{"title":"Node2Shell: Node.js Brotli vulnerability allows remote code execution","url":"https://www.aikido.dev/blog/node2shell-nodejs-brotli-rce-cve-2026-111497","publisher":"Aikido"},"kind":"advisory","key":true},{"date":"2026-10-22","event":"Bun 1.4.4 released with the Brotli fix.","source":{"title":"Bun v1.4.4","url":"https://bun.com/blog/bun-v1.4.4","publisher":"Bun"},"kind":"patch","addedDate":"2026-10-24"},{"date":"2026-10-22","event":"Python Brotli 1.2.1 and brotlicffi 1.2.1.0 published to PyPI.","source":{"title":"GHSA-9v8h-qqgm-4m35","url":"https://github.com/advisories/GHSA-9v8h-qqgm-4m35","publisher":"GitHub Advisory Database"},"kind":"patch","addedDate":"2026-10-24"},{"date":"2026-10-22","event":"Public PoC repository posted; its README reports DoS across Node.js lines and RCE only in exact-profile labs.","source":{"title":"dimasma0305/CVE-2026-111497-POC","url":"https://github.com/dimasma0305/CVE-2026-111497-POC","publisher":"GitHub"},"kind":"poc","addedDate":"2026-10-24"},{"date":"2026-10-21","event":"Node.js publishes security releases 22.23.4, 24.22.1, and 26.12.1, disclosing CVE-2026-111497.","source":{"title":"Wednesday, October 21, 2026 Security Releases","url":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases","publisher":"Node.js Project"},"kind":"patch","key":true},{"date":"2026-10-21","event":"Google Brotli 1.0.10, 1.1.1 and 1.2.1 released, each listing CVE-2026-111497.","source":{"title":"google/brotli releases","url":"https://github.com/google/brotli/releases","publisher":"Google Brotli"},"kind":"patch","key":true,"addedDate":"2026-10-24"},{"date":"2026-02-27","event":"Fix committed to google/brotli with no release or advisory at the time.","source":{"title":"node2shell (CVE-2026-111497): What to Patch","url":"https://securityboulevard.com/2026/10/node2shell-cve-2026-111497-what-to-patch-and-how-to-find-exposed-services/","publisher":"Security Boulevard"},"kind":"other","addedDate":"2026-10-24"}],"openNotes":[{"title":"Istio bulletin date","detail":"ISTIO-SECURITY-2026-007 is dated 15 Oct 2026 on istio.io but names CVE-2026-111497, which was published 22 Oct. Shown as dated by Istio.","sources":[{"url":"https://istio.io/latest/news/security/istio-security-2026-007/","date":"2026-10-15","publisher":"Istio"}]},{"title":"Credit wording","detail":"Node.js and the CVE record credit OpenAI Codex Security (Khai Tran and Sylvie Mayer). Imperva's post says the Node.js advisory credits Matteo Collina with reporting; the Node.js advisory credits him with the fix. This page follows the Node.js advisory.","sources":[{"url":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases","date":"2026-10-21","publisher":"Node.js Project"},{"url":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","date":"2026-10-22","publisher":"Imperva"}]},{"title":"RHEL 8 nodejs:24 bundled copy","detail":"A public Red Hat bugzilla comment (23 Oct) says RHEL 8 nodejs:24 bundles Brotli 1.2.0 while the CVE page marks it Not affected. Unresolved; treat as no statement yet.","sources":[{"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2558973","date":"2026-10-23","publisher":"Red Hat Bugzilla"}]}],"defenderActions":[{"title":"Upgrade Node.js","detail":"Move to 22.23.4, 24.22.1, or 26.12.1 (or a later fixed release in the same line). Rebuild and redeploy container images that pin older tags. End-of-life lines (20.x, 23.x, 25.x and older) get no fix; upgrade to a supported line.","priority":"now","links":[{"label":"Node.js security releases","href":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases"}]},{"title":"Upgrade Bun if used","detail":"Bun users should upgrade to 1.4.4 or newer.","priority":"now","links":[{"label":"Aikido Node2Shell guidance","href":"https://www.aikido.dev/blog/node2shell-nodejs-brotli-rce-cve-2026-111497"}]},{"title":"Upgrade Envoy and Istio if Brotli decompression is on","detail":"Envoy 1.40.0, 1.39.3, 1.38.6 or 1.37.8. Istio 1.31.2, 1.30.6 or 1.29.9 (1.29 is end of life). Until then, disable the Brotli decompressor filter in both directions.","priority":"now","links":[{"label":"Envoy GHSA-3wvj-j6qm-62mr","href":"https://github.com/envoyproxy/envoy/security/advisories/GHSA-3wvj-j6qm-62mr"},{"label":"ISTIO-SECURITY-2026-007","href":"https://istio.io/latest/news/security/istio-security-2026-007/"}]},{"title":"Upgrade Python Brotli and brotlicffi","detail":"Brotli 1.2.1 and brotlicffi 1.2.1.0. requests, httpx, urllib3 and aiohttp decode Brotli automatically when either is installed. Rebuild images and wheels.","priority":"now","links":[{"label":"Aikido: Python and wider blast radius","href":"https://www.aikido.dev/blog/python-packages-vulnerable-node2shell-brotli-cve-2026-111497"}]},{"title":"Patch the system libbrotli","detail":"Install your distribution's brotli update (Debian DSA-6582-1 / DLA-4855-1; Ubuntu, Red Hat and Amazon Linux pending) and restart anything linked against it, including curl-based tools.","priority":"soon","links":[{"label":"Debian tracker","href":"https://security-tracker.debian.org/tracker/CVE-2026-111497"},{"label":"Red Hat CVE page","href":"https://access.redhat.com/security/cve/CVE-2026-111497"}]},{"title":"Limit untrusted Brotli paths while patching","detail":"Where practical, reject inbound Content-Encoding: br before request-body decompression, or disable Brotli request inflation. Restrict fetch() of untrusted Brotli responses. Filtering does not replace patching.","priority":"soon","links":[{"label":"Imperva Node2Shell post","href":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/"}]},{"title":"Block Brotli decoding of untrusted data while patching","detail":"Reject Content-Encoding: br before any parser decodes it, and disable automatic Brotli decoding in HTTP clients. Removing br from Accept-Encoding alone is not enough.","priority":"soon","links":[{"label":"Patch the Planet mitigations","href":"https://patchtheplanet.org/brotli"}]}],"detection":[{"title":"Inbound Brotli request bodies","detail":"Look for Content-Encoding: br on inbound requests to Express 5 / body-parser 2.x (or similar) endpoints that inflate bodies. Useful as exposure mapping, not as confirmed compromise.","logSource":"Web access logs / reverse-proxy logs","kind":"generic","group":"web-proxy"},{"title":"Unexpected process markers after Brotli traffic","detail":"Imperva's lab PoC created a marker file after processing crafted Brotli. Hunt for unexpected file writes or process crashes correlated with Brotli inflate paths.","logSource":"EDR / process telemetry","kind":"generic","group":"edr"},{"title":"Imperva WAF rules for CVE-2026-111497","detail":"Imperva states it added WAF rules for CVE-2026-111497.","logSource":"WAF / IPS event logs","kind":"vendor-signature","url":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","date":"2026-10-22"}],"detectionRules":[{"id":"v2s-suricata-inbound-brotli-request","title":"Inbound HTTP request with a Brotli Content-Encoding (exposure mapping)","language":"suricata","query":"alert http $EXTERNAL_NET any -> $HOME_NET any (msg:\"VULN2SHELL HUNTING Inbound HTTP request with Content-Encoding br (CVE-2026-111497 exposure mapping)\"; flow:established,to_server; http.header; content:\"Content-Encoding|3a 20|br|0d 0a|\"; nocase; reference:cve,2026-111497; reference:url,www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/; classtype:misc-activity; sid:1000001; rev:1;)","logSource":"Suricata HTTP inspection (needs decrypted HTTP)","author":"vuln2shell","authorUrl":"https://vuln2shell.com","sourceUrl":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","sourceDate":"2026-10-22","license":"CC0 1.0","origin":"vuln2shell","notes":"Imperva says untrusted Brotli request bodies reach the vulnerable decoder via Express 5 / body-parser 2. This finds where such traffic arrives; it is not an exploit signature. Local sid; renumber to fit your local range.","tested":"untested"},{"id":"v2s-sigma-node-spawns-shell-linux","title":"Linux Shell Spawned By Node.js Process","language":"sigma","query":"title: Linux Shell Spawned By Node.js Process\nid: 5a1805d1-834c-574d-97be-837f7dcff9f8\nstatus: experimental\ndescription: Hunts for a Unix shell started directly by a Node.js process. Imperva showed CVE-2026-111497 (Node2Shell) running attacker-supplied code inside the Node.js process, so new shells under node on servers that never shell out are worth a look.\nreferences:\n    - https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/\n    - https://nodejs.org/en/blog/vulnerability/october-2026-security-releases\nauthor: vuln2shell\ndate: 2026-10-23\ntags:\n    - attack.execution\n    - attack.t1059.004\n    - cve.2026-111497\nlogsource:\n    category: process_creation\n    product: linux\ndetection:\n    selection:\n        ParentImage|endswith: '/node'\n        Image|endswith:\n            - '/sh'\n            - '/bash'\n            - '/dash'\n    condition: selection\nfalsepositives:\n    - Node.js applications, build tools and package scripts that legitimately run shell commands\nlevel: medium","logSource":"Linux process creation (Sysmon for Linux 1 / auditd)","author":"vuln2shell","authorUrl":"https://vuln2shell.com","sourceUrl":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","sourceDate":"2026-10-22","license":"CC0 1.0","origin":"vuln2shell","notes":"Generic post-exploitation hunt grounded in Imperva's code-execution finding. Baseline first; many Node.js apps shell out.","tested":"untested"},{"id":"v2s-logscale-node-spawns-shell","title":"Shell spawned by a Node.js process (Falcon)","language":"logscale","query":"#event_simpleName=ProcessRollup2 event_platform=Lin\n| ParentBaseFileName=node\n| FileName=/^(sh|bash|dash)$/i\n| groupBy([aid, ComputerName, FileName, CommandLine], limit=max)","logSource":"CrowdStrike Falcon ProcessRollup2 (Linux)","author":"vuln2shell","authorUrl":"https://vuln2shell.com","sourceUrl":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","sourceDate":"2026-10-22","license":"CC0 1.0","origin":"vuln2shell","notes":"Same logic as the Sigma rule above. Baseline first.","tested":"untested"},{"id":"v2s-spl-node-crash-hunt","title":"Node.js process crashes on Linux hosts","language":"spl","query":"(sourcetype=syslog OR sourcetype=journald OR sourcetype=linux_messages_syslog) \"segfault\" TERM(node)\n| stats count min(_time) as firstTime max(_time) as lastTime by host\n| sort - count","logSource":"Linux kernel / syslog / journald","author":"vuln2shell","authorUrl":"https://vuln2shell.com","sourceUrl":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","sourceDate":"2026-10-22","license":"CC0 1.0","origin":"vuln2shell","notes":"Imperva notes unexpected process exits during decompression may help prioritise investigation but are not a stand-alone sign of exploitation. Correlate with Node.js version and Brotli traffic.","tested":"untested"},{"id":"v2s-kql-tvm-cve-2026-111497","title":"Devices with CVE-2026-111497 in Defender Vulnerability Management","language":"kql","query":"DeviceTvmSoftwareVulnerabilities\n| where CveId == \"CVE-2026-111497\"\n| project DeviceName, OSPlatform, SoftwareVendor, SoftwareName, SoftwareVersion, VulnerabilitySeverityLevel","logSource":"Microsoft Defender Vulnerability Management (DeviceTvmSoftwareVulnerabilities)","author":"vuln2shell","authorUrl":"https://vuln2shell.com","sourceUrl":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases","sourceDate":"2026-10-21","license":"CC0 1.0","origin":"vuln2shell","notes":"Exposure query in the same form Microsoft publishes for other CVEs. Returns nothing until MDVM maps this CVE; Imperva warns package inventories can miss Node.js binaries bundled in containers.","tested":"untested"}],"detectionLinks":[{"title":"Node2Shell: From Brotli Data to Remote Code Execution","url":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","author":"Imperva Red Team (Ron Masas)","date":"2026-10-22","note":"Defender guidance used for the vuln2shell rules. Imperva WAF rules are product-only."},{"title":"Aikido: Node2Shell guidance","url":"https://www.aikido.dev/blog/node2shell-nodejs-brotli-rce-cve-2026-111497","author":"Aikido","date":"2026-10-22"},{"title":"Node.js October 2026 security releases","url":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases","author":"Node.js Project","date":"2026-10-21"}],"retrohunt":{"summary":"There is no reported in-the-wild exploitation as of 24 Oct 2026. Retrohunt from 21 Oct 2026 for inbound Content-Encoding: br to Node.js / Bun apps, for node or python processes that crash or spawn shells after Brotli traffic, and for Envoy/Istio Brotli decompressor use.","lookback":{"from":"2026-10-21","basis":"public-disclosure","rationale":"Node.js disclosed and shipped fixes on 21 Oct 2026. No authoritative source reports ITW exploitation as of 24 Oct 2026 (KEV catalog 2026.10.23). Imperva demonstrated RCE in a lab on Node.js 24.22.0 the next day. Start at disclosure unless your threat model needs an earlier window for the public PoC (22 Oct).","sources":[{"url":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases","date":"2026-10-21","publisher":"Node.js Project"},{"url":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","date":"2026-10-22","publisher":"Imperva"}]},"logSources":[{"name":"Reverse-proxy / load-balancer access logs","why":"Show inbound Content-Encoding: br before body parsers inflate.","required":true},{"name":"Application logs for Node.js / Bun / Python HTTP clients","why":"Show crashes, fetch errors and Brotli decode failures.","required":true},{"name":"EDR process telemetry for node / bun / python","why":"Imperva's lab PoC ran code inside the Node.js process; unexpected shells under node are worth a look.","required":true},{"name":"Envoy / Istio access logs where Brotli decompression is configured","why":"Envoy GHSA-3wvj-j6qm-62mr applies when the Brotli decompressor is enabled.","required":false},{"name":"Host package inventory (libbrotli, Brotli, brotlicffi, Node.js, Bun)","why":"Exposure map for every decoder copy.","required":true}],"steps":[{"title":"Inventory every Brotli decoder","detail":"List Node.js below 22.23.4 / 24.22.1 / 26.12.1, Bun below 1.4.4, Envoy/Istio with Brotli decompression, and Python Brotli / brotlicffi below 1.2.1 / 1.2.1.0. Also check the system libbrotli.","sources":[{"url":"https://patchtheplanet.org/brotli","date":"2026-10-23","publisher":"Patch the Planet"},{"url":"https://www.aikido.dev/blog/python-packages-vulnerable-node2shell-brotli-cve-2026-111497","date":"2026-10-23","publisher":"Aikido"}]},{"title":"Search for inbound Brotli request bodies","detail":"Look for Content-Encoding: br (case-insensitive, including inside lists) to Express 5 / body-parser 2.x or similar. This is exposure mapping, not confirmed compromise.","sources":[{"url":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","date":"2026-10-22","publisher":"Imperva"}]},{"title":"Search for crashes and shells under node / bun / python","detail":"Imperva's lab PoC created a marker after processing crafted Brotli. Hunt for unexpected file writes, segfaults mentioning node, and shells started by node.","sources":[{"url":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","date":"2026-10-22","publisher":"Imperva"}]},{"title":"Check outbound fetch paths","detail":"fetch() and Python HTTP clients decode Brotli responses automatically. Review services that fetch user-supplied URLs.","sources":[{"url":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases","date":"2026-10-21","publisher":"Node.js Project"},{"url":"https://www.aikido.dev/blog/python-packages-vulnerable-node2shell-brotli-cve-2026-111497","date":"2026-10-23","publisher":"Aikido"}]}],"queries":[{"id":"v2s-rh-spl-node2shell-br","title":"Inbound Content-Encoding: br since 21 Oct 2026","language":"spl","query":"index=* (sourcetype=access_combined OR sourcetype=nginx* OR sourcetype=haproxy*) earliest=\"10/21/2026:00:00:00\"\n| regex _raw=\"(?i)Content-Encoding:\\s*[^\\r\\n]*\\bbr\\b\"\n| stats count min(_time) as firstTime max(_time) as lastTime by host, clientip, uri\n| convert ctime(firstTime) ctime(lastTime)","logSource":"Reverse-proxy access logs in Splunk","author":"vuln2shell","authorUrl":"https://vuln2shell.com","sourceUrl":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","sourceDate":"2026-10-22","license":"CC0 1.0","origin":"vuln2shell","notes":"Exposure mapping. Most hits are legitimate Brotli clients.","tested":"untested","timeRange":"From 2026-10-21"},{"id":"v2s-rh-kql-node2shell-shell","title":"node / bun spawning a shell since 21 Oct 2026","language":"kql","query":"DeviceProcessEvents\n| where Timestamp >= datetime(2026-10-21)\n| where InitiatingProcessFileName in~ (\"node\", \"node.exe\", \"bun\", \"bun.exe\")\n| where FileName in~ (\"sh\", \"bash\", \"dash\", \"cmd.exe\", \"powershell.exe\", \"pwsh.exe\")\n| project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, FileName, ProcessCommandLine, AccountName","logSource":"Microsoft Defender for Endpoint DeviceProcessEvents","author":"vuln2shell","authorUrl":"https://vuln2shell.com","sourceUrl":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","sourceDate":"2026-10-22","license":"CC0 1.0","origin":"vuln2shell","notes":"Apps that shell out by design will match; filter to servers that never do.","tested":"untested","timeRange":"From 2026-10-21, limited by retention"},{"id":"v2s-rh-logscale-node2shell-shell","title":"node spawning a shell","language":"logscale","query":"// Set the time picker to start 2026-10-21\n#event_simpleName=ProcessRollup2 event_platform=Lin\n| ParentBaseFileName=/^(node|bun)$/i\n| FileName=/^(sh|bash|dash)$/i\n| groupBy([aid, ComputerName, ParentBaseFileName, FileName, CommandLine], limit=max)","logSource":"CrowdStrike Falcon ProcessRollup2 (Linux)","author":"vuln2shell","authorUrl":"https://vuln2shell.com","sourceUrl":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","sourceDate":"2026-10-22","license":"CC0 1.0","origin":"vuln2shell","tested":"untested","timeRange":"From 2026-10-21"},{"id":"v2s-rh-spl-node2shell-crash","title":"node segfaults since 21 Oct 2026","language":"spl","query":"(sourcetype=syslog OR sourcetype=journald OR sourcetype=linux_messages_syslog) earliest=\"10/21/2026:00:00:00\" \"segfault\" TERM(node)\n| stats count min(_time) as firstTime max(_time) as lastTime by host\n| sort - count\n| convert ctime(firstTime) ctime(lastTime)","logSource":"Linux kernel / syslog / journald","author":"vuln2shell","authorUrl":"https://vuln2shell.com","sourceUrl":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","sourceDate":"2026-10-22","license":"CC0 1.0","origin":"vuln2shell","notes":"Crashes have many causes; only investigate when they sit next to Brotli traffic.","tested":"untested","timeRange":"From 2026-10-21"},{"id":"v2s-rh-kql-node2shell-tvm","title":"Hosts still showing CVE-2026-111497","language":"kql","query":"DeviceTvmSoftwareVulnerabilities\n| where CveId == \"CVE-2026-111497\"\n| project DeviceName, OSPlatform, SoftwareVendor, SoftwareName, SoftwareVersion, VulnerabilitySeverityLevel","logSource":"Microsoft Defender Vulnerability Management","author":"vuln2shell","authorUrl":"https://vuln2shell.com","sourceUrl":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases","sourceDate":"2026-10-21","license":"CC0 1.0","origin":"vuln2shell","notes":"Exposure inventory.","tested":"untested","timeRange":"Current inventory"}],"thirdPartyQueries":[{"title":"Imperva Node2Shell analysis","url":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","author":"Imperva Red Team","date":"2026-10-22","language":"guide","license":"public","origin":"vendor","note":"Lab RCE on Node.js 24.22.0; WAF rules are product-only."},{"title":"Patch the Planet: Brotli mitigations","url":"https://patchtheplanet.org/brotli","author":"OpenAI Patch the Planet","date":"2026-10-23","language":"guide","license":"public","origin":"vendor","note":"Disable Brotli decoding until patched."}],"artefacts":[{"kind":"web-log","value":"Inbound Content-Encoding: br to a Node.js / Bun body parser","detail":"Exposure path.","sourceUrl":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","sourceDate":"2026-10-22"},{"kind":"process","value":"node or bun spawning a shell after Brotli traffic","detail":"Possible code execution.","sourceUrl":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","sourceDate":"2026-10-22"},{"kind":"device-log","value":"segfault mentioning node near Brotli traffic","detail":"Possible failed exploitation.","sourceUrl":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","sourceDate":"2026-10-22"}],"iocs":[],"iocNote":"No public ITW IOC list. Imperva's lab PoC used a marker file; that is a lab artefact, not an ITW IOC.","hitMeaning":[{"level":"attempt","detail":"Inbound br traffic or a public-PoC crash with no shell."},{"level":"likely-compromise","detail":"A shell under node/bun right after Brotli traffic on an unpatched host."},{"level":"confirmed-compromise","detail":"Not reported in the wild as of 24 Oct 2026. Treat any shell as a separate investigation."}],"nextSteps":[{"title":"Patch every decoder copy","detail":"Upgrade Node.js, Bun, Envoy/Istio, Python Brotli/brotlicffi and the system libbrotli.","links":[{"label":"Node.js advisory","href":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases"},{"label":"Patch the Planet","href":"https://patchtheplanet.org/brotli"},{"label":"Aikido blast radius","href":"https://www.aikido.dev/blog/python-packages-vulnerable-node2shell-brotli-cve-2026-111497"}]},{"title":"Block Brotli decoding while patching","detail":"Reject Content-Encoding: br before parsers run, and disable automatic Brotli decode in HTTP clients.","links":[{"label":"Patch the Planet","href":"https://patchtheplanet.org/brotli"}]}],"limits":["No ITW exploitation is reported, so most hunts will return only exposure.","Legitimate Brotli traffic is common; do not alert on Content-Encoding: br alone."],"sources":[{"url":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases","date":"2026-10-21","publisher":"Node.js Project"},{"url":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","date":"2026-10-22","publisher":"Imperva"},{"url":"https://patchtheplanet.org/brotli","date":"2026-10-23","publisher":"Patch the Planet"},{"url":"https://www.aikido.dev/blog/python-packages-vulnerable-node2shell-brotli-cve-2026-111497","date":"2026-10-23","publisher":"Aikido"}],"updatedAt":"2026-10-24"},"amIAffected":{"summary":"CVE-2026-111497 is an out-of-bounds write in Google Brotli 1.0.3 through 1.2.0. Node.js disclosed it on 21 Oct 2026. Fixed Node.js builds are 22.23.4, 24.22.1, and 26.12.1. Bun 1.4.4, Envoy 1.40.0 / 1.39.3 / 1.38.6 / 1.37.8, Istio 1.29.9 / 1.30.6 / 1.31.2, and Python Brotli 1.2.1 / brotlicffi 1.2.1.0 are the other listed fixes. Exposure requires decoding untrusted Brotli, not merely compressing outbound data.","checks":[{"id":"v2s-aia-node2shell-version-1","kind":"version","title":"Read Node.js and Bun versions","detail":"Node.js advisory: 26.x, 24.x, and 22.x are affected until the listed builds. EOL lines 20.x, 23.x, 25.x and older receive no Node.js fix.","command":"node --version; bun --version","affectedMeans":"Node 22.x below 22.23.4, 24.x below 24.22.1, 26.x below 26.12.1, or any EOL line (20.x / 23.x / 25.x / older). Bun below 1.4.4.","fixedMeans":"node --version is v22.23.4 or later on 22, v24.22.1 or later on 24, or v26.12.1 or later on 26. bun --version is 1.4.4 or later. Rebuild/redeploy images that pinned older tags.","notes":"Distro Node.js may link system libbrotli (Debian notes this). Check both the runtime and the Brotli package.","sources":[{"url":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases","date":"2026-10-21","publisher":"Node.js Project"},{"url":"https://patchtheplanet.org/brotli","date":"2026-10-23","publisher":"Patch the Planet"}]},{"id":"v2s-aia-node2shell-package-2","kind":"package","title":"Inventory libbrotli, Python Brotli, and Envoy/Istio","detail":"Upstream Brotli 1.0.3 through 1.2.0 is the affected library range. Fixed library builds: 1.0.10, 1.1.1, 1.2.1.","command":"dpkg -l 'libbrotli*' brotli 2>/dev/null; rpm -q brotli 2>/dev/null; pip show Brotli brotlicffi 2>/dev/null; envoy --version 2>/dev/null; istioctl version 2>/dev/null","affectedMeans":"libbrotli / Brotli 1.0.3-1.2.0 (not 1.0.10 / 1.1.1 / 1.2.1); PyPI Brotli below 1.2.1; brotlicffi below 1.2.1.0; Envoy below 1.40.0 / 1.39.3 / 1.38.6 / 1.37.8 on those lines with Brotli decompressor configured; Istio below 1.31.2 / 1.30.6 / 1.29.9 with Brotli decompression enabled.","fixedMeans":"Package versions match the Patch the Planet / vendor tables, or Envoy/Istio Brotli decompressor is confirmed absent (see config check). Debian bookworm 1.0.9-2+deb12u1 and trixie 1.1.0-2+deb13u1 are the listed security packages.","sources":[{"url":"https://patchtheplanet.org/brotli","date":"2026-10-23","publisher":"Patch the Planet"},{"url":"https://github.com/envoyproxy/envoy/security/advisories/GHSA-3wvj-j6qm-62mr","date":"2026-10-23","publisher":"Envoy Proxy"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-111497","date":"2026-10-22","publisher":"NVD / Google CNA"}]},{"id":"v2s-aia-node2shell-config-3","kind":"config","title":"See whether untrusted Brotli is decoded","detail":"Preconditions: inbound Content-Encoding: br reaching Express 5 / body-parser 2.x (or similar), fetch() of untrusted Brotli responses, or Envoy/Istio Brotli decompressor enabled. Compressing outbound responses alone is not the decoder flaw.","command":"Search app and proxy config for Content-Encoding br inflate / brotli decompressor (read-only). Example Envoy: grep -R 'brotli' envoy*.yaml istio-envoyfilter*.yaml","affectedMeans":"An unpatched decoder will inflate attacker-controlled br bodies or responses, or an Envoy/Istio Brotli decompressor filter is enabled.","fixedMeans":"Runtime is patched, or every decoding path rejects br before inflate (Patch the Planet). Envoy/Istio: Brotli decompressor request and response directions disabled or the filter removed.","notes":"Removing br from Accept-Encoding alone is not enough; a server can still send br.","sources":[{"url":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","date":"2026-10-22","publisher":"Imperva"},{"url":"https://patchtheplanet.org/brotli","date":"2026-10-23","publisher":"Patch the Planet"}]},{"id":"v2s-aia-node2shell-exposure-4","kind":"exposure","title":"Map your own Node.js / Next.js internet face (product only)","detail":"No public Node2Shell-specific banner is authoritative. A Next.js component query only shows a common host stack that may embed Node. Scope to your org.","command":"shodan search 'http.component:\"Next.js\" org:\"<your org>\"'","affectedMeans":"A host in your org presents Next.js (or another Node stack you inventory separately). Confirm node --version on that host or image.","fixedMeans":"Matching hosts run a listed fixed Node.js / Bun / image pin, or you have no such public hosts.","notes":"This is not a Brotli-version check. Imperva warns package inventories can miss Node binaries bundled in containers.","sources":[{"url":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases","date":"2026-10-21","publisher":"Node.js Project"},{"url":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","date":"2026-10-22","publisher":"Imperva"}]}],"limits":["Container images and Electron apps can ship a second Brotli/Node copy.","Amazon Linux lists firefox/thunderbird as not affected for its own packages only.","Do not send crafted Brotli bodies to test the decoder."],"sources":[{"url":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases","date":"2026-10-21","publisher":"Node.js Project"},{"url":"https://patchtheplanet.org/brotli","date":"2026-10-23","publisher":"Patch the Planet"},{"url":"https://github.com/envoyproxy/envoy/security/advisories/GHSA-3wvj-j6qm-62mr","date":"2026-10-23","publisher":"Envoy Proxy"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-111497","date":"2026-10-22","publisher":"NVD / Google CNA"},{"url":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","date":"2026-10-22","publisher":"Imperva"}],"updatedAt":"2026-10-24","addedDate":"2026-10-24"},"mitigations":{"summary":"The Node.js advisory points to upgrading. Envoy, Istio, and Patch the Planet document disabling Brotli decompression as a bridge until every decoder copy is patched.","items":[{"title":"Reject inbound Content-Encoding: br before any parser decodes it","detail":"Patch the Planet: reject requests with Content-Encoding: br before proxy, middleware, or body-parser decompression. Keep gzip/deflate if needed. Imperva/Aikido describe the same inbound path through Express 5 / body-parser 2.x.","limits":"Does not replace patching. A proxy that decodes first still hits a vulnerable decoder. Stacked encodings such as gzip, br must be rejected too. Request-size limits and WAF rules alone do not cover every path.","verify":"From a trusted admin host, inspect config for a pre-parser guard that allows only identity/gzip/deflate. Confirm inflate:false on body parsers if the guard cannot run first. Do not send a crafted br payload.","source":{"url":"https://patchtheplanet.org/brotli","date":"2026-10-23","publisher":"Patch the Planet"}},{"title":"Disable automatic Brotli decompression in HTTP clients","detail":"Patch the Planet: reject Brotli responses before decoding. Removing br from Accept-Encoding alone does not stop a server from sending it.","limits":"Must be applied to every fetch/urllib3/requests path that can reach untrusted URLs. Checking headers after a normal fetch() body read can be too late.","verify":"Read client config for decode_content=false / preload_content=false (urllib3 example on Patch the Planet) and confirm Content-Encoding is checked before read.","source":{"url":"https://patchtheplanet.org/brotli","date":"2026-10-23","publisher":"Patch the Planet"}},{"title":"Disable the Envoy/Istio Brotli decompressor in both directions","detail":"Envoy impact: deployments that have the Brotli decompressor configured. Patch the Planet: set request_direction_config and response_direction_config enabled default_value false, remove runtime_key overrides, or remove the Brotli decompressor filter. Keep separate gzip/zstd filters. Istio: edit the EnvoyFilter that inserts the Brotli filter.","limits":"A disabled filter passes encoded bytes onward. Downstream app decoders must also reject br. Envoy 1.36.12 includes the fix but 1.36 is unsupported.","verify":"Dump the effective Envoy/Istio config on each gateway and sidecar and confirm no enabled Brotli decompressor_library remains.","source":{"url":"https://patchtheplanet.org/brotli","date":"2026-10-23","publisher":"Patch the Planet"}},{"title":"Next.js: set images.unoptimized until Node.js is patched","detail":"Patch the Planet: if you cannot update Node.js immediately, set images.unoptimized globally so the built-in image optimizer does not fetch and decode remote images.","limits":"Does not protect other server-side fetches, custom loaders, or other Brotli decoders. Images are served from source URLs.","verify":"After rebuild, confirm next.config has images.unoptimized true and that /_next/image is not running the optimizer.","source":{"url":"https://patchtheplanet.org/brotli","date":"2026-10-23","publisher":"Patch the Planet"}}],"updatedAt":"2026-10-24","addedDate":"2026-10-24"},"response":{"summary":"Upgrade every Brotli decoder copy and redeploy images. There is no public in-the-wild exploitation report as of 24 Oct 2026, so persistence below is empty. Rotate secrets only if you have other evidence of compromise.","containment":[{"title":"Upgrade every decoder copy and restart or redeploy","detail":"Patch the Planet: update runtime and image pins, rebuild containers, restart every service, worker, scheduled job, and replica still on the old build.","sources":[{"url":"https://patchtheplanet.org/brotli","date":"2026-10-23","publisher":"Patch the Planet"},{"url":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases","date":"2026-10-21","publisher":"Node.js Project"}]},{"title":"If a node/bun process spawned a shell after Brotli traffic, isolate that host","detail":"Standard IR. Imperva's lab PoC ran code inside the Node.js process. No public ITW confirmation as of 24 Oct 2026.","generic":true,"sources":[{"url":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","date":"2026-10-22","publisher":"Imperva"}]}],"rotate":[{"item":"Secrets resident in a Node.js / Bun / Envoy process that decoded untrusted Brotli, if you have evidence of memory disclosure or code execution","reason":"Google CNA: crafted Brotli can disclose memory or potentially execute code. Rotate when host evidence supports that, not because a decoder is merely unpatched.","generic":true,"sources":[{"url":"https://www.cve.org/CVERecord?id=CVE-2026-111497","date":"2026-10-22","publisher":"Google CNA"}]}],"evidence":[{"title":"Reverse-proxy logs showing inbound Content-Encoding: br","detail":"Exposure mapping. Most hits are legitimate Brotli clients. Preserve access logs from 21 Oct 2026 (public disclosure).","sources":[{"url":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","date":"2026-10-22","publisher":"Imperva"}]},{"title":"Node/bun segfaults and child shells","detail":"Imperva: unexpected process exits during decompression may help prioritise investigation but are not a stand-alone sign. Preserve syslog/journald and EDR.","sources":[{"url":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","date":"2026-10-22","publisher":"Imperva"}]}],"sources":[{"url":"https://patchtheplanet.org/brotli","date":"2026-10-23","publisher":"Patch the Planet"},{"url":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases","date":"2026-10-21","publisher":"Node.js Project"},{"url":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","date":"2026-10-22","publisher":"Imperva"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-111497","date":"2026-10-22","publisher":"Google CNA"}],"updatedAt":"2026-10-24","addedDate":"2026-10-24"},"bulletins":[{"vendor":"Imperva","title":"Node2Shell: from Brotli data to remote code execution","url":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","date":"2026-10-22","cve":"CVE-2026-111497"},{"vendor":"Envoy Proxy","title":"Out-of-Bounds Write in Brotli Decompressor (GHSA-3wvj-j6qm-62mr)","url":"https://github.com/envoyproxy/envoy/security/advisories/GHSA-3wvj-j6qm-62mr","date":"2026-10-23","cve":"CVE-2026-111497"},{"vendor":"Istio","title":"ISTIO-SECURITY-2026-007","url":"https://istio.io/latest/news/security/istio-security-2026-007/","date":"2026-10-15","cve":"CVE-2026-111497"},{"vendor":"Vercel","title":"Node.js security advisory: Brotli decoder RCE (WAF rules)","url":"https://vercel.com/kb/bulletin/node-js-security-advisory","date":"2026-10-21","cve":"CVE-2026-111497"},{"vendor":"Red Hat","title":"CVE-2026-111497","url":"https://access.redhat.com/security/cve/CVE-2026-111497","date":"2026-10-23","cve":"CVE-2026-111497"},{"vendor":"Debian","title":"DSA-6582-1 / DLA-4855-1 brotli","url":"https://security-tracker.debian.org/tracker/CVE-2026-111497","date":"2026-10-23","cve":"CVE-2026-111497"}],"coverage":[{"title":"Brotli vulnerability (CVE-2026-111497)","publisher":"Patch the Planet (OpenAI)","url":"https://patchtheplanet.org/brotli","date":"2026-10-23","type":"vendor","addedDate":"2026-10-24"},{"title":"Node2Shell evolves to HTTP2Shell: Brotli blast radius","publisher":"Aikido","url":"https://www.aikido.dev/blog/python-packages-vulnerable-node2shell-brotli-cve-2026-111497","date":"2026-10-23","type":"research","addedDate":"2026-10-24"},{"title":"Researchers Demonstrate Node2Shell RCE Exploit on Node.js Build","publisher":"The Hacker News","url":"https://thehackernews.com/2026/10/researchers-demonstrate-node2shell-rce.html","date":"2026-10-22","type":"news","addedDate":"2026-10-24"},{"title":"OpenAI resumes frontier AI training ... discloses flaw in widely used software","publisher":"CNA (Reuters)","url":"https://www.channelnewsasia.com/business/openai-resumes-frontier-ai-training-after-security-overhaul-discloses-flaw-in-widely-used-software-6487981","date":"2026-10-23","type":"news","addedDate":"2026-10-24"},{"title":"One Compressed Request, No Login: Inside Node2Shell","publisher":"Miggo","url":"https://www.miggo.io/post/node2shell-cve-2026-111497-nodejs-vulnerability","date":"2026-10-23","type":"research","addedDate":"2026-10-24"},{"title":"Wednesday, October 21, 2026 Security Releases","publisher":"Node.js Project","url":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases","date":"2026-10-21","type":"vendor"},{"title":"Node2Shell: From Brotli Data to Remote Code Execution","publisher":"Imperva","url":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","date":"2026-10-22","type":"research"},{"title":"Node2Shell: Node.js Brotli vulnerability allows remote code execution","publisher":"Aikido","url":"https://www.aikido.dev/blog/node2shell-nodejs-brotli-rce-cve-2026-111497","date":"2026-10-22","type":"research"},{"title":"Node2Shell: Node.js Brotli RCE (CVE-2026-111497)","publisher":"pwn.watch","url":"https://pwn.watch/i/nodejs-october-2026-security-releases","date":"2026-10-21","type":"news"}],"posts":[],"research":[{"title":"Node.js October 2026 security releases","url":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases","authors":"Node.js Project","date":"2026-10-21"},{"title":"NVD CVE-2026-111497","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-111497","authors":"NVD / Google CNA","date":"2026-10-22"},{"title":"Imperva Node2Shell analysis","url":"https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/","authors":"Ron Masas, Imperva Red Team","date":"2026-10-22"},{"title":"Aikido Node2Shell guidance","url":"https://www.aikido.dev/blog/node2shell-nodejs-brotli-rce-cve-2026-111497","authors":"Sooraj Shah","date":"2026-10-22"},{"title":"CVE Record CVE-2026-111497 (credits OpenAI Codex Security: Khai Tran and Sylvie Mayer)","url":"https://www.cve.org/CVERecord?id=CVE-2026-111497","authors":"Google CNA","date":"2026-10-22"},{"title":"Patch the Planet: Brotli","url":"https://patchtheplanet.org/brotli","authors":"OpenAI Patch the Planet","date":"2026-10-23"},{"title":"Miggo: tracing the bug back to Brotli 1.0.3 (2018)","url":"https://www.miggo.io/post/node2shell-cve-2026-111497-nodejs-vulnerability","authors":"Miggo security team","date":"2026-10-23"},{"title":"Node2Shell evolves to HTTP2Shell. Brotli flaw (CVE-2026-111497) blast radius","url":"https://www.aikido.dev/blog/python-packages-vulnerable-node2shell-brotli-cve-2026-111497","authors":"Aikido (Dania Durnas)","date":"2026-10-23"},{"title":"oss-security: Re: Upcoming Node.js security release 2026/10/21","url":"https://www.openwall.com/lists/oss-security/2026/10/23/25","authors":"Jan Schaumann","date":"2026-10-23"}],"impact":{"kind":"shared-component","component":"Google Brotli decoder (libbrotli and every bundled copy: Node.js, Bun, Envoy/Istio, Python Brotli/brotlicffi)","matrixNote":"Distro packages of Node.js may link the system Brotli library. Check both the Node.js version and the Brotli package. Debian marks its nodejs as using the system brotli; Red Hat bugzilla comments say RHEL 8 nodejs:24 bundles its own copy. Check both.","downstream":[{"product":"Node.js 26.x","vendor":"Node.js Project","type":"cloud-container-hosting","status":"affected","versions":"26.12.1","vendorStatement":{"date":"21 Oct 2026","url":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases","quote":"Node.js Brotli decoder out-of-bounds write permits remote code execution (CVE-2026-111497) - (high). Downloads: Node.js v26.12.1."}},{"product":"Node.js 24.x","vendor":"Node.js Project","type":"cloud-container-hosting","status":"affected","versions":"24.22.1","vendorStatement":{"date":"21 Oct 2026","url":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases","quote":"Affects Node.js 26.x, 24.x, and 22.x. Fixed in Node.js v24.22.1."}},{"product":"Node.js 22.x","vendor":"Node.js Project","type":"cloud-container-hosting","status":"affected","versions":"22.23.4","vendorStatement":{"date":"21 Oct 2026","url":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases","quote":"Affects Node.js 26.x, 24.x, and 22.x. Fixed in Node.js v22.23.4."}},{"product":"Node.js 20.x / 23.x / 25.x (EOL)","vendor":"Node.js Project","type":"cloud-container-hosting","notes":"Upgrade to 22.23.4, 24.22.1, or 26.12.1.","status":"affected","versions":"No fix (upgrade to a supported line)","vendorStatement":{"date":"21 Oct 2026","url":"https://nodejs.org/en/blog/vulnerability/october-2026-security-releases","quote":"It's important to note that End-of-Life versions are always affected when a security release occurs."}},{"product":"Bun","vendor":"Oven","type":"cloud-container-hosting","status":"affected","versions":"1.4.4","vendorStatement":{"date":"22 Oct 2026","url":"https://bun.com/blog/bun-v1.4.4","quote":"This release includes security fixes for TLS, WebSocket, the database clients and the package manager. These protocols, APIs and commands are affected: TLS, HTTP/1.1, HTTP/2, HTTP/3, WebSocket, Brotli, ..."}},{"product":"Google Brotli library","vendor":"Google","type":"cloud-container-hosting","status":"affected","versions":"1.0.10 / 1.1.1 / 1.2.1","vendorStatement":{"date":"22 Oct 2026","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-111497","quote":"Users need to update any Brotli libraries or binaries between 1.0.3 through 1.2.0 to the latest available version: 1.0.10 or 1.1.1 or 1.2.1."}},{"product":"Envoy","vendor":"Envoy Proxy","type":"network-security","notes":"1.36.12 is listed as patched but unsupported.","status":"affected","versions":"1.40.0 / 1.39.3 / 1.38.6 / 1.37.8","vendorStatement":{"date":"23 Oct 2026","url":"https://github.com/envoyproxy/envoy/security/advisories/GHSA-3wvj-j6qm-62mr","quote":"Envoy deployments that have Brotli decompressor configured. Patched versions v1.40.0, v1.39.3, v1.38.6, v1.37.8, v1.36.12."},"addedDate":"2026-10-24"},{"product":"Istio","vendor":"Istio","type":"network-security","notes":"1.29 is end of life.","status":"affected","versions":"1.31.2 / 1.30.6 / 1.29.9","vendorStatement":{"date":"15 Oct 2026 (as dated on the bulletin)","url":"https://istio.io/latest/news/security/istio-security-2026-007/","quote":"CVE-2026-111497: Fixed a vulnerability in the Brotli compression library used by Envoy. Users who enable Brotli decompression, for example with an EnvoyFilter, should upgrade."},"addedDate":"2026-10-24"},{"product":"Python Brotli (PyPI)","vendor":"Google Brotli","type":"cloud-container-hosting","notes":"PyPI 1.2.1 uploaded 22 Oct 2026. Aikido (23 Oct) says urllib3, requests, httpx and aiohttp decode Brotli automatically when it is installed.","status":"affected","versions":"1.2.1","vendorStatement":{"date":"22 Oct 2026","url":"https://github.com/advisories/GHSA-9v8h-qqgm-4m35","quote":"Users need to update any Brotli libraries or binaries between 1.0.3 through 1.2.0 to the latest available version: 1.0.10 or 1.1.1 or 1.2.1."},"addedDate":"2026-10-24"},{"product":"brotlicffi (PyPI)","vendor":"python-hyper","type":"cloud-container-hosting","notes":"PyPI 1.2.1.0 uploaded 22 Oct 2026.","status":"affected","versions":"1.2.1.0","vendorStatement":{"date":"22 Oct 2026","url":"https://github.com/pypa/advisory-database/blob/main/vulns/brotlicffi/PYSEC-2026-4323.yaml","quote":"PYSEC-2026-4323: CVE-2026-111497 mapped to brotlicffi."},"addedDate":"2026-10-24"},{"product":"Debian brotli","vendor":"Debian","type":"linux-distro","notes":"bookworm 1.0.9-2+deb12u1 (DLA-4855-1); trixie 1.1.0-2+deb13u1 (DSA-6582-1); forky/sid unfixed. Debian bug 1151690 tracks sid. The tracker lists nodejs as vulnerable in every release but marks it unimportant because Debian's nodejs uses the system brotli library.","status":"affected","versions":"1.0.9-2+deb12u1 / 1.1.0-2+deb13u1","vendorStatement":{"date":"24 Oct 2026 (tracker checked)","url":"https://security-tracker.debian.org/tracker/CVE-2026-111497","quote":"brotli bookworm (security) 1.0.9-2+deb12u1 fixed; trixie (security) 1.1.0-2+deb13u1 fixed; forky, sid 1.2.0-4 vulnerable. Note: nodejs uses system provided brotli library."},"addedDate":"2026-10-24"},{"product":"Ubuntu brotli / nodejs","vendor":"Canonical","type":"linux-distro","status":"under-investigation","versions":"No fix listed yet","vendorStatement":{"date":"23 Oct 2026","url":"https://ubuntu.com/security/CVE-2026-111497","quote":"Ubuntu priority: Medium. brotli (16.04 to 26.10) and nodejs (14.04 to 26.10): Needs evaluation."},"addedDate":"2026-10-24"},{"product":"Red Hat (RHEL brotli and bundled copies)","vendor":"Red Hat","type":"linux-distro","notes":"RHEL 8/9/10 brotli and nodejs:24/26: fixes pending. Red Hat Hardened Images brotli fixed in brotli-main-1.2.1-0.1.hum1 (RHSA-2026:87420, 21 Oct 2026). Rated Important (CVSS 3.1 8.1).","status":"affected","versions":"No fix listed yet","vendorStatement":{"date":"23 Oct 2026","url":"https://access.redhat.com/security/cve/CVE-2026-111497","quote":"This issue is rated Important ... there is no public, reliable remote code execution proof-of-concept. Bugzilla 2558973 tracks 24 product trackers."},"addedDate":"2026-10-24"},{"product":"Amazon Linux brotli / nodejs24","vendor":"Amazon","type":"linux-distro","status":"affected","versions":"Pending Fix (AL2023 and AL2027 Preview); nodejs and nodejs20 on AL2023: No Fix Planned","vendorStatement":{"date":"22 Oct 2026","url":"https://explore.alas.aws.amazon.com/CVE-2026-111497.html","quote":"brotli: Pending Fix. nodejs24: Pending Fix. nodejs, nodejs20: No Fix Planned. firefox, thunderbird, nodejs22: Not Affected."},"addedDate":"2026-10-24"},{"product":"Firefox / Thunderbird (Amazon Linux builds)","vendor":"Amazon","type":"linux-distro","notes":"Amazon's statement covers its own packages only. No Mozilla statement yet.","status":"vendor-stated-not-affected","versions":"n/a","vendorStatement":{"date":"22 Oct 2026","url":"https://explore.alas.aws.amazon.com/CVE-2026-111497.html","quote":"Amazon Linux 2 - Firefox Extra firefox: Not Affected; Amazon Linux 2023 firefox: Not Affected; Amazon Linux 2 - Core thunderbird: Not Affected."},"addedDate":"2026-10-24"},{"product":"Vercel managed Node.js runtimes","vendor":"Vercel","type":"cloud-container-hosting","status":"affected","versions":"Patch rolling out; WAF rules deployed 21 Oct 2026","vendorStatement":{"date":"21 Oct 2026","url":"https://vercel.com/kb/bulletin/node-js-security-advisory","quote":"Vercel deployed WAF rules the same day that block the inbound attack vector for every project on Vercel. We are also rolling the patched Node.js versions across Vercel's managed runtimes."},"addedDate":"2026-10-24"},{"product":"curl / libcurl","vendor":"curl project","type":"cms-app","notes":"No curl advisory names CVE-2026-111497 (curl.se security page checked 24 Oct 2026). curl security team member Harry Sintonen said on 23 Oct 2026 that curl only decompresses with --compressed or when CURLOPT_ACCEPT_ENCODING is set, and to install the brotli security update: https://infosec.exchange/@harrysintonen/117489623484794998","status":"no-statement-yet","vendorStatement":{"date":"Checked 24 Oct 2026","url":"https://curl.se/docs/security.html"},"addedDate":"2026-10-24"},{"product":"Google Chrome / Chromium","vendor":"Google","type":"cms-app","notes":"No statement yet. Chrome Releases blog checked 24 Oct 2026 does not name CVE-2026-111497.","status":"no-statement-yet","vendorStatement":{"date":"Checked 24 Oct 2026","url":"https://chromereleases.googleblog.com/"},"addedDate":"2026-10-24"},{"product":"Mozilla Firefox (upstream)","vendor":"Mozilla","type":"cms-app","notes":"No Mozilla statement yet (advisories page checked 24 Oct 2026). Amazon Linux lists its firefox builds as Not Affected; see that row.","status":"no-statement-yet","vendorStatement":{"date":"Checked 24 Oct 2026","url":"https://www.mozilla.org/en-US/security/advisories/"},"addedDate":"2026-10-24"},{"product":"nginx with ngx_brotli","vendor":"Google (ngx_brotli)","type":"network-security","notes":"No statement yet. ngx_brotli compresses responses. Aikido (23 Oct 2026) says Apache and nginx do not decode Brotli by default.","status":"no-statement-yet","vendorStatement":{"date":"Checked 24 Oct 2026","url":"https://github.com/google/ngx_brotli"},"addedDate":"2026-10-24"},{"product":"Apache httpd mod_brotli","vendor":"Apache Software Foundation","type":"network-security","notes":"No statement yet. Aikido (23 Oct 2026) says standard mod_brotli does not decode Brotli.","status":"no-statement-yet","vendorStatement":{"date":"Checked 24 Oct 2026","url":"https://httpd.apache.org/security/vulnerabilities_24.html"},"addedDate":"2026-10-24"},{"product":"OpenJDK / Java Brotli bindings","vendor":"OpenJDK","type":"cms-app","notes":"No statement yet.","status":"no-statement-yet","vendorStatement":{"date":"Checked 24 Oct 2026","url":"https://openjdk.org/groups/vulnerability/advisories/"},"addedDate":"2026-10-24"},{"product":"Git (via libcurl)","vendor":"Git project","type":"cms-app","notes":"No statement yet from the Git project. Harry Sintonen (23 Oct 2026) says git enables compression support in libcurl.","status":"no-statement-yet","vendorStatement":{"date":"Checked 24 Oct 2026","url":"https://github.com/git/git/security/advisories"},"addedDate":"2026-10-24"},{"product":"Cloudflare","vendor":"Cloudflare","type":"cloud-container-hosting","notes":"No statement yet found for CVE-2026-111497.","status":"no-statement-yet","vendorStatement":{"date":"Checked 24 Oct 2026","url":"https://blog.cloudflare.com/"},"addedDate":"2026-10-24"},{"product":"Akamai","vendor":"Akamai","type":"cloud-container-hosting","notes":"No statement yet found for CVE-2026-111497.","status":"no-statement-yet","vendorStatement":{"date":"Checked 24 Oct 2026","url":"https://www.akamai.com/blog/security-research"},"addedDate":"2026-10-24"},{"product":"Fastly","vendor":"Fastly","type":"cloud-container-hosting","notes":"No statement yet found for CVE-2026-111497.","status":"no-statement-yet","vendorStatement":{"date":"Checked 24 Oct 2026","url":"https://www.fastly.com/security-advisories"},"addedDate":"2026-10-24"},{"product":"SUSE Linux Enterprise / openSUSE Leap nodejs22 and nodejs24","vendor":"SUSE","type":"linux-distro","notes":"nodejs22 22.23.4-150700.3.21.1 (SLES 15 SP7) and 22.23.4-150600.13.27.1 (SLES 15 SP6-LTSS) in QA; nodejs24 and SLES 16 / Leap 16 packages: Analysis. SUSE Bugzilla 1286564. The page lists nodejs packages only; no SUSE brotli package row was shown when checked 24 Oct 2026.","status":"affected","versions":"22.23.4-150700.3.21.1 / 22.23.4-150600.13.27.1","vendorStatement":{"date":"22 Oct 2026 (page last modified)","url":"https://www.suse.com/security/cve/CVE-2026-111497.html","quote":"Overall state of this security issue: New. This issue is currently rated as having moderate severity."},"addedDate":"2026-10-24"},{"product":"Alpine Linux brotli / nodejs-current","vendor":"Alpine Linux","type":"linux-distro","notes":"brotli 1.2.1-r0 (edge, 3.24, 3.23); brotli 1.1.1-r0 (3.21); nodejs-current 26.12.1-r0 (edge community). Alpine 3.22 had no entry on the tracker when checked.","status":"affected","versions":"1.2.1-r0 / 1.1.1-r0 / 26.12.1-r0","vendorStatement":{"date":"24 Oct 2026 (tracker checked)","url":"https://security.alpinelinux.org/vuln/CVE-2026-111497","quote":"fixed: brotli 1.2.1-r0 (edge-main, 3.24-main, 3.23-main); brotli 1.1.1-r0 (3.21-main); nodejs-current 26.12.1-r0 (edge-community)"},"addedDate":"2026-10-24"},{"product":"Gentoo app-arch/brotli","vendor":"Gentoo","type":"linux-distro","status":"affected","versions":"No fix listed yet","vendorStatement":{"date":"22 Oct 2026","url":"https://bugs.gentoo.org/show_bug.cgi?id=984680","quote":"[Tracker] Out of bounds write in app-arch/brotli. Status: CONFIRMED. Tracker because bundled in node."},"addedDate":"2026-10-24"},{"product":"Homebrew brotli formula","vendor":"Homebrew","type":"linux-distro","notes":"Merged 22 Oct 2026. Run brew upgrade brotli.","status":"affected","versions":"1.2.1","vendorStatement":{"date":"22 Oct 2026","url":"https://github.com/Homebrew/homebrew-core/pull/320168","quote":"brotli 1.2.1. Release notes: SECURITY - CVE-2026-111497: out-of-bounds write permits remote code execution"},"addedDate":"2026-10-24"},{"product":"vcpkg brotli port","vendor":"Microsoft vcpkg","type":"cloud-container-hosting","notes":"Merged 24 Oct 2026 00:02 UTC (08:02 SGT). C/C++ projects that build Brotli through vcpkg need to update the baseline and rebuild.","status":"affected","versions":"1.2.1","vendorStatement":{"date":"24 Oct 2026","url":"https://github.com/microsoft/vcpkg/pull/54566","quote":"[brotli] Update to 1.2.1. CVE Fix: https://github.com/google/brotli/releases/tag/v1.2.1"},"addedDate":"2026-10-24"},{"product":"Red Hat OpenShift Service Mesh 3 (istio-proxy)","vendor":"Red Hat","type":"network-security","status":"affected","versions":"No fix listed yet","vendorStatement":{"date":"24 Oct 2026 (CVE data checked)","url":"https://access.redhat.com/security/cve/CVE-2026-111497","quote":"OpenShift Service Mesh 3, istio-proxy: Affected"},"addedDate":"2026-10-24"},{"product":"Red Hat JBoss Core Services httpd (jbcs-httpd24-brotli)","vendor":"Red Hat","type":"network-security","notes":"Red Hat lists the Brotli package shipped with its httpd build. Exposure depends on whether anything in that stack decodes untrusted Brotli.","status":"affected","versions":"No fix listed yet","vendorStatement":{"date":"24 Oct 2026 (CVE data checked)","url":"https://access.redhat.com/security/cve/CVE-2026-111497","quote":"Red Hat JBoss Core Services, jbcs-httpd24-brotli: Affected"},"addedDate":"2026-10-24"},{"product":"Red Hat OpenShift Container Platform 4 (RHCOS images)","vendor":"Red Hat","type":"cloud-container-hosting","status":"affected","versions":"No fix listed yet","vendorStatement":{"date":"24 Oct 2026 (CVE data checked)","url":"https://access.redhat.com/security/cve/CVE-2026-111497","quote":"OpenShift Container Platform 4, openshift/ose-rhel-coreos-8 and openshift/ose-rhel-coreos-9: Affected"},"addedDate":"2026-10-24"},{"product":"Red Hat layered products with Python Brotli (Ansible Automation Platform 2, Satellite 6, Update Infrastructure 4, OpenShift AI)","vendor":"Red Hat","type":"cloud-container-hosting","status":"affected","versions":"No fix listed yet","vendorStatement":{"date":"24 Oct 2026 (CVE data checked)","url":"https://access.redhat.com/security/cve/CVE-2026-111497","quote":"Affected: AAP 2 python3.11-brotli, python3.12-brotli, python3x-brotli and controller/ee-supported images; Satellite 6 python-brotli, python3.12-brotli; RHUI 4 python-brotli; RHOAI odh-mlserver images."},"addedDate":"2026-10-24"},{"product":"Red Hat Hardened Images brotli","vendor":"Red Hat","type":"cloud-container-hosting","notes":"Package brotli-main-1.2.1-0.1.hum1 (RHSA-2026:87420, 21 Oct 2026).","status":"affected","versions":"1.2.1-0.1.hum1","vendorStatement":{"date":"21 Oct 2026","url":"https://access.redhat.com/security/cve/CVE-2026-111497","quote":"Red Hat Hardened Images: brotli-main-1.2.1-0.1.hum1, RHSA-2026:87420"},"addedDate":"2026-10-24"},{"product":"RHEL Firefox / Thunderbird (Red Hat builds)","vendor":"Red Hat","type":"cms-app","notes":"Differs from Amazon Linux, which says its firefox and thunderbird builds are Not Affected. Mozilla upstream: no statement yet.","status":"affected","versions":"No fix listed yet","vendorStatement":{"date":"24 Oct 2026 (CVE data checked)","url":"https://access.redhat.com/security/cve/CVE-2026-111497","quote":"firefox: Affected (RHEL 7, 8, 9, 10). thunderbird: Affected (RHEL 8, 9, 10)."},"addedDate":"2026-10-24"},{"product":"Red Hat products stated not affected","vendor":"Red Hat","type":"linux-distro","status":"vendor-stated-not-affected","versions":"n/a","vendorStatement":{"date":"24 Oct 2026 (CVE data checked)","url":"https://access.redhat.com/security/cve/CVE-2026-111497","quote":"Not affected: RHEL 8 mozjs60; RHEL 9/10 goose and trustee; RHEL 9 keylime-agent-rust; RHEL AI 3 rust; Logging Subsystem vector; Connectivity Link limitador; AAP automation-controller and automation-dashboard; Satellite iop images; Trusted Profile Analyzer images; OpenShift Update Service; Confidential Compute Attestation trustee."},"addedDate":"2026-10-24"},{"product":"Brotli4j (Java bindings)","vendor":"Brotli4j project","type":"cloud-container-hosting","notes":"Fix merged 23 Oct 2026 (Brotli 1.2.1); no release yet (latest release v1.23.0, 26 Apr 2026). PR by a contributor, merged into the project on 23 Oct 2026 21:45 UTC. Watch https://github.com/hyperxpro/Brotli4j/releases for the release.","status":"affected","versions":"No fix listed yet","vendorStatement":{"date":"23 Oct 2026","url":"https://github.com/hyperxpro/Brotli4j/pull/273","quote":"Upgrade brotli to 1.2.1 to resolve cve-2026-111497"},"addedDate":"2026-10-24"},{"product":"Apache Arrow C++ (bundled Brotli build)","vendor":"Apache Arrow","type":"cloud-container-hosting","notes":"Open issue (23 Oct 2026) filed by a non-maintainer says cpp/thirdparty/versions.txt pins Brotli v1.0.9 for bundled builds. No maintainer response when checked.","status":"no-statement-yet","versions":"None","vendorStatement":{"date":"Checked 24 Oct 2026","url":"https://github.com/apache/arrow/issues/55166"},"addedDate":"2026-10-24"},{"product":"DuckDB (vendored Brotli)","vendor":"DuckDB","type":"cloud-container-hosting","notes":"Issue (22 Oct) and contributor PR #27791 (23 Oct, open) port the upstream fix into third_party/brotli (1.1.0). The issue notes DuckDB assumes files come from trusted writers. No maintainer statement when checked.","status":"no-statement-yet","versions":"None","vendorStatement":{"date":"Checked 24 Oct 2026","url":"https://github.com/duckdb/duckdb/issues/27660"},"addedDate":"2026-10-24"},{"product":"PHP brotli extension (kjdev/php-ext-brotli)","vendor":"php-ext-brotli project","type":"cms-app","notes":"Contributor PR (22 Oct 2026, open) updates the bundled Brotli submodule to v1.2.1, citing CVE-2026-111497.","status":"no-statement-yet","versions":"None","vendorStatement":{"date":"Checked 24 Oct 2026","url":"https://github.com/kjdev/php-ext-brotli/pull/105"},"addedDate":"2026-10-24"},{"product":"Electron","vendor":"Electron","type":"cms-app","notes":"Release notes for v45.0.0, v44.9.3, v43.8.3, v42.11.18 (21 Oct) and v46.0.0-alpha.1 (23 Oct) do not mention Brotli or the CVE. Patch the Planet says Electron apps can carry several Brotli copies (Chromium and Node.js).","status":"no-statement-yet","versions":"None","vendorStatement":{"date":"Checked 24 Oct 2026","url":"https://github.com/electron/electron/releases"},"addedDate":"2026-10-24"},{"product":"Deno","vendor":"Deno","type":"cloud-container-hosting","notes":"v2.9.8 (21 Oct 2026) release notes do not mention Brotli or CVE-2026-111497.","status":"no-statement-yet","versions":"None","vendorStatement":{"date":"Checked 24 Oct 2026","url":"https://github.com/denoland/deno/releases"},"addedDate":"2026-10-24"},{"product":"Python HTTP clients that auto-decode Brotli (urllib3/requests, httpx, aiohttp, Scrapy)","vendor":"Various","type":"cloud-container-hosting","notes":"Fix is in Brotli 1.2.1 / brotlicffi 1.2.1.0, not in the clients. PYSEC-2026-4323 (23 Oct) says these clients decode Brotli automatically when brotlicffi is installed. A urllib3 maintainer declined a version-pin PR on 23 Oct ('dependency ranges aren't for fixing vulnerabilities'): https://github.com/urllib3/urllib3/pull/5333. An aiohttp PR to require Brotli 1.2.1 is open: https://github.com/aio-libs/aiohttp/pull/14118.","status":"no-statement-yet","versions":"None","vendorStatement":{"date":"Checked 24 Oct 2026","url":"https://github.com/pypa/advisory-database/blob/main/vulns/brotlicffi/PYSEC-2026-4323.yaml"},"addedDate":"2026-10-24"}]},"pocs":[{"title":"dimasma0305/CVE-2026-111497-POC","url":"https://github.com/dimasma0305/CVE-2026-111497-POC","source":"GitHub","validationStatus":"unverified","validationDate":null,"notes":"Public since 22 Oct 2026. The README (read 24 Oct 2026) reports DoS on stock Node.js 20.19.5, 22.23.3, 24.9.0, 24.22.0 and 26.12.0. It claims RCE only in exact-profile labs (one binary, one worker, a restart supervisor and a probabilistic ASLR guess). The Hacker News (22 Oct) reported an earlier version reached RCE only on a weakened build. Not validated by vuln2shell. No exploit detail here.","addedDate":"2026-10-24"},{"title":"ikow/brotli2crash (analysis, disputes RCE reachability)","url":"https://github.com/ikow/brotli2crash","source":"GitHub","validationStatus":"unverified","validationDate":null,"notes":"Analysis repo that argues RCE is structurally unreachable. Its claim conflicts with Imperva's demo on the official Node.js 24.22.0 image. Listed for completeness, not validated.","addedDate":"2026-10-24"}],"_feed":{"page":"https://vuln2shell.com/vulns/node2shell","json":"https://vuln2shell.com/vulns/node2shell.json","iocsCsv":"https://vuln2shell.com/vulns/node2shell/iocs.csv","stix":"https://vuln2shell.com/vulns/node2shell/stix.json"}}