Internet security research and reporting
Reported News CVE-2026-111497

Brotli fixes have to reach the decoder that runs

CVE-2026-111497 crosses libraries, runtimes and managed deployments. Verify the decoder in the actual workload.

On this page
Brotli fixes have to reach the decoder that runs. Untrusted compressed input; Native decoder; Bundled runtime copy; Deployed workload
FISRO diagram: Untrusted compressed input; Native decoder; Bundled runtime copy; Deployed workload. FISRO

Summary

Brotli and Node.js issued fixes on 21 October 2026 for CVE-2026-111497. Application bundles and managed platforms have separate delivery paths; this report connects the initial fix boundaries to deployment ownership and input reachability.

Follow the native decoder into the running workload

Google's Brotli maintainers released fixes for CVE-2026-111497 on 21 October 2026. The Node.js security release describes an invalid block-switch condition that could be reported as a request for more input rather than a permanent format error. Continued streaming input could then write beyond an internal buffer. The project identifies crashes, memory disclosure and possible code execution when an application decompresses attacker-supplied data.

The upstream library release is only one delivery point. Runtimes can bundle the decoder, applications can include another native copy, and managed platforms have their own rollout and deployment requirements. A useful remediation record has to identify which copy processes the untrusted bytes.

Three ownership layers

The library. Establish whether the application links a distribution-maintained decoder, vendors the source or embeds a prebuilt component. An operating-system package update cannot prove that a statically bundled copy changed.

The runtime or application. Use the relevant vendor's release record. The Node.js advisory covers its bundled decoder and supported release lines; that statement does not automatically resolve the status of a different runtime or an application's extra dependencies.

The deployment. A newly available base image or managed runtime update is not proof that an existing workload uses it. Record the deployed image digest or provider-specific runtime state, and follow the provider's documented rebuild or redeployment procedure.

AWS's 28 October bulletin illustrates the distinction. It separates the Lambda managed service from affected runtime components and distinguishes container base-image updates from ZIP-runtime rollout. It also discusses application-supplied libraries and layers. Provider-managed infrastructure does not remove responsibility for the code an application packages itself.

Initial fixes, with the evidence kept attached

Component Original fixed release or boundary Evidence and limit
Brotli C library 1.0.10, 1.1.1, 1.2.1 Upstream security releases; identify bundled copies separately
Node.js supported lines 22.23.4, 24.22.1, 26.12.1 in the initial release Use the current Node.js advisory and vendor packaging guidance for deployment decisions
Python Brotli 1.2.1 GitHub advisory's package range
Python brotlicffi 1.2.1.0 GitHub advisory's package range
Managed runtimes and images Provider-specific Availability, rollout and deployment state are separate facts

These are the first published fix boundaries, not a claim that they are the newest suitable releases. AWS's bulletin notes a regression affecting its Node.js 24 rollout and describes a targeted update approach. A provider's backported fix should therefore be assessed through that provider's evidence rather than rejected solely for not matching an upstream version string.

Find the input path before choosing a temporary control

Brotli is used to decode content, so the relevant boundary is untrusted compressed data reaching the affected implementation. Incoming request bodies and content fetched from external services are different paths. A rule at an inbound reverse proxy cannot independently cover a process decoding an outbound HTTP response.

Map the actual path using application configuration and supported runtime documentation. Identify APIs, workers, crawlers and other services that process content from outside their trust boundary. Include background jobs and stored data that may be decoded later.

Where an immediate update is unavailable, use vendor-backed mitigations for the specific product. Avoid presenting one instruction to reject a compression header as a universal fix. The control must be applied before the vulnerable decoder is invoked and must cover the relevant input route.

Safe inventory checks

Read the runtime version inside the actual container or environment, not only on the host. Inspect resolved Python packages in each application environment where applicable. For distribution packages, compare the full package release with the distribution tracker, including security backports.

For a Node.js process environment that the operator controls, this expression prints the runtime and bundled Brotli version reported by that runtime:

node -p 'JSON.stringify({node: process.versions.node, brotli: process.versions.brotli}, null, 2)'

It does not test exploitability or inspect a different running service. Execute it in the intended workload environment and retain the deployed image or release identity alongside the output. A provider can backport a correction, so interpret the reported values using the relevant runtime or provider bulletin.

For an existing Python environment, package metadata can be read without installing or updating dependencies:

python -m pip show Brotli brotlicffi

An absent package result does not prove that the application lacks every native decoder. A vendored extension, another environment or a separate process can still require review. Likewise, pip metadata does not establish which binary was loaded by an already running worker.

After rebuilding, verify that the intended workload received the new artefact and that old worker groups or recovery templates cannot quietly restore the affected copy. Use ordinary valid compressed data for deployment smoke tests; malformed exploit input is unnecessary for this inventory and rollout check.

For vendored code, connect the source revision to the built artefact and deployed workload. A source-tree match is a useful lead; it cannot show which binary a running process loaded. No malformed compressed stream is needed for this inventory work.

The libwebp response provides a close operational comparison: a widely reused native decoder can outlive the most visible product update in less obvious application copies. The Log4Shell case adds the need to reconcile build, deployment and runtime evidence.

The current task is to close those specific decoder paths with verifiable software and deployment changes. Public advisories establish affected ranges and fixes; they do not, on their own, establish exploitation in a particular environment. Keep any claim about active attacks attached to direct evidence from the reporting party.

What remains unverified

The linked vendor records do not establish exploitation in a particular deployment. Managed-runtime rollout and application-supplied decoder copies require separate verification.

Timeline

  1. Brotli maintainers publishes “Brotli v1.2.1 security release”. [Brotli maintainers (Google)]
  2. Node.js project publishes “October 2026 security releases”. [Node.js project]
  3. AWS Security publishes “Brotli native decoder: CVE-2026-111497”. [AWS Security]

Methodology

AI-assisted source research and drafting. Synthesis of the linked public primary documents, prepared on 2026-10-30. Technical conditions and dates are attributed to those documents. The decision tables, diagrams and operational interpretation are FISRO analysis. No exploit reproduction, affected-system inspection or new victim measurement was performed. Event date: 2026-10-21: event or disclosure described in the sources; source publication dates are listed separately.

Sources

Primary sources are maintainers, vendors, official bodies and original documents. Secondary sources are reporting by others.

  1. google/brotli release v1.2.1 Brotli maintainers (Google) Primary Published 21 Oct 2026 Accessed 30 Oct 2026 Brotli v1.2.1 security release — evidence for the incident account, technical conditions or diagnostic described here.
  2. Wednesday, October 21, 2026 Security Releases Node.js project Primary Published 21 Oct 2026 Accessed 30 Oct 2026 October 2026 security releases — evidence for the incident account, technical conditions or diagnostic described here.
  3. Brotli native decoder: CVE-2026-111497 AWS Security Primary Published 28 Oct 2026 Accessed 30 Oct 2026 Brotli native decoder: CVE-2026-111497 — evidence for the incident account, technical conditions or diagnostic described here.
  4. GHSA-9v8h-qqgm-4m35: Out-of-bounds write in the Brotli decoder GitHub Advisory Database Primary Published 22 Oct 2026 Accessed 30 Oct 2026 GHSA-9v8h-qqgm-4m35 — evidence for the incident account, technical conditions or diagnostic described here.
  5. CVE-2026-111497 Debian Security Tracker Primary Accessed 30 Oct 2026 CVE-2026-111497 package status — evidence for the incident account, technical conditions or diagnostic described here.

Updates and corrections

No substantive updates or corrections since publication.

Found an error? Request a correction. We record every substantive change on this page, as set out in our corrections policy.

Related coverage