Repository navigation
Conversation
The control-plane, CAS, and CLI images are built FROM scratch and copy the Debian ca-certificates bundle out of the digest-pinned golang builder without refreshing it, which freezes the trust store at whatever shipped in the pinned builder. The images therefore keep trusting roots that have been distrusted upstream, such as the compromised emSign ECC Root CA - G3. Refresh ca-certificates in each builder stage before copying it into the scratch stage, so every rebuild ships the current distrust list regardless of the base-image digest. The migrations image is unaffected as it carries no CA bundle. Chainloop-Trace-Sessions: bebfb52d-8100-43df-bd87-a23b8013317b Signed-off-by: Matías Insaurralde <matias@chainloop.dev>
PR validation — ✅ 3 passing
AI Session Checks — 🟢 83% · ✅ 0 failing
|
| Status | Attribution | File | Lines |
|---|---|---|---|
| modified | ai | app/cli/Dockerfile.goreleaser |
+6 / -1 |
| modified | ai | app/artifact-cas/Dockerfile.goreleaser |
+6 / -0 |
| modified | ai | app/controlplane/Dockerfile.goreleaser |
+6 / -0 |
Policies (5)
| Status | Policy | Material | Messages |
|---|---|---|---|
| ✅ Passed | ai-session-no-auto-pr |
ai-coding-session-bebfb5 |
- |
| ✅ Passed | ai-config-ai-agents-allowed |
ai-coding-session-bebfb5 |
- |
| ✅ Passed | ai-config-no-dangerous-commands |
ai-coding-session-bebfb5 |
- |
| ✅ Passed | ai-config-no-secrets |
ai-coding-session-bebfb5 |
- |
| ✅ Passed | ai-config-mcp-servers-allowed |
ai-coding-session-bebfb5 |
- |
Security Checks — ✅ 5 passing
✅ secret-scan
| Status | Policy | Messages |
|---|---|---|
| ✅ Passed | secrets-detection |
- |
✅ sast-scan
| Status | Policy | Messages |
|---|---|---|
| ✅ Passed | owasp-top10-2025 |
- |
| ✅ Passed | sast |
- |
| ✅ Passed | cwe-top25 |
- |
| ✅ Passed | cwe-top26-40-cusp |
- |
Scans not applied (3)
| Scan | Reason |
|---|---|
vulnerability-scan |
no manifest/lockfile changed |
github-actions-scan |
no workflow files changed |
iac-scan |
no IaC files changed |
Security context
✅ Nothing this change touches has a recorded security-fix history.
View in Chainloop ↗ · How this works ↗
Powered by Chainloop and Chainloop Trace
|
We would have to check dagger as well |
Summary
The control-plane, CAS, and CLI images are built FROM scratch and copy the Debian ca-certificates bundle out of the digest-pinned golang builder without refreshing it. That freezes the trust store at whatever shipped in the pinned builder, so the images keep trusting roots that have since been distrusted upstream (such as the compromised emSign ECC Root CA - G3).
This refreshes ca-certificates in each builder stage before it is copied into the scratch stage, so every rebuild ships the current distrust list regardless of the base-image digest. The migrations image is unaffected as it carries no CA bundle.
Closes ENG-515