Skip to main content

IO::Compress::Brotli CVE-2026-115936

MEDIUM
2026-10-23
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Deliver crafted brotli stream to app
  2. Delivery
    App calls unbro/decompress on input
  3. Exploit
    Trigger out-of-bounds write in bundled decoder
  4. Execution
    Corrupt decoder state
  5. Impact
    Disclose memory, crash, or possible code execution

Vulnerability Assessment

Exploitation Conditions

Exploitation requires that an application actually decompress attacker-controlled (untrusted) brotli data through this module's unbro function or decompress method while running a bundled-vulnerable release (0.004001 through 0.022, which statically compile brotli 1.0.4-1.2.0). The key limiting factor is this data-flow precondition: deployments that only compress, or only decompress trusted/self-generated streams, are not reachable. A critical non-obvious constraint is that upgrading the system/OS brotli library does NOT remediate this, because the vulnerable decoder is statically bundled into the module - only upgrading IO-Compress-Brotli to 0.023 (brotli 1.2.1) fixes it. The advisory does not describe required user interaction or authentication, and no CVSS vector is provided, so authentication requirements are not confirmed from available data.

Impact

No quantitative exploitation signals are available: CVSS is N/A in the input, there is no EPSS score, the CVE is not in CISA KEV, and no public exploit was identified at time of analysis. The vuln.today decision label is 'awaiting_data', so no priority framework (SSVC/automatable/technical-impact) has been scored yet. The underlying defect is well-characterized, however: IO::Compress::Brotli 0.004001 through 0.022 statically bundle brotli 1.0.4-1.2.0, all of which carry the decoder out-of-bounds write tracked as CVE-2026-111497; 0.023 bumps the bundled copy to brotli 1.2.1. The realistic risk is therefore scoped to applications that decompress untrusted brotli data through this module - for those, an out-of-bounds write offering memory disclosure, process crash, or potential code execution is a genuine concern, not merely a high-CVSS-but-low-impact issue. For deployments that never decompress attacker-controlled input, exposure is minimal. Because no CVSS vector is supplied, authentication requirements cannot be confirmed from the data; the attacker-controlled surface is the decompressed input, not an authenticated session. The commit reference is a fix (submodule bump), not exploit code.

Exploit ScenarioDerived

An application uses IO::Compress::Brotli (0.004001-0.022) to decompress brotli data that originates from an untrusted source - for example an HTTP response body, an uploaded file, or a message payload - via unbro or the decompress method. An attacker supplies a crafted brotli stream that drives the bundled vulnerable decoder into an out-of-bounds write, corrupting decoder state to leak memory, crash the process, or potentially achieve code execution. No public exploit was identified at time of analysis.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 24, 2026

Out-of-bounds write in the brotli decoder statically bundled into Perl's IO::Compress::Brotli (0.004001 through 0.022) allows a crafted brotli stream to corrupt decoder state, leak memory, crash the process, or potentially achieve code execution when an application decompresses untrusted data through the module's unbro function or decompress method. The flaw is inherited from the embedded brotli copies 1.0.4 through 1.2.0 and is tracked upstream as CVE-2026-111497; the trigger path is the decoder itself, and the assessed vector (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H) reflects a remote unauthenticated attacker against a high-impact memory-safety defect, though the upstream advisory does not itself state authentication requirements. No CISA KEV listing, no public exploit identification, no EPSS score and no CVSS value were supplied in the source data (priority label: awaiting_data), so exploitation in the wild is unconfirmed. A critical remediation nuance is that patching the operating system's brotli library does nothing here, because the vulnerable decoder is compiled into the module.

RemediationAI

Upgrade to IO::Compress-Brotli 0.023 or later (for example 'cpanm IO::Compress::Brotli'), which updates the bundled brotli to 1.2.1 via commit https://github.com/timlegge/perl-IO-Compress-Brotli/commit/39a62a44545810a60ff9e43713f8fd8fb95fc916 and its .patch form, resolving both the bundled dependency (CVE-2026-115936) and the underlying decoder flaw (CVE-2026-111497); release notes are at https://metacpan.org/release/TIMLEGGE/IO-Compress-Brotli-0.023/changes. Note explicitly that upgrading the system or OS-level brotli package does not remediate this, because the vulnerable decoder is statically bundled into the module, so any inventory check must look at the installed Perl distribution version rather than the host library version. Where an upgrade cannot be applied immediately, the compensating control indicated by the affected data flow is to stop passing untrusted or externally sourced brotli streams to IO::Uncompress::Brotli's unbro/decompress path and to perform that decompression with an independently patched brotli 1.2.1+ implementation or tool in a sandboxed, resource-limited process; the trade-off is added architectural complexity, a second decompression code path to maintain, and lost in-process convenience, while compression-only usage and decompression of trusted, self-generated streams remain outside the reachable condition. Deployments should also confirm no internal mirror or vendored fork still pins a pre-0.023 release.

Affected ProductsAI

IO::Compress::Brotli for Perl, all releases from 0.004001 up to but excluding 0.023, distributed via CPAN/MetaCPAN (https://metacpan.org/dist/IO-Compress-Brotli) and the VCS repo https://github.com/timlegge/perl-IO-Compress-Brotli. Within that range the embedded google/brotli versions run from 1.0.4 through 1.2.0 (for example, embedded 1.0.7 from 0.004_002, 1.1.0 from 0.005 onward, and 1.2.0 from 0.020), each carrying the decoder vulnerability described in CVE-2026-111497 and fixed upstream in brotli 1.2.1 (https://github.com/google/brotli/releases/tag/v1.2.1). Releases 0.023 and later bundle brotli 1.2.1 and are not affected by this bundled-decoder issue. No CPE identifiers were supplied in the input data. The upstream package changelog is at https://metacpan.org/release/TIMLEGGE/IO-Compress-Brotli-0.023/changes and the disclosure thread at https://seclists.org/oss-sec/2026/q4/367.

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

IO::Compress::Brotli is a CPAN distribution maintained by TIMLEGGE that exposes IO::Compress::Brotli (write brotli buffers/streams) and IO::Uncompress::Brotli (read brotli buffers/streams) to Perl. Rather than dynamically linking the platform brotli, affected releases vendor the google/brotli sources as a git submodule and build them into the extension; the changelog shows the submodule being advanced over time (1.0.7 in 0.004_002, 1.1.0 in 0.005-0.007, 1.2.0 in 0.020), and the 0.008 entry notes that brotli was switched to a static library build after 0.005-0.007 incorrectly built it as a shared library. Because the decoder ships inside the module, the CWE-1395 (Dependency on Vulnerable Third-Party Component) root cause is a supply-chain/version-pinning problem: the module carries a brotli decoder affected by the out-of-bounds write described in CVE-2026-111497. Any Perl code path that hands an attacker-controlled brotli stream to unbro or the decompress method reaches the bundled native decoder regardless of which brotli version the host OS provides, which is why the system-library upgrade is not a fix. The precise malformed-stream condition that reaches the out-of-bounds write is not described in the available sources; the advisory attributes the mechanism to the upstream brotli decoder defect. The 0.023 fix is a submodule bump to brotli 1.2.1 (commit 39a62a4 replacing submodule commit 028fb5a with db24a98).

Know when the next one hits your stack

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

vuln.today AI 8.1 HIGH

Crafted input can arrive remotely with no auth (AV:N/PR:N/UI:N); the trigger mechanism and reliable code-exec path are undescribed and non-trivial, so AC:H, with full C/I/A impact from an out-of-bounds write.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Lifecycle Timeline

1
Patch released
Oct 24, 2026 - 04:00 NVD

Description PRE-NVD

Disclosed via oss-security. NVD scoring and full description are pending.

Threat Intelligence Overview

Prevalence
Low
niche Perl CPAN binding; brotli itself is common but this module is not
Data Quality
2 sources
Confidence: Low
CVE.org GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy