Compromised eMudhra emSign intermediate CAs trusted by sbomify and sbomify Action (GHSA-6q48-6c7w-9gw2)
certifi, pip's vendored certifi, the sbomify image's OS CA bundle, sigstore and the JDK in sbomify Action's jvm tool bundle trusted eMudhra emSign roots whose intermediate CA keys were compromised, allowing TLS interception of outbound connections by an attacker holding those keys. Fixed in sbomify v26.10.0 and sbomify Action v26.10.1; the jvm tool bundle was fixed on 2026-10-26 for every Action release; app.sbomify.com is fixed.
Am I affected?
sbomify
FixedUpgrade to sbomify v26.10.0 or later. The hosted service at app.sbomify.com is already fixed.
Affected versions
- v26.9.0
- v26.8.0
- v26.7.1
- v26.7.0
- v26.3.0
- v26.2.0
- v26.1.0
- v0.27.0
- v0.26.0
- Release v0.25.1
- Release v0.25
- Release v0.24
- Release v0.23
- Release v0.22
- Release v0.21
- Release v0.20
- Release v0.19
- Release v0.18
- Release v0.17.2
- Release v0.17.1
- v0.16.5
- v0.16.2
- Before v26.10.0
Show all 23 Show fewer
sbomify Action
FixedUpgrade to sbomify Action v26.10.1 or later. For Maven, Gradle and sbt projects, also delete any persisted bundle-jvm-tools-rolling-* tool cache (self-hosted runners) so the rebuilt jvm bundle from 2026-10-26 is downloaded; GitHub-hosted runners need no action.
Affected versions
- v26.9.0
- v26.8.0
- v26.7.0
- v26.2.0
- v0.14
- Release v0.13
- Release v0.12
- Release v0.11
- Before v26.10.1
Show all 9 Show fewer
Description
Summary
eMudhra's emSign intermediate CAs were compromised, and their private keys were trivially weak. Anyone holding those keys can issue certificates that chain to the emSign roots. Any client that still trusts those roots can then be intercepted (MITM) over TLS.
sbomify and sbomify Action trusted the affected emSign roots in these places:
- certifi in sbomify: the app's Python CA bundle.
requests,httpxandsentry-sdkuse it for all outbound TLS, including vulnerability scanners, webhooks and challenge checks. - certifi in sbomify Action: the CA bundle the action trusts for its uploads to sbomify and its package-registry lookups.
- pip's vendored certifi: pip before 26.2.2 always trusts it, even alongside the system store. The sbomify image build ran
pip install uvwith it. - The sbomify production image's OS CA bundle: Python
ssldefaults,cosignandosv-scannerread it. It still trusted emSign Root CA C1 and ECC C3. - sigstore before 4.5.1, used by sbomify.
- pypa/gh-action-pypi-publish before v1.14.3, used to publish sbomify Action to PyPI.
- The JDK in sbomify Action's jvm tool bundle: Temurin's
cacertstrusted emSign Root CA - G1 and emSign ECC Root CA - G3. sbomify Action downloads this bundle from sbomify/sbom-tools at run time to generate SBOMs for Maven, Gradle and sbt projects, and that JDK makes the build tools' HTTPS connections to Maven Central and the Gradle plugin portal. - Identifier: GHSA-6q48-6c7w-9gw2 (certifi bundles emSign root CAs with compromised intermediate CA keys; upstream severity Critical, published 2026-10-20)
- References:
Affected
- sbomify: all releases up to and including v26.9.0 (certifi 2025.10.5 in v26.9.0). v26.10.0 is the first fixed release. The hosted service at app.sbomify.com is fixed.
- sbomify Action: all releases up to and including v26.9.0 (certifi 2026.6.17 in v26.9.0). v26.10.0 ships certifi 2026.10.19 and is not affected at runtime. v26.10.1 is the first release that also ships the patched PyPI publish step.
- sbomify Action, JVM projects (added 2026-10-26): every release from v26.8.0 to v26.10.2 fetched a jvm tool bundle whose JDK still trusted emSign Root CA - G1 and ECC G3. This was corrected on 2026-10-26, when the bundle was rebuilt. It applies only to SBOMs generated for Maven, Gradle or sbt projects. The bundle is downloaded at run time, so upgrading the Action does not change it; see Remediation.
Impact
An attacker on the network path between sbomify or sbomify Action and an upstream service could present a certificate issued under a compromised emSign intermediate. The attacker would also need to hold one of the compromised keys. With both, they could read or alter that outbound connection. Examples are a vulnerability feed, a webhook delivery, an SBOM upload from the action, or a package download during the image build. We have found no evidence that this happened. Inbound connections to app.sbomify.com are not affected, because they use sbomify's own certificates.
Remediation
All fixes are merged. The minimum fixed versions follow Python's guidance: certifi 2026.10.19, pip 26.2.2, sigstore 4.5.1 and gh-action-pypi-publish v1.14.3.
- https://github.com/sbomify/sbomify/pull/1869: certifi 2025.10.5 → 2026.10.19 in the app. Released in sbomify v26.10.0.
- https://github.com/sbomify/sbomify/pull/1887: Python 3.14.9 / pip 26.2.2 base image and sigstore 4.5.1. The production image's OS CA bundle now tracks upstream Wolfi
ca-certificates-bundle, which follows Mozilla's root store: emSign ECC Root CA - G3 is removed, and emSign Root CA - G1 is the only emSign root left. certifi 2026.10.19 follows the same store and still includes G1, C1 and ECC C3. OpenJDK's guidance for the JDK (JDK-8395690) goes further and also distrusts G1, which is why the JDK in sbomify Action's jvm tool bundle drops it. We follow each ecosystem's own root-store decision, and will update sbomify if Mozilla removes G1. Released in sbomify v26.10.0. - https://github.com/sbomify/sbomify-action/pull/457: certifi 2026.6.17 → 2026.10.19 in the action. Released in v26.10.0.
- https://github.com/sbomify/sbomify-action/pull/466: gh-action-pypi-publish v1.14.3 for the PyPI publish step. Released in v26.10.1.
- https://github.com/sbomify/sbom-tools/pull/51: the jvm tool bundle moves to Temurin 21.0.13+9. At assembly it removes emSign Root CA - G1 and ECC G3 from the JDK's
cacerts, following OpenJDK's guidance for CVE-2026-114820 / JDK-8395690, and the build fails if either is still present. Thetools-rollingbundle that sbomify Action downloads was rebuilt from it on 2026-10-26. Itscacertshas no emSign roots (verified withkeytool).
Users: upgrade sbomify Action to v26.10.1 or later (v26.10.0 is the minimum for the runtime fix). For JVM projects no upgrade is needed: every release fetches the rebuilt bundle. However, the action reuses a bundle it has already downloaded. If your runner keeps the sbomify tool cache between jobs (a self-hosted runner, or a persisted SBOMIFY_TOOL_CACHE, XDG_CACHE_HOME or HOME), delete the bundle-jvm-tools-rolling-* directory under sbomify/runtimes (or under SBOMIFY_TOOL_CACHE) so the next run downloads the fixed bundle. GitHub-hosted runners start clean and need no action. The ghcr.io/sbomify/sbomify-action:latest image already points at v26.10.1. Self-hosted sbomify users should upgrade to sbomify v26.10.0 (https://github.com/sbomify/sbomify/releases/tag/v26.10.0) or later.
Timeline
Last updated 4 days ago
-
Update
4 days ago 2 minutes laterClarified the emSign G1 wording. The sbomify image (verified on v26.10.0) and certifi 2026.10.19 still trust emSign Root CA - G1, because Mozilla's root store removed only ECC G3. OpenJDK's guidance (JDK-8395690) also distrusts G1, so the JDK in sbomify Action's jvm tool bundle drops it. The earlier text called G1 "unaffected", which overstated the vendors' agreement.
-
Update
4 days ago 1 day laterScope extended: sbomify Action's jvm tool bundle (2026-10-26).
A follow-up audit found that the JDK in the jvm tool bundle, which sbomify Action downloads at run time for Maven, Gradle and sbt projects, still trusted emSign Root CA - G1 and ECC G3. This affected every Action release from v26.8.0 to v26.10.2.
https://github.com/sbomify/sbom-tools/pull/51 removes them at assembly and moves to Temurin 21.0.13+9. The
tools-rollingbundle was rebuilt on 2026-10-26, and itscacertshas no emSign roots (checked withkeytool).No Action upgrade is needed. Runners that persist the sbomify tool cache should delete
bundle-jvm-tools-rolling-*so the fixed bundle is downloaded. -
Update
5 days ago 1 day latersbomify fix released in v26.10.0 (https://github.com/sbomify/sbomify/releases/tag/v26.10.0), published 2026-10-24.
- https://github.com/sbomify/sbomify/pull/1869 (
b5d2669) and https://github.com/sbomify/sbomify/pull/1887 (33b63393) are both ancestors of thev26.10.0tag. uv.lockat v26.10.0 locks certifi 2026.10.19 and sigstore 4.5.1.- sbomify: fixed in and recommended version set to v26.10.0. sbomify Action is unchanged (fixed in v26.10.1).
- https://github.com/sbomify/sbomify/pull/1869 (
-
Update
1 week ago 3 hours later2026-10-23 13:25 UTC: sbomify Action v26.10.1 released (https://github.com/sbomify/sbomify-action/releases/tag/v26.10.1). It is the first release that ships https://github.com/sbomify/sbomify-action/pull/466, and it was published to PyPI through gh-action-pypi-publish v1.14.3. The
ghcr.io/sbomify/sbomify-action:26.10.1image was pushed at 13:40 UTC, and:latestis built from the same commit. Users should upgrade to v26.10.1 or later. -
Published
1 week ago 2 minutes laterPublished as SBOMIFY-SA-2026-0003 (public).
-
Resolved
1 week ago moments later2026-10-22 20:06 UTC: last fix shipped. https://github.com/sbomify/sbomify/pull/1887 merged at 20:02 and the fixed image was published to ghcr.io/sbomify/sbomify:latest (commit 33b63393). https://github.com/sbomify/sbomify-action/pull/466 merged at 20:04.
-
Fix in progress
1 week ago moments later2026-10-21 11:56 UTC: https://github.com/sbomify/sbomify/pull/1869 merged (certifi 2026.10.19). At 14:16 UTC, https://github.com/sbomify/sbomify-action/pull/457 merged (certifi 2026.10.19), and it shipped in sbomify Action v26.10.0 on 2026-10-22 at 18:10 UTC. On 2026-10-22, follow-ups were opened for pip, sigstore, the OS CA bundle and gh-action-pypi-publish: sbomify#1887 at 18:48 UTC and sbomify-action#466 at 19:06 UTC.
-
Identified
1 week ago first entry