Repository navigation
Conversation
…rtificates The gateway, KMS and verifier runtime images pinned ca-certificates=20230311+deb12u1 from the 20260317T000000Z snapshot. That trust store still holds emSign ECC Root CA - G3 and Comodo AAA Services root, and curl in an image built from those pins accepts a certificate issued by one of the compromised eMudhra/emSign intermediates. Advance the default Debian snapshot in pin-packages.sh to 20261021T000000Z, the first midnight snapshot whose debian-security archive carries ca-certificates 20250419~deb12u2 (bookworm) and 20250419+deb13u1 (trixie), and pin ca-certificates=20250419~deb12u2 in the three runtime lists and in the verifier builder list. The other pins are regenerated the way build-image.sh records them (dpkg -l of each stage after its apt step). Only packages whose pinned version is gone from the new snapshot move, all to Debian security updates: openssl/libssl3, curl/libcurl, krb5, nghttp2, jq, libcap2, protobuf, musl. A second pass with the regenerated lists produces the same lists. The gateway and KMS builder stages keep ca-certificates=20250419: they do not install ca-certificates, so the pin cannot move the copy that ships in the rust base image. The new images have new digests, so the compose hashes of the CVMs that run them must be registered again in the on-chain and auth-config allowlists. Signed-off-by: Leechael Yim <yanleech@gmail.com>
Leechael
marked this pull request as ready for review
October 22, 2026 02:03
This branch has not been deployed
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.
The gateway, KMS and verifier runtime images pinned
ca-certificates=20230311+deb12u1from the20260317T000000ZDebian snapshot. That trust store still contains emSign ECC Root CA - G3 and Comodo AAA Services root, so any client in those images that reads the system store (curl, and the Rust services through rustls-platform-verifier until they get rustls-webpki 0.103.16) accepts a certificate issued by one of the compromised eMudhra/emSign intermediate CAs.Changes
dstack/build/shared/pin-packages.sh: defaultSNAPSHOT_DATE20260317T000000Z->20261021T000000Z.ca-certificates 20250419~deb12u2(bookworm) in debian-security at20261020T213255Z, and20250419+deb13u1(trixie) at20261020T205625Z.20261021T000000Zis the first midnight timestamp after both.debian-security/20261021T000000Z/dists/{bookworm,trixie}-security/main/binary-amd64/Packages.xzand checked that they list20250419~deb12u2and20250419+deb13u1.ca-certificates:pinned-packages.txtpinned-packages.txtpinned-packages.txtbuilder-pinned-packages.txtbuilder-pinned-packages.txtdeb12u2 -> 3.0.22-1deb12u1 (all three); curl/libcurl 7.88.1-10+deb12u14 -> deb12u15, krb5 1.20.1-2+deb12u4 -> deb12u5, libnghttp2 1.52.0-1+deb12u2 -> deb12u3 (gateway, verifier); jq/libjq 1.6-2.1+deb12u1 -> deb12u3, libcap2 1:2.66-4+deb12u2+b2 -> deb12u3+b1 (gateway).deb13u1 -> 3.5.7-1deb13u3, protobuf 3.21.12-11 -> 3.21.12-11+deb13u1, musl 1.2.5-3 -> 1.2.5-3.1~deb13u1 (gateway, kms); openssl/libssl 3.0.18 -> 3.0.22, protobuf 3.21.12-3 -> 3.21.12-3+deb12u1 (verifier).The gateway and KMS builder stages keep
ca-certificates=20250419. Their apt step does not install ca-certificates, so the pin cannot move the copy that ships in therust:1.92.0base image. That trust store is only used at build time (git clone, crate download; crates are checked against the Cargo.lock checksums). Listed under remaining work.How the lists were generated
No build-image.sh run on this box: it clones the pushed revision and does the full release build. Instead, for each of the six stages I ran the same base image (same digest) with the new
pin-packages.shand the edited list, ran the stage's exactapt-get installline, and wrotedpkg -lthe wayextract_packagesdoes. A second pass that used the regenerated lists as input gave byte-identical lists for all six stages. That is the same checkverify-pinned-packages.shdoes in CI.Plain http to snapshot.debian.org is blocked from this box, so for these generation runs only I rewrote the sources to https inside the throwaway containers. apt still checked the InRelease signatures. The committed
pin-packages.shis unchanged apart from the date.Self-test against the emSign test site
A container from the pinned
debian:bookwormbase, with the verifier runtime list andapt-get install ca-certificates curl:Tests run
python3 -m unittest test_build_libindstack/build/shared/tests: 6 tests pass.Not run here
build-image.shbuilds and the Docker Build Check workflow. Itsverify-pinned-packages.shsteps on this PR are the authoritative check.Rollout impact
Every rebuilt image (gateway, KMS, verifier) has a new digest, so the compose hash of each CVM that runs it changes. Register the new compose hashes in the on-chain allowlists and auth configs before rolling out. Anything that pins the verifier image by digest has to move to the new image as well.
Remaining
ca-certificates 20250419from the rust base image). Fixing it means addingca-certificatesto the builderapt-get installline or moving to a newer rust base image. It only affects the build stage, so I left it out of this PR.security/emsign-rust-workspace.