Skip to content

fix(deps): drop the compromised emSign root from certifi and the system trust store - #16449

Merged
devGregA merged 2 commits into
DefectDojo:devfrom
devGregA:devgrega/pin-certifi-emudhra
Oct 21, 2026
Merged

devGregA merged 2 commits into
DefectDojo:devfrom
devGregA:devgrega/pin-certifi-emudhra

Conversation

@devGregA

@devGregA devGregA commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

What

  • Pins certifi==2026.10.19 in requirements.txt.
  • Adds a separate ca-certificates upgrade step to Dockerfile.django-debian and Dockerfile.django-alpine, after the existing package layers.

Why

Eight eMudhra intermediate CAs had private keys small enough to recover from the public certificates (Mozilla bug 2083449). certifi 2026.10.19 and the patched OS packages (Debian ca-certificates 20250419+deb13u1 per DSA-6572-1, Alpine ca-certificates-bundle 20261020-r0) stop trusting emSign ECC Root CA - G3, the root they chain to.

  • certifi reached the image only through requests, unpinned. The published defectdojo/defectdojo-django:latest (built 2026-10-19) ships certifi 2026.07.22 and Debian ca-certificates 20250419. Inside that image, requests.get("https://dv-g3b-emudhra.we-have-a-problem.com/"), the public test host serving a certificate from a compromised intermediate, returns 200.
  • The separate upgrade step exists because the release workflow builds with cache-from: type=gha. The apt-get upgrade / apk upgrade layer has the same text and the same digest-pinned base as the last release, so buildx can reuse it from the cache and the fixed package never installs. The new step runs after those layers.

Checked

  • In the published image, after upgrading certifi to 2026.10.19 and ca-certificates to 20250419+deb13u1, the request fails certificate verification (requests SSLError, curl verify=20).
  • The new Debian step on python:3.14.8-slim-trixie@sha256:a2b82f3c… exits 0 and leaves 20250419+deb13u1.
  • The new Alpine step on python:3.14.8-alpine3.23@sha256:e7cff362… exits 0 and upgrades 20260909-r0 to 20261020-r0 for both ca-certificates and ca-certificates-bundle.

After merge

The images need a release. Pro builds FROM defectdojo/defectdojo-django:<version>, so Pro needs a rebuild on the new base too.

🤖 Generated with Claude Code

certifi 2026.10.19 removes emSign ECC Root CA - G3, the root behind the
eight eMudhra intermediates whose private keys were recoverable (Mozilla
bug 2083449). certifi only reached the image through requests, unpinned,
so a cached or older build could still ship a bundle that trusts them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@devGregA
devGregA added this pull request to the merge queue Oct 21, 2026
Release builds restore layers from the GitHub Actions cache, so the
apt-get upgrade / apk upgrade layer can be reused from an older build
and an OS trust-store fix never reaches the image. A separate upgrade
step after those layers picks up the eMudhra fix (Debian
20250419+deb13u1, Alpine ca-certificates-bundle 20261020-r0).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@devGregA devGregA changed the title fix(deps): pin certifi 2026.10.19 to drop the compromised emSign root fix(deps): drop the compromised emSign root from certifi and the system trust store Oct 21, 2026
Merged via the queue into DefectDojo:dev with commit c5c8668 Oct 21, 2026
12 checks passed
@devGregA
devGregA deleted the devgrega/pin-certifi-emudhra branch October 21, 2026 00:35
@Maffooch Maffooch added this to the 3.4.201 milestone Oct 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants