STAC-25000: VEX CVE-2026-9669 (bz2 decompressor reuse) as not_affected for stackstate-k8s-agent#13
Open
LouisLotter wants to merge 1 commit into
Open
STAC-25000: VEX CVE-2026-9669 (bz2 decompressor reuse) as not_affected for stackstate-k8s-agent#13LouisLotter wants to merge 1 commit into
LouisLotter wants to merge 1 commit into
Conversation
…k8s-agent embedded CPython Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
fvlankvelt
approved these changes
Jun 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
STAC-25000
Adds a Lane 2
not_affectedstatement for CVE-2026-9669 to the existingpkg:oci/stackstate-k8s-agentdocument, subcomponentpkg:generic/python@3.13.13, justificationvulnerable_code_not_in_execute_path.The CVE
CVE-2026-9669 (HIGH, disclosed 2026-06-08): if an application catches the
OSErrorfrom a failedbz2.BZ2Decompressor.decompress()call and then callsdecompress()again on the same instance, crafted input can resume the decompressor from an invalid internal state and perform out-of-bounds stack writes — a process crash (DoS), not code execution. Fix merged upstream (python/cpython#150600) with backports, but no released 3.13.x contains it yet, so the embedded interpreter cannot be patched by upgrading. Sibling of the already-vexed CVE-2026-6100 (same reuse pattern, MemoryError variant).Evidence (review 2026-06-10, image
quay.io/stackstate/stackstate-k8s-agent:02f4adaa)First-party source — no bz2 usage:
git grep -n "BZ2Decompressor" 02f4adaain stackstate-agent → zero matches.git grep -liE "bz2|bzip2" 02f4adaa→ only Goarchive/bzip2consumers (pkg/security/resolvers/file/analyzer.goetc. — compiled Go, not the embedded CPython) andtasks/kernel_matrix_testing/gdb.py(a.tar.bz2filename string in dev-only invoke tooling, not packaged into the image perDockerfiles/agent/Dockerfile).git grep -niE "import bz2|from bz2|BZ2"→ zero matches.Image inspection — stdlib is the only BZ2Decompressor consumer:
Stdlib consumers never reuse a failed decompressor instance (verified in the image's files):
zipfile/__init__.py:807—_get_decompressorreturns a freshbz2.BZ2Decompressor()per archive member._compression.py:53,88,128(backsbz2.BZ2File/bz2.open) — constructs a new decompressor at init, next-stream, andrewind(); never retries a failed instance.tarfile.py:387-388,549— setsself.exception = OSErrorand maps a decompress failure toReadErrorwithout callingdecompress()again on the same object.The vulnerable catch-OSError-and-retry-same-instance pattern therefore does not exist anywhere in the shipped image.
Action statement
Bump the omnibus-embedded CPython (
omnibus/config/software/python3.rb) to the first 3.13.x release containing the upstream fix, then retire this statement.tools/build_index.py --checkpasses (index regenerated,updated_atonly).🤖 Generated with Claude Code