[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fGxqtJlAgF-gtwi8dPS0nGVnQxkCw8MCmwMrZ-LVtwwE":3},{"article":4,"iocs":54,"watch_terms":59,"solutions":60,"lesson":154},{"id":5,"title":6,"slug":7,"summary":8,"ai_summary":9,"brief":10,"url":11,"image_url":12,"published_at":13,"ingested_at":14,"relevance_score":15,"entities":16,"category_id":31,"category":32,"article_tags":36},"ab839f8c-5f58-407f-a513-20b78ddb480c","Brotli2Shell: Frequently asked questions for Google Brotli decoder vulnerability (CVE-2026-111497)","brotli2shell-frequently-asked-questions-for-google-brotli-decoder-vulnerability-e74144","Researchers have demonstrated remote code execution through CVE-2026-111497, an out-of-bounds write in Google's Brotli decoder library, and public proofs-of-concept (PoCs) are available. Software that uses the decoder includes Node.js, .NET, Bun, Envoy Proxy, Istio, Python HTTP clients and PHP for Windows. Key Takeaways CVE-2026-111497, known as Brotli2Shell and by several other names, is an out-of-bounds write in Google's Brotli decoder library that Google, the CVE Numbering Authority (CNA), scored 9.2 under CVSSv4.0. Any application that decompresses attacker-controlled data with a vulnerable Brotli decoder is potentially at risk, including Node.js, .NET, Bun, Envoy Proxy, Istio, Python HTTP clients, FFmpeg, Apache Arrow and ClickHouse. Patches are available for Google Brotli and the major runtimes, though some projects had not shipped a fixed release as of October 26, and applications that bundle their own copy of Brotli each need their own fix. Background Tenable's Research Special Operations (RSO) team has compiled this blog to answer Frequently Asked Questions (FAQ) regarding Brotli2Shell, a vulnerability in Google's Brotli C decoder library, which Node.js, .NET and other software embed. FAQ What is Brotli2Shell? Brotli2Shell is one of several names for CVE-2026-111497, a memory corruption flaw in Google's open-source Brotli compression library. Some researchers call it Node2Shell, after Node.js, which disclosed the flaw in its October 21 security advisory. Others use HTTP2Shell, since the same bug reaches HTTP software outside Node.js. It has circulated as Broccoli2Shell as well. We use Brotli2Shell because the bug sits in the Brotli decoder itself, not in any one downstream product. What is the vulnerability associated with Brotli2Shell? CVE-2026-111497 is an out-of-bounds write vulnerability in the Google Brotli C decoder library. CVEDescriptionCVSSv4.0 CVE-2026-111497Google Brotli decoder out-of-bounds write vulnerability9.2 An attacker can trigger the flaw by getting an application to decompress crafted Brotli data. Two common paths are a compressed HTTP response sent to a client that decompresses it automatically, and a compressed request body sent to a server that decompresses incoming content. The impact ranges from a process crash to potential remote code execution, and the bug can also leak process memory. Note on severity scoring: Google, as the CNA, scored the flaw 9.2 (CVSSv4.0) with vector CVSS:4.0\u002FAV:N\u002FAC:L\u002FAT:P\u002FPR:N\u002FUI:N\u002FVC:H\u002FVI:H\u002FVA:H\u002FSC:N\u002FSI:N\u002FSA:N. Microsoft rates it 8.1 (CVSSv3.1) for .NET. When was CVE-2026-111497 first disclosed? Google committed the upstream fix to the Brotli source repository on February 27. Node.js publicly disclosed the vulnerability on October 21 in its security advisory, the same day Google released fixed Brotli versions. Envoy Proxy and Istio had already shipped fixed releases earlier in October without naming the flaw. NVD published the CVE record on October 22. Brotli 1.2.1 and brotlicffi 1.2.1.0 both reached the Python Package Index (PyPI) on October 22. On October 25, Microsoft released .NET security updates. What software is affected by CVE-2026-111497? The risk applies wherever an application decompresses Brotli data an attacker can control, whether that data arrives over HTTP in either direction or inside a file. ProjectAffected versionsFixed versions Google Brotli1.0.3 to 1.0.9, 1.1.0, 1.2.01.0.10, 1.1.1, 1.2.1 Node.js = 1.0.21, \u003C 1.4.41.4.4 Envoy Proxy\u003C= 1.36.11, \u003C= 1.37.7, \u003C= 1.38.5, \u003C= 1.39.21.36.12, 1.37.8, 1.38.6, 1.39.3, 1.40.0 Istio\u003C 1.29.9, \u003C 1.30.6, \u003C 1.31.21.29.9, 1.30.6, 1.31.2 Microsoft .NET 8\u003C 8.0.338.0.33 Microsoft .NET 9\u003C 9.0.229.0.22 Microsoft .NET 10\u003C 10.0.1410.0.14 Microsoft .NET 11\u003C Release Candidate 3Release Candidate 3 Python Brotli1.0.3 to 1.2.01.2.1 Python brotlicffi1.0.3 to 1.2.0.x1.2.1.0 PHP for WindowsWindows builds that bundle Brotli 1.0.3 to 1.2.08.2.35-1, 8.3.36-1, 8.4.27-1, 8.5.12-1 Node.js release lines that have reached end of support, including 20, 23 and 25, do not receive a fixed release. Akamai said its telemetry \"shows that 61% of networks are running affected Node.js versions.\" JFrog Security Research showed that the flaw also reaches FFmpeg through the libjxl library, by way of Brotli-compressed metadata in JPEG XL files. JFrog obtained instruction-pointer control in FFmpeg with a crafted JPEG XL file but did not demonstrate code execution. The same research produced an infinite-loop denial of service in Apache Arrow, which uses Brotli for compressed Parquet data, with a crafted 534-byte input, and crashed a tested ClickHouse server with a single malformed Brotli-compressed HTTP request. Python HTTP clients such as urllib3, requests, httpx and aiohttp are also in scope when the Brotli or brotlicffi package is installed. Does updating the system Brotli library fix the issue? It depends on where the software gets its decoder. Programs that load the operating system's copy of Brotli pick up the fix once they restart. Node.js, Bun and other applications that ship with a built-in copy keep the flawed decoder until a fixed release of that application is installed. Is every .NET, Envoy Proxy or Istio installation exposed? No. These platforms are exposed only when Brotli decompression is in use. .NET: Microsoft says an application \"is not exposed merely because an affected .NET package is installed,\" and ASP.NET Core request decompression and HttpClient automatic response decompression are off by default. Applications are in scope when they use ASP.NET Core request decompression, HttpClient response decompression, or the Brotli APIs in System.IO.Compression such as BrotliStream and BrotliDecoder. NativeAOT and self-contained applications pick up the fix only when they are rebuilt and redeployed. Microsoft says .NET Framework is not affected. Envoy Proxy and Istio: Envoy Proxy is exposed only when its Brotli decompressor is configured, and Istio users are potentially affected when they enable Brotli decompression, for example through an EnvoyFilter. Istio 1.29 reached end of support on October 15. Its 1.29.9 release includes the fix. Is PHP affected by CVE-2026-111497? PHP's official Windows builds are affected, because they include their own copy of Brotli. On October 26, PHP released updated Windows builds that bundle Brotli 1.2.1. PHP names its cURL extension as the route to the flaw in those builds, once automatic decompression of HTTP responses is enabled. cURL keeps that setting off unless an application or HTTP client library enables it. On other platforms, PHP can still reach a vulnerable decoder through the system Brotli library or through the PHP brotli extension, which bundles its own copy and fixed the flaw in version 0.21.1. The PHP source releases are unchanged, and this flaw is separate from the PHP2Shell vulnerabilities covered in our FAQ. Is CVE-2026-111497 being exploited in the wild? On October 26, threat intelligence firm ELLIO reported that its sensors recorded an exploitation attempt against CVE-2026-111497. ELLIO said the attempt targeted Node.js 24.22.0 on x86-64 and combined code copied from public PoCs with an original exploit chain. Tenable has not independently confirmed this activity. As of October 26, the vulnerability is not in CISA's Known Exploited Vulnerabilities (KEV) catalog. Has Tenable Research classified this vulnerability as part of Vulnerability Watch? Yes. CVE-2026-111497 has been classified as a “Vulnerability of Interest” as part of Vulnerability Watch. Is there a proof-of-concept (PoC) available for CVE-2026-111497? Yes. Public PoCs for CVE-2026-111497 are available on GitHub. The Imperva Red Team demonstrated code execution against the official Node.js 24.22.0 Linux arm64 image after multiple attempts, and has not released that exploit. At least one public PoC on GitHub claims code execution against Node.js 24.22.0 under narrow lab conditions. ELLIO said it reproduced code execution against the official Node.js 24.22.0 build on x86-64. Are patches or mitigations available for CVE-2026-111497? Fixed versions for Google Brotli, Node.js, Bun, Envoy Proxy, Istio, .NET, the Python Brotli packages and PHP for Windows are listed in the table above. As of October 26, ClickHouse had merged a fix without shipping a release, and the Apache Arrow issue remained open. Patching does not reach code that is already running. The fixed decoder takes effect in a process or scheduled job only after a restart, and in a container only after its image is rebuilt and redeployed. Where patching is delayed, the Patch the Planet mitigation guide and the broccoli2shell.com tracker list temporary steps that reduce exposure: Blocking requests marked Content-Encoding: br at the proxy or load balancer, so they stop before anything decompresses them. This step does nothing for applications that fetch Brotli responses from attacker-controlled servers, and turning off Brotli compression on an origin server or CDN has no effect on decompression. Turning off Brotli decoding in HTTP clients. Taking br out of the Accept-Encoding header falls short by itself, since a hostile server can still reply with Brotli-encoded data. Disabling the Brotli decompressor filter in Envoy Proxy and Istio in both directions. A disabled filter forwards compressed bytes as they arrive, which leaves any downstream service that decodes Brotli at risk. Removing the Brotli or brotlicffi package from Python environments until a patched version is in place. Are there any indicators of compromise for CVE-2026-111497? ELLIO published the source IP address and a payload hash for the exploitation attempt it observed. They are available in ELLIO's blog post. Has Tenable released product coverage for CVE-2026-111497? A list of Tenable plugins for this vulnerability can be found on the individual CVE page for CVE-2026-111497 as they're released. This link will display all available plugins for this vulnerability, including upcoming plugins in our Plugins Pipeline. Get more information Node.js: Wednesday, October 21, 2026 Security Releases JFrog Security Research: Brotli2Shell: Beyond Node(2Shell) and HTTP(2Shell) Microsoft Security Advisory CVE-2026-111497: .NET Brotli Decoder Out-of-bounds Write Vulnerability Imperva: Node2Shell: From Brotli Data to Remote Code Execution PHP: Updated PHP Windows builds for Brotli security fix ELLIO: Node2Shell: remote code execution on stock Node.js builds (CVE-2026-111497) Akamai: Inside Node2Shell: A Closer Look at CVE-2026-111497 Patch the Planet: Brotli decoder vulnerability Join Tenable's Research Special Operations (RSO) Team on Tenable Connect for further discussions on the latest cyber threats. Learn more about Tenable One, the Exposure Management Platform for the modern attack surface.","A critical vulnerability, CVE-2026-111497, dubbed Brotli2Shell, has been disclosed in Google's Brotli decoder library. This out-of-bounds write flaw, rated 9.2 CVSSv4.0, allows for remote code execution and memory leaks when an application decompresses attacker-controlled data. Patches are available for Google Brotli and major runtimes like Node.js and .NET, but applications bundling their own Brotli copies require individual fixes.","CVE-2026-111497, Brotli2Shell, is an out-of-bounds write in Google's Brotli decoder library.","https:\u002F\u002Fwww.tenable.com\u002Fblog\u002Fbrotli2shell-frequently-asked-questions-for-google-brotli-decoder-cve-2026-111497","https:\u002F\u002Fwww.tenable.com\u002Fsites\u002Fdefault\u002Ffiles\u002Fstyles\u002F640x360\u002Fpublic\u002Fimages\u002Farticles\u002Ffaq-brotli2shell-google-brotli-decoder-cve-2026-111497.png?itok=qmo_GC4L","2026-10-27T01:19:40+00:00","2026-10-27T02:00:08.466329+00:00",9,[17,20,23,25,27,29],{"name":18,"type":19},"Brotli","product",{"name":21,"type":22},"Google","vendor",{"name":24,"type":19},"Node.js",{"name":26,"type":19},".NET",{"name":28,"type":19},"Bun",{"name":30,"type":19},"Envoy Proxy","80544778-fabb-4dcd-aa35-17492e5dcf4f",{"id":31,"icon":33,"name":34,"slug":35},null,"Vulnerabilities","vulnerabilities",[37,39,44,49],{"category":38},{"id":31,"icon":33,"name":34,"slug":35},{"category":40},{"id":41,"icon":33,"name":42,"slug":43},"89f78b1c-3503-45a1-9fc7-e23d2ce1c6d5","Malware","malware",{"category":45},{"id":46,"icon":33,"name":47,"slug":48},"ade75414-7914-4e23-a450-48b64546ee70","Open Source","open-source",{"category":50},{"id":51,"icon":33,"name":52,"slug":53},"e7b231c8-5f79-4465-8d38-1ef13aea5a14","Threat Intelligence","threat-intelligence",[55],{"type":56,"value":57,"context":58},"cve","CVE-2026-111497","Brotli decoder out-of-bounds write vulnerability",[21,18,24],{"controls":61,"vendors":147},[62,91,120],{"slug":63,"name":64,"problem":65,"products":66},"vulnerability-management","Vulnerability scanning and prioritisation","You know which systems are vulnerable, and which ones to fix first.",[67,75,83],{"vendor_slug":68,"vendor_name":69,"vendor_logo":70,"product_slug":71,"product_name":72,"url":73,"description":74},"tenable","Tenable","\u002Fvendor-logos\u002Ftenable.png","tenable-vulnerability-management","Tenable Vulnerability Management","https:\u002F\u002Fwww.tenable.com\u002Fproducts\u002Fvulnerability-management","Cloud-based vulnerability scanning and prioritisation, built on Nessus.",{"vendor_slug":76,"vendor_name":77,"vendor_logo":78,"product_slug":79,"product_name":80,"url":81,"description":82},"axonius","Axonius","\u002Fvendor-logos\u002Faxonius.png","axonius-exposures","Axonius Exposures","https:\u002F\u002Fwww.axonius.com\u002Fplatform\u002Fexposures","Brings findings from different scanners together with asset and business context, to show what matters most and track fixes to the end.",{"vendor_slug":84,"vendor_name":85,"vendor_logo":86,"product_slug":87,"product_name":88,"url":89,"description":90},"holm-security","Holm Security","\u002Fvendor-logos\u002Fholm-security.png","holm-security-platform","Holm Security Platform","https:\u002F\u002Fwww.holmsecurity.com\u002F","Vulnerability scanning of systems, web applications, cloud and the external attack surface, plus phishing simulation.",{"slug":92,"name":93,"problem":94,"products":95},"patch-management","Automated patch management","Known holes get closed in days, not months.",[96,104,112],{"vendor_slug":97,"vendor_name":98,"vendor_logo":99,"product_slug":100,"product_name":101,"url":102,"description":103},"action1","Action1","\u002Fvendor-logos\u002Faction1.png","action1-patch-management","Action1 Patch Management","https:\u002F\u002Fwww.action1.com\u002F","Cloud-native patch management for Windows, macOS and third-party applications.",{"vendor_slug":105,"vendor_name":106,"vendor_logo":107,"product_slug":108,"product_name":109,"url":110,"description":111},"ninjaone","NinjaOne","\u002Fvendor-logos\u002Fninjaone.png","ninjaone-patch-management","NinjaOne Patch Management","https:\u002F\u002Fwww.ninjaone.com\u002Fpatch-management\u002F","Automated patching of operating systems and third-party applications from the cloud.",{"vendor_slug":113,"vendor_name":114,"vendor_logo":115,"product_slug":116,"product_name":117,"url":118,"description":119},"manageengine","ManageEngine","\u002Fvendor-logos\u002Fmanageengine.png","patch-manager-plus","ManageEngine Patch Manager Plus","https:\u002F\u002Fwww.manageengine.com\u002Fpatch-management\u002F","Patch management for operating systems and third-party applications, on premises or in the cloud.",{"slug":53,"name":121,"problem":122,"products":123},"Threat intelligence","Attack campaigns reach your sector, suppliers or software before your team hears about them.",[124,131,139],{"vendor_slug":125,"vendor_name":21,"vendor_logo":126,"product_slug":127,"product_name":128,"url":129,"description":130},"google","\u002Fvendor-logos\u002Fgoogle.png","google-threat-intelligence","Google Threat Intelligence","https:\u002F\u002Fcloud.google.com\u002Fsecurity\u002Fproducts\u002Fthreat-intelligence","Threat intelligence from Mandiant's frontline investigations, Google's threat analysts, open sources and Google's own visibility, in one service.",{"vendor_slug":132,"vendor_name":133,"vendor_logo":134,"product_slug":135,"product_name":136,"url":137,"description":138},"reliaquest","ReliaQuest","\u002Fvendor-logos\u002Freliaquest.png","greymatter-digital-risk-protection","GreyMatter Digital Risk Protection","https:\u002F\u002Freliaquest.com\u002Fsecurity-operations-platform\u002Fdark-web-and-digital-risk-protection\u002F","Watches the open, deep and dark web for threats aimed at an organisation and alerts its security team in real time.",{"vendor_slug":140,"vendor_name":141,"vendor_logo":142,"product_slug":143,"product_name":144,"url":145,"description":146},"dataminr","Dataminr","\u002Fvendor-logos\u002Fdataminr.png","dataminr-threat-intelligence","Dataminr Threat Intelligence","https:\u002F\u002Fwww.dataminr.com\u002Fproducts\u002Fcyber-defense\u002Fthreat-intelligence\u002F","Real-time alerts on emerging cyber threats, exploited vulnerabilities and attacks relevant to your organisation, detected with AI across a large set of public data sources.",[148,151],{"slug":125,"name":21,"logo_path":126,"roles":149},[150],"affected",{"slug":68,"name":69,"logo_path":70,"roles":152},[153],"reported_by",{"slug":155,"title":156,"body":157,"framework_refs":158,"framework_notes":166},"brotli2shell-critical-rce-in-google-brotli-decoder-demands-immediate-patching","Brotli2Shell: Critical RCE in Google Brotli Decoder Demands Immediate Patching","CVE-2026-111497, a CVSS 9.2-rated out-of-bounds write vulnerability in Google's Brotli decoder library, enables remote code execution and memory leaks simply by processing attacker-controlled compressed data — a capability present in an enormous number of applications and runtimes. The core problem is that Brotli is deeply embedded in ecosystems like Node.js and .NET, and many applications bundle their own private copies of the library, meaning a single upstream patch does not automatically protect every dependent application. This supply-chain-style distribution of the vulnerable component dramatically widens the attack surface and complicates remediation. Organizations that lack a complete software bill of materials (SBOM) or automated dependency tracking will struggle to identify every affected asset before attackers exploit them.",[159,160,161,162,163,164,165],"CIS Control 7: Continuous Vulnerability Management","OWASP A06:2021 Vulnerable and Outdated Components","NIST SP 800-53 SI-2: Flaw Remediation","ISO\u002FIEC 27001:2022 A.8.8: Management of technical vulnerabilities","NIST CSF 2.0 PR.AA: Identity Management, Authentication, and Access Control","PCI DSS Requirement 6","NIS2 Article 21(2)(b)",{"NIS2 Article 21(2)(b)":167,"PCI DSS Requirement 6":168,"NIST SP 800-53 SI-2: Flaw Remediation":169,"OWASP A06:2021 Vulnerable and Outdated Components":170,"CIS Control 7: Continuous Vulnerability Management":171,"ISO\u002FIEC 27001:2022 A.8.8: Management of technical vulnerabilities":172,"NIST CSF 2.0 PR.AA: Identity Management, Authentication, and Access Control":173},"NIS2 requires essential and important entities to implement vulnerability handling and disclosure policies; the multi-runtime spread of this flaw means operators under NIS2 must have processes to track dependencies and apply patches rapidly to maintain compliance.","Requirement 6 mandates that organisations develop and maintain secure systems by applying security patches promptly and managing vulnerabilities in software components, directly covering the need to patch or replace vulnerable Brotli instances in payment-processing environments.","SI-2 requires organisations to identify, report, and correct information system flaws; having a flaw-remediation process with priority tiers for critical CVEs would ensure CVE-2026-111497 is addressed within a risk-based timeframe.","This vulnerability is a textbook A06 scenario: a widely used third-party library with a critical flaw that persists in production because organisations lack visibility into vendored dependencies and have no automated process to track or update them.","Routine vulnerability scanning with defined remediation SLAs would have identified all instances of the vulnerable Brotli library — including bundled copies — and driven timely patching before exploitation.","This control explicitly requires timely identification and remediation of technical vulnerabilities in software components, including third-party libraries, which directly addresses the bundled-Brotli patching gap highlighted in this incident.","Successful exploitation of this RCE flaw grants an attacker code execution context; limiting process privileges and enforcing least-privilege execution environments would constrain post-exploitation impact even if the vulnerability is triggered."]