Skip to content

Stop trusting the compromised eMudhra CA certificates - #378

Merged
anth-volk merged 1 commit into
mainfrom
emudhra-ca-trust-update
Oct 22, 2026
Merged

anth-volk merged 1 commit into
mainfrom
emudhra-ca-trust-update

Conversation

@anth-volk

@anth-volk anth-volk commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #380

Summary

On 2026-10-20 it was disclosed that eight intermediate CA certificates operated by eMudhra (emSign brand) have private keys that can be recovered from the public certificates, so anyone can issue a certificate for any domain under them. Six TLS intermediates chain to the root "emSign ECC Root CA - G3", and all eight were also cross-signed under Sectigo's "AAA Certificate Services". Software that carries its own CA list and has not been updated still trusts them. Details: https://emudhra.we-have-a-problem.com

What in this repository trusted the affected root. uv.lock pinned certifi 2025.11.12, which includes "emSign ECC Root CA - G3" (certifi 2026.10.19 removes it). httpx 0.28.1 verifies TLS against certifi's CA list by default, and this repository uses httpx for:

  • chronicle/artifacts.py and chronicle/source_package.py: downloading publisher artifacts from manifest source_urls, including scripts/fetch_r2_only_source_artifacts.py, which CI runs before the tests;
  • db/supabase_client.py: the Supabase Python client, which sends its API key over httpx.

I established this from the lockfile and the code paths above. No code in the repository disables certificate verification or sets a custom CA bundle (searched for verify=, SSL_CERT_FILE, REQUESTS_CA_BUNDLE, ssl_ca, cafile and similar). The repository has no Dockerfile, Modal app or Vercel project, so the lockfile affects CI and local development only.

Changes

  • uv.lock: certifi 2025.11.12 -> 2026.10.19, made with uvx uv@0.13.4 lock --upgrade-package certifi. uv 0.13.4 is the newest uv release and the version astral-sh/setup-uv@v5 installs in CI, since the workflows do not pin a uv version. That uv version also raised the lockfile revision field from 3 to 5. No other package changed.
  • changelog.d/emudhra-ca-trust-update.fixed.md: changelog fragment.

Chronicle Governance

This PR does not touch the Chronicle source-data boundary: no source package, consumer contract or schema changes.

Tests

After merge

  • No deployment needs rebuilding; nothing in this repository is deployed.
  • Contributors pick up the new certifi the next time they run uv sync on an updated main.

Environment variables: this PR does not change CI workflows or deployment code and adds no environment variables.

🤖 Generated with Claude Code

certifi 2025.11.12 still includes "emSign ECC Root CA - G3", whose
intermediate CA private keys were generated incorrectly and can be
recovered from the public certificates. httpx, which fetches publisher
artifacts and backs the Supabase client, reads certifi's CA list.

Updated with "uv lock --upgrade-package certifi" using uv 0.13.4, the
version setup-uv installs in CI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@anth-volk
anth-volk marked this pull request as ready for review October 22, 2026 17:24
@anth-volk
anth-volk merged commit 9ab3ebb into main Oct 22, 2026
3 checks passed
@anth-volk
anth-volk deleted the emudhra-ca-trust-update branch October 22, 2026 17:24
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.

Stop trusting the compromised eMudhra CA certificates

1 participant