Skip to content

Upgrade ca-certificates in Ruby base image - #10

Merged
dentarg merged 1 commit into
mainfrom
claude/great-pasteur-fho0wr
Oct 23, 2026
Merged

dentarg merged 1 commit into
mainfrom
claude/great-pasteur-fho0wr

Conversation

@dentarg

@dentarg dentarg commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

Why

The private keys of eight eMudhra intermediate CAs are recoverable from their public certificates (see https://emudhra.we-have-a-problem.com/). Browsers are protected by CT and revocation lists, but Ruby's Net::HTTP, curl, git and psql inside our images check neither, so they need an updated trust store.

Debian's fix is ca-certificates 20250419+deb13u1 in trixie-security (2026-10-20), which blacklists the two roots the intermediates chain to: "emSign ECC Root CA - G3" and "Comodo AAA Services root" (Debian bug 1151413).

Current state of our images

Read straight from the published GHCR layers:

Image Built ca-certificates G3 and AAA roots in bundle
ghcr.io/84codes/images/ruby:4.0.7 2026-09-21 20250419 present
ghcr.io/84codes/images/ruby:3.4.9 2026-09-21 20250419 present

The other four tags were built in the same run.

A rebuild alone is not enough: only the upstream ruby:4.0.7-slim tag has been rebuilt with the fix (2026-10-21). 3.3.10-slim, 3.4.8-slim, 3.4.9-slim, 4.0.1-slim and 4.0.2-slim were last built between February and June, and the Docker official images project only rebuilds current patch releases.

Change

Name ca-certificates in the apt-get install list. apt-get update already runs and trixie-security is in the base image's sources, so apt upgrades the package to the current security release on every tag.

After merge

  1. The Dockerfile change triggers the Ruby workflow, which rebuilds all six tags.
  2. Verify a rebuilt image. Expected: the fixed version is printed, then both commands fail with a certificate verify error:
    docker run --rm ghcr.io/84codes/images/ruby:4.0.7 sh -c \
      'dpkg-query -W ca-certificates; curl -sS https://dv-g3b-emudhra.we-have-a-problem.com/; \
       ruby -ropen-uri -e "URI.open(%q(https://dv-g3b-aaa-emudhra.we-have-a-problem.com/))"'
    
  3. Rebuild and redeploy the app images built FROM these tags.

Generated by Claude Code

The private keys of eight eMudhra intermediate CAs are recoverable from
their public certificates. Debian blacklists the two roots they chain
to ("emSign ECC Root CA - G3" and "Comodo AAA Services root") in
ca-certificates 20250419+deb13u1 (trixie-security, 2026-10-20).

Our published images were built on 2026-09-21 and still carry
ca-certificates 20250419 with both roots in the bundle. Only the
4.0.7-slim upstream tag has been rebuilt with the fix; the other pinned
tags are stale and will not be rebuilt by the Docker official images
project. Naming ca-certificates in the apt-get install list makes apt
upgrade it to the current security release on every tag.

https://emudhra.we-have-a-problem.com/
https://bugs.debian.org/1151413

Co-Authored-By: Claude Mythos 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WWVzR6FsLhD1cRrFUjWiVQ
@dentarg
dentarg merged commit 528455e into main Oct 23, 2026
8 checks passed
@dentarg
dentarg deleted the claude/great-pasteur-fho0wr branch October 23, 2026 12:29
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.

2 participants