Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessDeliver crafted brotli stream to app
-
DeliveryApp calls unbro/decompress on input
-
ExploitTrigger out-of-bounds write in bundled decoder
-
ExecutionCorrupt decoder state
-
ImpactDisclose 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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.
Lifecycle Timeline
1Description PRE-NVD
Threat Intelligence Overview
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.
What every action level means
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.
CVE.org
GitHub
Exploit-DB