XHack Logo
XHack
Products
Services
Compliance
Pricing
Resources
Company
Sign upLogin
XHack Logo
XHackOffensive Security

Certified offensive security team delivering penetration testing evidence written for your auditor.

OSCP+OSCPC-AI/MLPenCASA
support@xhack.io

24/7 SOC Operations

XHack Status
Under attack? Get help now
Services
  • VAPT Services
  • Red Teaming
  • SOC Services
  • Threat Intelligence
  • Incident Response
  • Managed Testing
Pricing
  • Platform Plans
  • Services Pricing
Compliance
  • SOC 2
  • PCI DSS
  • ISO 27001
  • GDPR
  • HIPAA
  • ISO 42001
  • AI Maturity Assessment
  • TX-RAMP
  • NBFC / SECP
  • All Frameworks
Products
  • Vulnerability Assessment
  • GitGuard
  • AI Probe
  • SOC Dashboard
  • AI Agent
  • Cloud Investigation
Comparison
  • XBOW vs XHack
  • Horizon3 vs XHack
  • Strix vs XHack
  • Pentera vs XHack
Resources
  • Platform Tour
  • All Features
  • Install the Agent
  • XHack AI
  • Documentation
  • Blog
  • Case Studies
  • Documents
  • FAQ
Company
  • About Us
  • Our Team
  • Certifications
  • Security and Trust
  • VAPT Explained
  • Contact

© 2026 XHACK (SMC-PRIVATE) LIMITED. All rights reserved.

Registered with the SECP, CUIN 0361945. Verify

Security & TrustVulnerability DisclosurePrivacy PolicyTerms of ServiceRefund Policy
Blog/News

CVE-2026-111497: Critical Brotli Decoder Flaw Behind Node2Shell Is Now Exploited

XHack

XHack

Author

October 28, 2026

13 min read

CVE-2026-111497: Critical Brotli Decoder Flaw Behind Node2Shell Is Now Exploited

Table of contents

16

What Brotli Is, and Why a Bug There Matters

What CVE-2026-111497 Is

How CVE-2026-111497 Works

Is CVE-2026-111497 Being Exploited?

Who Is Exposed to CVE-2026-111497

Fixing CVE-2026-111497

Checking Your Own Systems for CVE-2026-111497

How XHack Reads CVE-2026-111497

FAQ: CVE-2026-111497 Questions Answered

Is CVE-2026-111497 being exploited in the wild?

Which Node.js versions fix CVE-2026-111497?

Am I vulnerable to CVE-2026-111497 if I do not use Node.js?

Does CVE-2026-111497 affect .NET?

Is CVE-2026-111497 critical or high?

How do I check whether CVE-2026-111497 affects my systems?

The Bottom Line on CVE-2026-111497

Read this in 30 seconds: CVE-2026-111497 is an out-of-bounds write in Google’s Brotli decompression library. It lets a crafted compressed stream corrupt memory in any program that decompresses attacker-controlled Brotli data, and researchers have turned it into remote code execution on stock Node.js. CISA added it to the Known Exploited Vulnerabilities catalog on 27 October 2026 with a due date of 10 November.

  • It is a library bug, but the blast radius is wide. Google fixed it in Brotli 1.0.10, 1.1.1 and 1.2.1 on 21 October, and Node.js, Bun, Envoy, Istio and the Python and Go packages all shipped their own fixes.
  • Three scorers disagree. Google rates it 9.2 under CVSS 4.0, NVD rates it 9.8 under CVSS 3.1, and Microsoft rates its .NET exposure 8.1.
  • Exploitation is real, but the attacker is unknown. ELLIO reported exploit traffic against its sensors on 26 October, a public exploit exists, and CISA lists ransomware use as unknown.
  • You are not exposed just because Brotli is installed. The bug only matters where an application decompresses Brotli data an attacker can supply.
  • The fix is a version bump, but check the right version. Node.js 22.23.4, 24.22.1 or 26.12.1, and restart every process after you update.

The lesson of CVE-2026-111497 is that a compression library is part of your attack surface. Brotli sits quietly inside runtimes, proxies and HTTP clients. Most teams never chose it, and most could not say where it runs.

This article covers what the flaw is, how it works at the level the vendors have published, what we know and do not know about exploitation, who is exposed, the fixed versions, and how to check your own systems. It does not include exploit code or payloads.

CVE-2026-111497 at a glance: Brotli decoder out-of-bounds write, CISA KEV added 27 October 2026, fixed in Brotli 1.2.1 and Node.js 22.23.4, 24.22.1 and 26.12.1
CVE-2026-111497 at a glance: severity, KEV dates and fixed versions

What Brotli Is, and Why a Bug There Matters

Brotli is a compression format created by Google. Web servers and browsers use it to shrink pages and scripts, and the format is common in HTTP as Content-Encoding: br. The reference decoder is a small C library, and many projects bundle or link it.

That is why CVE-2026-111497 reaches so far. A decoder has to read data from outside the program and turn it into bytes in memory, which is exactly the situation where a boundary mistake becomes a security bug. Any program that decompresses Brotli data it did not produce is a potential target.

Two directions matter. A server can decompress what clients send it, such as a request body. A client can decompress what servers send it, such as a response from a third-party API. The risk applies to both.

Brotli is also embedded deep. The Node.js node:zlib module bundles it, Bun includes it, Envoy and Istio offer Brotli decompression filters, and Python and Go have their own wrappers. Wiz’s telemetry says 91% of the cloud environments it sees contain a vulnerable resource, though that is a vendor figure we have not verified.

What CVE-2026-111497 Is

The Node.js project’s advisory describes CVE-2026-111497 as a flaw in the Brotli decoder bundled with Node.js, in which malformed compressed input writes past the end of an internal decoder buffer. The NVD entry, published on 22 October 2026, describes a buffer overflow in c/dec/decode.c in Google Brotli 1.0.3 through 1.2.0 that a remote unauthenticated attacker can use to corrupt adjacent decoder state, disclose memory, crash the process or potentially execute arbitrary code.

Here are the facts, and who said them.

  • Weakness: CWE-252 (unchecked return value) and CWE-787 (out-of-bounds write), both assigned by Google.
  • Confirmed exploited: yes. It is in CISA’s KEV catalog, added 27 October 2026.
  • Discoverers: Khai Tran and Sylvie Mayer of OpenAI Codex Security, per the Node.js advisory. The fixes were written by Matteo Collina and Antoine du Hamel of the Node.js team.
  • Affected upstream versions: Brotli 1.0.3 up to but not including 1.0.10, 1.1.0 up to but not including 1.1.1, and 1.2.0 up to but not including 1.2.1, per NVD.
  • Names in circulation: Node2Shell, HTTP2Shell and Broccoli2Shell. These are researcher labels, not CVE names.

The score depends on who you ask, which matters if your patching policy is score-driven.

SourceScoringScoreNotable difference
Google (CNA)CVSS 4.09.2 CriticalAttack requirements marked present
NVDCVSS 3.19.8 CriticalAttack complexity low, no user interaction
Microsoft (.NET)CVSS 3.18.1 HighAttack complexity high, and exposure is not default

The Node.js advisory rates it high rather than critical for Node.js itself. Treat the spread as a sign that real-world risk depends on how your software uses Brotli, not as a reason to wait.

How CVE-2026-111497 Works

We are describing this at the level the vendors have published. We are not reproducing an exploit.

The Brotli format splits compressed data into blocks, and the stream can declare a switch from one block type to another. According to the Node.js advisory, an invalid block switch was reported to the caller as a temporary need for more input, instead of a permanent format error. The streaming decoder therefore kept accepting input and kept appending the bytes to an eight-byte internal buffer, and writes could land past the end of it.

In plain terms, the decoder answered “this stream is broken” with “send me more data,” and the caller, behaving correctly, did.

The security firm ELLIO describes the upstream fix as a commit titled “Detect and report invalid stream earlier,” and says it gives the helper function a proper error code, BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH (value -17), so an invalid switch stops decoding. That matches the weakness classification: the unchecked return value (CWE-252) is the cause, and the out-of-bounds write (CWE-787) is the consequence. Google’s release notes for 1.0.10, 1.1.1 and 1.2.1 state only that an out-of-bounds write permits remote code execution.

Why CVE-2026-111497 matters beyond Node.js: the bug is in the C decoder, so every program that links the same code inherits it unless it has been patched.

Is CVE-2026-111497 Being Exploited?

Yes. The evidence, in order:

  1. 21 October: Google and Node.js release fixes, and other projects follow. Per Wiz and ELLIO, Imperva’s Red Team demonstrated that the flaw is exploitable, on arm64, a day after the fix shipped.
  2. 25 to 26 October: ELLIO reports that a public exposure checker calling itself node2shell-check reached its sensors first, sending Brotli bodies to find hosts that decompress them. It then reports exploit traffic from a different source, carrying the public exploit code it had confirmed gets a shell on vulnerable builds.
  3. 27 October: CISA adds CVE-2026-111497 to the KEV catalog, due 10 November 2026.

What we do not know about CVE-2026-111497 matters just as much. CISA lists known ransomware use as unknown. No public attribution to a named group exists in the sources we read. CISA’s forensic triage flag is “No,” so there is no federal evidence-preservation requirement attached to this one. And the sources do not say how many real compromises have happened, only that exploitation attempts and a working public exploit exist.

Our advice is conservative: treat any internet-facing service that decompresses Brotli data as a target, and keep your logs before you patch if you suspect you were probed.

Who Is Exposed to CVE-2026-111497

You are exposed to CVE-2026-111497 when an application decompresses Brotli data that an attacker can influence. Three paths cover most cases.

PathExampleWhat to check
Incoming request bodiesA server that accepts Content-Encoding: br and decompresses itMiddleware, proxies and framework decompression settings
Responses from untrusted serversA service that fetches third-party URLs and decodes Brotli responsesHTTP client defaults and automatic decompression flags
Files and other inputsTools that unpack Brotli archives or assetsAny pipeline that ingests user-supplied compressed files
CVE-2026-111497 exposure paths: request bodies, responses from untrusted servers and files all reach the Brotli decoder, while .NET is not exposed by default
CVE-2026-111497 exposure paths: where attacker data reaches the Brotli decoder

Microsoft’s advisory for .NET is the clearest example of the “not just because it is installed” rule. It says ASP.NET Core and HttpClient do not decompress Brotli automatically in their default configurations, that exposure requires the application to enable Brotli decompression or call Brotli APIs on attacker-controlled data, and that .NET Framework is not affected.

Patch the Planet, a patch-tracking site, lists Node.js, Bun, and Envoy Proxy and Istio deployments configured for Brotli decompression as affected. For ones you cannot update at once, it says to disable Brotli decoding of untrusted data and keep gzip and deflate.

Fixing CVE-2026-111497

To fix CVE-2026-111497, update to a fixed version, then restart. The versions below come from the project advisories and the Wiz and Patch the Planet trackers.

ComponentFixed versions
Google Brotli (upstream)1.0.10, 1.1.1, 1.2.1 (release notes)
Node.js22.23.4, 24.22.1, 26.12.1
Bun1.4.4
Envoy Proxy1.40.0, 1.39.3, 1.38.6, 1.37.8
Istio1.29.9, 1.30.6, 1.31.2
Python brotli1.2.1
Python brotlicffi1.2.1.0
Go andybalholm/brotliv1.2.7
CVE-2026-111497 fixed versions for Brotli, Node.js, Bun, Envoy, Istio, Python and Go, with who is exposed by default
CVE-2026-111497 fixed versions and who is exposed

Work through it in this order.

  1. Inventory first. List every runtime, container image and proxy in your estate that handles HTTP or files. AI vulnerability scanning can help find what you forgot you run. Node.js, Bun, Envoy and Istio are the obvious ones. Include tools that bundle Node.js inside an executable.
  2. Update the runtime or library to the fixed versions above, or to your Linux vendor’s backport. Distributions backport fixes without changing the upstream version number, so check the vendor advisory. Debian has published an LTS announcement for this CVE.
  3. Rebuild and redeploy containers. A patched base image does nothing for a container that was built last week.
  4. Restart every process that loaded the old library, including workers, scheduled jobs and replicas.
  5. If you cannot patch yet, stop decoding untrusted Brotli. Reject requests with Content-Encoding: br before any middleware decompresses them, turn off automatic Brotli decompression in HTTP clients, and disable the decompressor filter in Envoy and Istio. Turning off Brotli responses on a CDN does not stop request-side or client-side decoding.
  6. Verify the running version, not the package manifest.

If you must block request-side Brotli quickly, a reverse proxy rule works while you patch:

# Temporary: reject request bodies compressed with Brotli until runtimes are patched.
if ($http_content_encoding ~* "(^|[,\s])br([,\s]|$)") {
    return 415;
}

This is a stopgap for CVE-2026-111497. It does not cover response decoding, file processing or internal services.

Checking Your Own Systems for CVE-2026-111497

These commands check for CVE-2026-111497 by listing versions and looking for suspicious behaviour. None of them touches anything outside your own estate.

# Runtime versions (compare with the fixed list above)
node --version
bun --version
envoy --version 2>/dev/null | head -1

# Python wrappers
pip show brotli brotlicffi 2>/dev/null | grep -E '^(Name|Version)'

# Native packages (distros backport, so also read the vendor advisory)
dpkg -l 2>/dev/null | grep -i brotli
rpm -qa 2>/dev/null | grep -i brotli

# Container images that carry Node.js
docker images --format '{{.Repository}}:{{.Tag}}' | while read i; do
  v=$(docker run --rm --entrypoint node "$i" --version 2>/dev/null) && echo "$i $v"
done

# Unexpected shell children of Node or Bun processes (Linux)
ps -eo ppid,pid,user,args --forest | grep -E 'node|bun' -A2 | grep -E 'sh -c|/bin/(ba)?sh'

# Restarting workloads in Kubernetes
kubectl get pods -A --sort-by='.status.containerStatuses[0].restartCount' | tail -20

Interpret the results carefully. A crash alone proves nothing about CVE-2026-111497, because a malformed Brotli body can also simply crash a vulnerable process. A shell spawned by a web service is a much stronger signal. Look for requests with Content-Encoding: br in access logs, but only if your logging captures that header.

How XHack Reads CVE-2026-111497

Most vulnerability programmes ask “do we run Brotli?” For CVE-2026-111497 the better question is “which of our services decompress data an outsider can send?”

In an AI-assisted VAPT engagement, that is an attack-surface question. We list which internet-facing services accept compressed request bodies, which of them run a runtime or proxy in the affected range, and which internal services fetch untrusted content. Then we confirm that the patched version is actually the one running. Our cloud infrastructure testing methodology covers the container and Kubernetes side of that check.

Two other things stand out. First, the discoverers are credited to OpenAI Codex Security, which shows AI-assisted vulnerability research is now finding bugs in core runtimes. Second, another late-October runtime bug is PHP2Shell, and the fix path is similar: update, restart and verify.

A pentest report would not certify that you are safe from this CVE. It documents what was tested and found at a point in time, and you should still patch and verify on your own systems.

FAQ: CVE-2026-111497 Questions Answered

Is CVE-2026-111497 being exploited in the wild?

Yes. CISA added CVE-2026-111497 to its KEV catalog on 27 October 2026, and ELLIO reported exploit traffic against its sensors on 26 October. No public source we read names the attacker, and CISA lists ransomware use as unknown.

Which Node.js versions fix CVE-2026-111497?

Node.js 22.23.4, 24.22.1 and 26.12.1 contain the fix, according to the Wiz and Patch the Planet trackers, and Node.js published its security releases on 21 October 2026. The advisory says the 26.x, 24.x and 22.x lines are affected. Restart your processes after updating.

Am I vulnerable to CVE-2026-111497 if I do not use Node.js?

Possibly. CVE-2026-111497 is in Google’s Brotli decoder, so Bun, Envoy, Istio, the Python brotli and brotlicffi packages and other software that links the library can be affected. Whether you are exposed depends on whether the software decompresses Brotli data that an attacker can supply.

Does CVE-2026-111497 affect .NET?

Microsoft says it can. Its advisory scores .NET at 8.1, says .NET Framework is not affected, and says ASP.NET Core and HttpClient do not decompress Brotli by default, so you are exposed only if you enabled Brotli decompression or call Brotli APIs on untrusted data.

Is CVE-2026-111497 critical or high?

It depends on the scorer. Google rates it 9.2 Critical under CVSS 4.0 and NVD rates it 9.8 Critical under CVSS 3.1, while Microsoft rates its .NET exposure 8.1 High and the Node.js advisory labels it high. Use the severity for your own deployment and patch internet-facing services first.

How do I check whether CVE-2026-111497 affects my systems?

Check the runtime and package versions against the fixed list, including container images, then confirm the running version after a restart. Distributions backport fixes, so read your vendor’s advisory when the upstream version looks old. The NVD entry lists the affected upstream ranges.

The Bottom Line on CVE-2026-111497

CVE-2026-111497 is a decoder bug with a very wide footprint: a flaw in a compression library that most teams never chose. Exploitation is confirmed and a public exploit exists, so it belongs on this week’s list, with the CISA due date of 10 November as an outer limit.

The next step is concrete. Inventory what decompresses Brotli, update Node.js, Bun, Envoy, Istio and the Python and Go packages to the fixed versions, restart everything, and verify the running version. If you cannot patch yet, stop decoding untrusted Brotli data.


Categories

News

Next

Unrestricted AI Models: Which Ones Fit Security Work in 2026

On this page

What Brotli Is, and Why a Bug There Matters

What CVE-2026-111497 Is

How CVE-2026-111497 Works

Is CVE-2026-111497 Being Exploited?

Who Is Exposed to CVE-2026-111497

Fixing CVE-2026-111497

Checking Your Own Systems for CVE-2026-111497

How XHack Reads CVE-2026-111497

FAQ: CVE-2026-111497 Questions Answered

Is CVE-2026-111497 being exploited in the wild?

Which Node.js versions fix CVE-2026-111497?

Am I vulnerable to CVE-2026-111497 if I do not use Node.js?

Does CVE-2026-111497 affect .NET?

Is CVE-2026-111497 critical or high?

How do I check whether CVE-2026-111497 affects my systems?

The Bottom Line on CVE-2026-111497

Related articles

Continue reading

CVE-2026-96951: The Third Exploited Windows Shell Flaw of 2026

News

CVE-2026-96951: The Third Exploited Windows Shell Flaw of 2026

CVE-2026-96951 is an exploited Windows Shell Mark of the Web bypass and the third Shell flaw exploited in 2026. Get fixe...

Read article
CVE-2025-61624: The Medium-Rated FortiOS Bug Behind the PEERSTITCH Implant

News

CVE-2025-61624: The Medium-Rated FortiOS Bug Behind the PEERSTITCH Implant

CVE-2025-61624 is a medium-rated FortiOS path traversal that gave attackers root and planted PEERSTITCH. See which versi...

Read article
CVE-2026-110447: A Nextcloud Collabora Command Injection Fixed as a Tidy-Up Commit

News

CVE-2026-110447: A Nextcloud Collabora Command Injection Fixed as a Tidy-Up Commit

CVE-2026-110447 is an exploited Nextcloud Collabora command injection fixed as a tidy-up commit. See the timeline, the p...

Read article