Skip to content

Report wheel-vendored libbrotlidec as a bundled copy of its package - #3

Merged
devGregA merged 1 commit into
mainfrom
fix/brotli-wheel-vendored-advice
Oct 30, 2026
Merged

devGregA merged 1 commit into
mainfrom
fix/brotli-wheel-vendored-advice

Conversation

@devGregA

Copy link
Copy Markdown
Contributor

What changes

A libbrotlidec that a Python wheel vendors was reported as the system decoder library, so its fix read "Update the system Brotli package (libbrotli1, brotli-libs, libbrotli or brotli)". An OS update never touches that copy. Pillow's pillow.libs/libbrotlidec-*.so.1.2.0 is the case people will hit first, since Pillow has no fixed release yet.

Such a copy is now a bundled-decoder finding with product python-wheel. The message names the package, and the fix says to upgrade it:

[VULNERABLE] /usr/local/lib/python3.14/site-packages/pillow.libs/libbrotlidec-7e5462ba.so.1.2.0
   brotli/bundled-decoder: Brotli decoder without the CVE-2026-111497 fix (vendored in the pillow Python package)
   fix: Upgrade the pillow Python package to a release whose wheel bundles Brotli 1.0.10, 1.1.1, 1.2.1 or later. Updating the system Brotli package does not change this copy.

Recognised layouts:

  • <package>.libs/ from auditwheel (Linux) and delvewheel (Windows), which names the distribution
  • <module>/.dylibs/ from delocate (macOS), which names the import package, so the fix says "the Python package that provides PIL"

Only paths inside site-packages, dist-packages or a .whl count, so a libtool .libs build directory and other system paths stay decoder-library. Verdicts are unchanged.

Testing

  • New TestFile cases: Linux, macOS and wheel-member layouts (vulnerable and fixed), plus a libtool .libs directory and a foo.libs outside Python that must stay the system library.
  • go vet ./..., go test -race ./..., 20 s fuzz of pins, and govulncheck ./... are clean.
  • Real image: defectdojo/defectdojo-django:3.4.303-debian now reports the Pillow copy with the output above. The system library, Python Brotli and pycurl stay fixed.

🤖 Generated with Claude Code

A libbrotlidec that a Python wheel vendored (auditwheel and delvewheel's
<package>.libs, delocate's <module>/.dylibs) was reported as the system
decoder library, with "update the system Brotli package" as the fix. An OS
update never touches that copy. It is now a bundled-decoder finding for the
python-wheel product that names the package and says to upgrade it.

Only paths inside site-packages, dist-packages or a wheel count, so a
libtool .libs build directory and other system paths stay decoder-library.
Verdicts are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@devGregA
devGregA merged commit b76cf69 into main Oct 30, 2026
2 checks passed
@devGregA
devGregA deleted the fix/brotli-wheel-vendored-advice branch October 30, 2026 16:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants