Skip to content

fix: distrust the compromised eMudhra CA; 6.4.1:1 → 6.4.1:2 - #7

Merged
stupleb merged 1 commit into
masterfrom
fix/emudhra-distrust
Oct 22, 2026
Merged

stupleb merged 1 commit into
masterfrom
fix/emudhra-distrust

Conversation

@stupleb

@stupleb stupleb commented Oct 22, 2026 •

Copy link
Copy Markdown
Owner

eMudhra's intermediates chaining to emSign ECC Root CA - G3 have compromised keys. ghcr.io/hzrd149/blossom-server:6.4.1 (Debian 13, built 2026-10-07, still upstream's latest) runs Deno 2.9.7 with no system CA store and DENO_TLS_CA_STORE unset, so Deno verifies TLS against its compiled-in webpki-roots 0.26.1, which still include G3 (grep -c -a "emSign ECC Root CA - G3" /usr/bin/deno prints 3). Deno 2.9.8 drops it (denoland/deno#37046, webpki-roots 1.0.10), but no upstream image ships it yet.

Why it matters here: BUD-04 mirroring is on by default and fetches the blob from any public URL. The admin dashboard looks up profiles on three public relays over wss://. Both use Deno's TLS.

Change:

  • Root Dockerfile takes the upstream image as the IMAGE build arg, installs Debian's ca-certificates, and sets DENO_TLS_CA_STORE=system so Deno trusts that store in place of its built-in roots. The build fails if the bundle is missing or still contains G3. Upstream's ENTRYPOINT and WORKDIR are inherited; the image sets no USER.
  • The manifest switches dockerTag → dockerBuild with the same image named. The layer is temporary; Remove the eMudhra CA-store layer once upstream ships a fixed image #8 tracks removing it once upstream ships an image on Deno 2.9.8 or later.
  • Revision 6.4.1:2 with the eMudhra release note in all five locales; README and UPDATING describe the layer.
  • start-sdk 3.0.4 → 3.1.0, which requires launchable on action result values (false on the admin credentials).

Evidence the fix lands: the packed aarch64 image carries ca-certificates 20250419+deb13u1, the G3 grep against /etc/ssl/certs/ca-certificates.crt prints 0, and its env has DENO_TLS_CA_STORE=system. In the layered image fetch("https://github.com") returns 200, and with that bundle emptied it fails certificate verification, so Deno is reading the system store and not its built-in roots. tsc is clean.

Deno 2.9.7 in ghcr.io/hzrd149/blossom-server:6.4.1 verifies TLS against
its compiled-in webpki-roots, which still trust emSign ECC Root CA - G3.
A temporary layer installs Debian trixie's fixed ca-certificates
(20250419+deb13u1), sets DENO_TLS_CA_STORE=system, and fails the build
if the bundle still contains G3. Blossom makes outbound public TLS for
BUD-04 mirroring and the admin dashboard's relay profile lookups.

start-sdk 3.0.4 → 3.1.0, which requires launchable on action results.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@stupleb
stupleb merged commit 4768d9c into master Oct 22, 2026
3 checks passed
@stupleb
stupleb deleted the fix/emudhra-distrust branch October 22, 2026 13:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant