Out-of-bounds write in the Brotli decoder in sbomify (CVE-2026-111497)
sbomify v26.2.0 to v26.9.0 bundle brotli 1.2.0, whose decoder has an out-of-bounds write reachable through Brotli-compressed responses to outbound HTTP calls. Fixed in sbomify v26.10.0 (brotli 1.2.1); app.sbomify.com was fixed on 2026-10-24.
Am I affected?
sbomify
FixedUpgrade to sbomify v26.10.0 or later. app.sbomify.com has been fixed since the 2026-10-24 deploy.
Affected versions
- v26.9.0
- v26.8.0
- v26.7.1
- v26.7.0
- v26.3.0
- v26.2.0
- Before v26.10.0
Description
Summary
Out-of-bounds write in the Google Brotli decoder ("Node2Shell").
A buffer overflow in the Brotli decoder (c/dec/decode.c) in Google Brotli 1.0.3 through 1.2.0 lets a remote, unauthenticated attacker corrupt adjacent decoder memory with a crafted Brotli-compressed stream. This can disclose memory, cause a denial of service, or possibly lead to arbitrary code execution. The PyPI packages brotli (< 1.2.1) and brotlicffi (< 1.2.1.0) bundle the vulnerable decoder.
- Identifier: CVE-2026-111497 (aliases: GHSA-9v8h-qqgm-4m35, PYSEC-2026-4322, PYSEC-2026-4323)
- Severity: critical (CNA vector
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N) - CWE: CWE-787, CWE-252
Affected
- sbomify v26.2.0, v26.3.0, v26.7.0, v26.7.1, v26.8.0 and v26.9.0 ship
pkg:pypi/[email protected]in the sbomify - Python Stack component. Releases before v26.2.0 do not include brotli. pkg:pypi/[email protected]is also locked, but only for non-CPython interpreters (fonttools[woff]markerplatform_python_implementation != 'CPython'). The image runs CPython, so it is not installed.- The hosted service at app.sbomify.com ran an affected build until the 2026-10-24 deploy of master.
Assessment
brotliis a runtime dependency:weasyprint->fonttools[woff]->brotli(uv.lockat v26.9.0, line 263). The production image installs it withuv sync --locked --no-dev.- With
brotliimportable,requests/urllib32.7.0 advertisebrinAccept-Encodingand decodeContent-Encoding: brresponses on every outbound HTTP call.DependencyTrackClient(sbomify/apps/vulnerability_scanning/clients.pyline 34 at v26.9.0) uses arequests.Sessionagainst a server URL the workspace configures, so a malicious or intercepted server can feed a crafted stream to the vulnerable decoder in the worker process. - WeasyPrint also decodes WOFF2 fonts through the same library during PDF export. That input is not attacker-controlled, because markdown is HTML-escaped before rendering.
Remediation
- Fix:
brotli1.2.1 andbrotlicffi1.2.1.0 in https://github.com/sbomify/sbomify/pull/1899, merged into master asd50058a. - Hosted service: app.sbomify.com runs master, which includes the fix, since the 2026-10-24 deploy. No action is needed.
- Released: sbomify v26.10.0 (https://github.com/sbomify/sbomify/releases/tag/v26.10.0) is the first tagged release with the fix. It locks
brotli1.2.1 andbrotlicffi1.2.1.0 (uv.locklines 262-263 and 309-310 at v26.10.0). - Self-hosted: upgrade to sbomify v26.10.0 or later.
References
- https://nvd.nist.gov/vuln/detail/CVE-2026-111497
- https://github.com/advisories/GHSA-9v8h-qqgm-4m35
- https://github.com/pypa/advisory-database/tree/main/vulns/brotli/PYSEC-2026-4322.yaml
- https://github.com/pypa/advisory-database/tree/main/vulns/brotlicffi/PYSEC-2026-4323.yaml
- https://github.com/google/brotli/releases/tag/v1.2.1
- https://github.com/google/brotli/commit/0ed4268a4401abcb4472096340477cf4af7d1a2b
Timeline
Last updated 5 days ago
-
Update
5 days ago 39 minutes laterFix released in sbomify v26.10.0 (https://github.com/sbomify/sbomify/releases/tag/v26.10.0), published 2026-10-24.
d50058a(https://github.com/sbomify/sbomify/pull/1899) is an ancestor of thev26.10.0tag.uv.lockat v26.10.0 locksbrotli1.2.1 andbrotlicffi1.2.1.0.- Fixed in and recommended version set to v26.10.0. Self-hosted users should upgrade to v26.10.0 or later.
-
Published
5 days ago 1 minute laterPublished as SBOMIFY-SA-2026-0004 (public).
-
Resolved
5 days ago moments laterhttps://github.com/sbomify/sbomify/pull/1899 merged into sbomify/sbomify master as d50058a on 2026-10-23 and deployed to app.sbomify.com on 2026-10-24; not yet in a tagged release (latest release v26.9.0 predates it).
-
-
Identified
5 days ago first entry