Repository navigation
Distrust compromised eMudhra CA: Foundry v1.8.6, BENS python 3.14.9 - #315
Merged
Merged
Conversation
In October 2026 the private keys of eight eMudhra intermediate CAs became derivable from their certificates. Mozilla removed emSign ECC Root CA - G3 in NSS 3.131.1, and Debian also distrusted AAA Certificate Services. Any trust store still holding either root accepts the compromised intermediates. Contracts CI moves Foundry from v1.7.1 to v1.8.6, which ships rustls-webpki 0.103.16 and webpki-roots 1.0.10; CI downloads solc and Soldeer dependencies over TLS. The BENS build and runtime base moves from python:3.14.8 to 3.14.9. It bundles pip 26.2.2, whose vendored certifi 2026.10.19 drops the root; pip 26.2.1 still trusted it next to the system store during the image's pip install. The system bundle is Debian ca-certificates 20250419+deb13u1. The Node pin (26.12.1) already carries the NSS 3.131.1 roots. docs/KNOWN_ISSUES.md records the third-party images that still trust the root and are waiting on upstream releases. The one that matters most is the smart-contract verifier, which downloads Solidity compilers over TLS through an Ubuntu bundle that still holds it. Verified: python:3.14.9 and a BENS image built from it contain none of the affected roots; forge 1.8.6 passes soldeer install, fmt --check, build --sizes, the verify-mapping check and 355 tests; the hygiene, link, licence, node-version, Besu baseline and image-hash checks pass.
This was referenced Oct 22, 2026
Merged
Greaker
added a commit
that referenced
this pull request
Oct 27, 2026
…docs (#323) Mark Phase 5 (Besu 26.10.0) merged as #312 and move the plan to Phase 6. Record the operator's second confirmation of decision D4 (ffmpeg in the locally built Blockscout v12 image), given on 2026-10-21, in progress.md and in the design decision table, and note that #315 and #313 moved the BENS Python and Node pins outside the plan. services/nb-ui/DEVELOPMENT.md still named nginx-unprivileged 1.27-alpine as the runtime image; the pin is 1.30.6-alpine. Point at the common/images.yaml pin instead of repeating the tag so it cannot drift.
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.
Summary
In October 2026 the private keys of eight eMudhra intermediate CAs became derivable from their public certificates (Mozilla bug 2083449). Mozilla removed emSign ECC Root CA - G3 in NSS 3.131.1, Sectigo revoked the intermediates' cross-signs from AAA Certificate Services, and Debian also distrusted that root (#1151413). Any trust store that still holds either root accepts the compromised intermediates.
v1.7.1→v1.8.6(.github/workflows/test-contracts.yml). v1.8.6 shipsrustls-webpki0.103.16 andwebpki-roots1.0.10. CI downloadssolcand Soldeer dependencies over TLS.python:3.14.8→python:3.14.9(common/images.yaml,common/helpers.sh, the BENSDockerfile,services/blockscout/values.yaml). 3.14.9 bundles pip 26.2.2, whose vendored certifi 2026.10.19 drops the root. pip 26.2.1 trusted its vendored certifi next to the system store during the image'spip install. The3.14.8tag is also no longer maintained.docs/KNOWN_ISSUES.md: records the third-party images that still trust the root and are waiting on upstream fixes. The one that matters most is the smart-contract verifier, which downloads Solidity compilers over TLS through its Ubuntu bundle.Test plan
python:3.14.9: system bundle (Debianca-certificates 20250419+deb13u1) and pip's vendored certifi both contain none of the affected roots; checked withopenssl storeutlon files copied out of a created, never-started containercd contracts && forge soldeer install && forge fmt --check && forge build --sizes && bash ./check-verify-latest-mapping.sh && forge testwith forge 1.8.6 (355 tests pass). The build warnings come from OpenZeppelin sources and already appear on v1.7.1.check-public-repo-hygiene.py,check-markdown-links.py,check-third-party-licenses.py,check-node-version-consistency.py,check-besu-qbft-baseline.py,check-image-hash-inputs.shForge 1.8.6's Soldeer rewrites
contracts/soldeer.lockwith aversion = 2header on install. The dependencies are unchanged, and the old format installs fine, so the lockfile is left as is.