Repository navigation
Stop trusting the compromised eMudhra CA certificates - #30
Merged
Merged
Conversation
certifi 2026.7.22 included "emSign ECC Root CA - G3", whose eMudhra intermediate CA certificates have private keys that can be recovered from their public certificates. certifi 2026.10.19 removes that root. Only certifi changes in uv.lock (uv 0.13.4, --upgrade-package certifi). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
On 2026-10-20 it was disclosed that eight eMudhra (emSign) intermediate CA certificates were issued with private keys small enough to recover from the public certificates (https://emudhra.we-have-a-problem.com). Anyone can use them to issue a certificate for any domain, so a client that still trusts the "emSign ECC Root CA - G3" root can be served a forged certificate by someone on the network path. Browsers and operating systems already block these intermediates; software that carries its own CA list, such as Python's certifi, needs an update.
What in this repository trusted the affected root
uv.locklockedcertifi2026.7.22, which includes "emSign ECC Root CA - G3". certifi 2026.10.19 is the first release without it.https://microcosm-telemetry-389282473430.us-central1.run.app,src/microcosm_emitter/core/constants.py) and to the Orrery publication origin (https://microcosm-runs.vercel.app,src/microcosm_emitter/orrery/service/queue.py). huggingface-hub also uses httpx. No code setsverify=False, a custom CA bundle, or a CA environment variable.uv.locklocks hf-xet 1.7.0. Releases from 1.4.3 onward use the operating-system CA store rather than a compiled-in list, so hf-xet needs no change.uv sync --lockedinci.ymlandtools/check-collector.sh) and to local development from a checkout.uv tool install microcosm-emitterresolves its own dependency versions and does not read this lockfile.Changes
uv.lock: certifi 2026.7.22 -> 2026.10.19, produced withuvx uv@0.13.4 lock --upgrade-package certifi. uv 0.13.4 is the version CI installs:setup-uvhas noversioninput andpyproject.tomlsets norequired-version, so CI uses the newest uv release. No other package changed.changelog.d/emudhra-ca-trust-update.fixed.md: a "fixed" fragment, astools/check-changelog.shrequires. When merged, it produces patch release 0.5.1.Checks
uv lock --locked(uv 0.13.4): passes, 54 packages resolved.python tools/bump-version.py --check: passes,0.5.0 -> 0.5.1.uv sync --locked, then the commands intools/check-quality.sh(ruff check .,ruff format --check .,bash -n tools/*.sh): all pass.https://dv-g3b-emudhra.we-have-a-problem.com/andhttps://dv-g3b-aaa-emudhra.we-have-a-problem.com/fail withCERTIFICATE_VERIFY_FAILED, so the client is protected.https://dv-g3b-emudhra.we-have-a-problem.com/returned HTTP 200, so the client trusted the compromised intermediate. The Sectigo cross-signed endpoint was already rejected.Operator actions after merge
push.yaml, which bumps the version to 0.5.1 and publishes it to PyPI. The published wheel has the same dependency ranges as before, since it does not include the lockfile.uv tool install microcosm-emitterbefore 2026-10-20 02:24 UTC, when certifi 2026.10.19 was published, has an older certifi in that tool environment. Runuv tool upgrade microcosm-emitterto update it and its dependencies. Check the installed tool environment with"$(uv tool dir)/microcosm-emitter/bin/python" -c "import certifi; print(certifi.__version__)"(on Windows,Scripts\python.exein place ofbin/python), which should print2026.10.19or later.uv syncafter pulling.This PR does not change workflows, container definitions or other deployment code, so it reads or declares no environment variables.
🤖 Generated with Claude Code