Skip to content

fix(sandbox): overlay patched Tornado and Python packages onto the image - #30

Merged
bradflaugher merged 1 commit into
mainfrom
fix/sandbox-python-cve-overlay
Sep 4, 2026
Merged

bradflaugher merged 1 commit into
mainfrom
fix/sandbox-python-cve-overlay

Conversation

@bradflaugher

Copy link
Copy Markdown
Contributor

What changed, and why

Fedora 44 ships python3-tornado 6.5.7, affected by GHSA-mpf4-983q-p7j4, and python3-ipykernel (which this image installs) requires it. The same base also carries pypdf 4.x, soupsieve, pygments and pip builds that lag their upstream security releases, so a Grype scan of this bundle's sandbox image reports every one of them as an open, fixable CVE.

This ports the fix fleet made to its own config/default/sandbox/Containerfile: pip-install the current PyPI releases (tornado>=6.5.8, pypdf, soupsieve, pygments, pip) into /usr/local, rpm -e --nodeps the vulnerable RPM copies, and fail the build if any RPM copy still shadows the overlay. It also runs microdnf upgrade before install so a rebuild refreshes base-layer packages inherited from fedora-minimal:latest.

Hand-ported, not synced — bundles are peers of fleet's default bundle.

How you verified it

  • Confirmed via microdnf repoquery on fedora-minimal:latest that the repo's python3-tornado is 6.5.7 and that python3-ipykernel requires it.
  • Built the patched sandbox/Containerfile with rootless Podman: the overlay step installs tornado-6.5.8, pypdf-6.17.0, soupsieve-2.9.2, pygments-2.21.0, pip-26.2.1, and the shadow check passes.
  • Ran the image read-only, cap-drop=ALL, network=none as UID 1000: tornado, pypdf, pygments, soupsieve, pip, ipykernel, jupyter_client, IPython, bs4, pandas, matplotlib all import; tornado.version is 6.5.8 from /usr/local; rpm -q python3-tornado python3-pypdf reports neither installed.
  • Grype 0.118.0 scan of the built image with fleet's .grype.yaml, --only-fixed --fail-on high: No vulnerabilities found.
  • The RUN block is byte-identical across the five ElcanoTek bundles, so one build certifies the same layers in each.

Scope and deviations

Only sandbox/Containerfile changes. Merging triggers the existing Publish sandbox image workflow (push to main, sandbox/**), so the fixed image is published automatically; running boxes pick it up on their next fleet update / image rebuild. No manifest, MCP, persona or protocol change.

Fedora 44 ships python3-tornado 6.5.7 (GHSA-mpf4-983q-p7j4), pulled in by
python3-ipykernel, plus pypdf 4.x, soupsieve, pygments and pip builds that
lag their upstream security releases. Grype flags every one of them as an
open, fixable CVE in this bundle's sandbox image.

Port fleet's config/default/sandbox/Containerfile fix: pip-install the
current PyPI releases (tornado>=6.5.8) into /usr/local, `rpm -e --nodeps`
the vulnerable RPM copies, and fail the build if any RPM copy still
shadows the overlay. Also run `microdnf upgrade` before `install` so a
rebuild refreshes base-layer packages inherited from fedora-minimal:latest.

Hand-ported, not synced: bundles are peers of fleet's default bundle.
The publish workflow rebuilds and pushes the image on merge; running
boxes pick it up on their next `fleet update` / image rebuild.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@bradflaugher
bradflaugher merged commit 6287db5 into main Sep 4, 2026
1 check passed
@bradflaugher
bradflaugher deleted the fix/sandbox-python-cve-overlay branch September 4, 2026 21:37
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.

1 participant