Summary
The Strix sandbox image does not resolve the same declared inputs every time it is built from the same commit
Its Dockerfile uses rolling images, latest package versions, and remote installer scripts without fixed artifacts
This weakens reproducibility, reviewability, and incident response for the environment that runs security tools against user targets
Moving parts in the current build
The current containers/Dockerfile includes these inputs
- The base image is
kalilinux/kali-rolling:latest in both build stages
- Several Go tools installed with
@latest
- Several npm tools installed with
@latest
- The uv shell installer without a pinned release artifact
- The latest Gitleaks release selected at build time
- The Trivy installer without a pinned version
Recommendation
Pin the Kali base image by digest and pin every directly installed Go, npm, Python, and downloaded tool version
Downloaded artifacts should have checksum verification, and the finished image should include a machine-readable inventory of its tools and versions
Dependency updates can then happen through explicit reviewable commits followed by smoke tests for both supported architectures
Relationship to existing work
Pull request #960 contains related publishing, SBOM, and provenance work
This issue covers the mutable inputs that remain inside the Dockerfile
The end result should let maintainers rebuild the same declared inputs from the same commit and let users select the runtime image by digest
Summary
The Strix sandbox image does not resolve the same declared inputs every time it is built from the same commit
Its Dockerfile uses rolling images,
latestpackage versions, and remote installer scripts without fixed artifactsThis weakens reproducibility, reviewability, and incident response for the environment that runs security tools against user targets
Moving parts in the current build
The current
containers/Dockerfileincludes these inputskalilinux/kali-rolling:latestin both build stages@latest@latestRecommendation
Pin the Kali base image by digest and pin every directly installed Go, npm, Python, and downloaded tool version
Downloaded artifacts should have checksum verification, and the finished image should include a machine-readable inventory of its tools and versions
Dependency updates can then happen through explicit reviewable commits followed by smoke tests for both supported architectures
Relationship to existing work
Pull request #960 contains related publishing, SBOM, and provenance work
This issue covers the mutable inputs that remain inside the Dockerfile
The end result should let maintainers rebuild the same declared inputs from the same commit and let users select the runtime image by digest