Upgrade certifi to >= 2026.10.19 in uv.lock to mitigate eMudhra intermediate CA compromise
I maintainer di solito rispondono entro 2 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 76/100
Direzione di ricerca
Inizia controllando la versione bloccata di certifi in uv.lock e il comando di aggiornamento proposto nell’issue. Aggiorna il file di lock a certifi >= 2026.10.19, quindi esegui lo snippet di verifica Python fornito usando l’URL di test indicato; il lavoro è completato quando la connessione fallisce con un errore di verifica SSL.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
A major security incident (emudhra.we-have-a-problem.com) has compromised eight intermediate Certificate Authorities (CAs) operated by eMudhra (cross-signed by Sectigo / AAA Certificate Services). Due to a key generation flaw with virtually zero entropy, the private keys for these intermediate CAs can be computed directly from public certificates.
Anyone with these private keys can forge valid TLS/SSL certificates for any domain on the internet. While desktop web browsers have already pushed emergency revocation blocks (OneCRL, CRLSets, Apple CTL), non-browser clients—such as Python HTTP libraries (requests, httpx, certifi), curl, and uv—do not check revocation lists by default and will trust forged certificates until their CA bundles are patched.
Affected Areas in policyengine-us
uv.lockcurrently pinscertifi == 2026.1.4.certifi < 2026.10.19accepts the compromised eMudhra intermediate certificates.- Outbound HTTPS requests made through Python using
certifiare vulnerable to MitM attacks on untrusted networks. - Developer and CI packaging tools:
uvprior to0.13.4andpipprior to26.2.2are susceptible to intercepted package downloads if not updated.
(Note: Other PolicyEngine repos like policyengine-household-api and policyengine-core should also update their lockfiles and Docker base images/ca-certificates.)
Verification / Steps to Reproduce
Run the following script using the current virtual environment (certifi 2026.1.4):
import certifi, ssl, urllib.request
ctx = ssl.create_default_context(cafile=certifi.where())
try:
urllib.request.urlopen("https://dv-g3b-emudhra.we-have-a-problem.com/", context=ctx)
print("❌ VULNERABLE: Connected using compromised eMudhra intermediate CA")
except Exception as e:
print("✅ SECURE: Connection rejected:", e)
Observed behavior (certifi 2026.1.4):
❌ VULNERABLE: Connected using compromised eMudhra intermediate CA
Expected behavior (certifi >= 2026.10.19):
✅ SECURE: Connection rejected: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate>
Proposed Remediation
- Upgrade
certifito>= 2026.10.19inuv.lock:uv lock --upgrade-package certifi uv sync - Verify that running the test snippet above against
https://dv-g3b-emudhra.we-have-a-problem.com/fails with an SSL verification error.
References
- Advisory & Technical Summary: https://emudhra.we-have-a-problem.com/
- Mozilla Bugzilla Incident: https://bugzilla.mozilla.org/show_bug.cgi?id=2083449
- Certifi Release
2026.10.19: https://github.com/certifi/python-certifi/releases/tag/2026.10.19
- Lingua principale
- Python
- Stelle
- 170
- Fork
- 216
- Merge medio
- 3g 19h
- PR unite (30g)
- 355
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di PolicyEngine/policyengine-us
-
Illinois HBWD premium bands charge the next band's premium at each band edgeForse già presa @hua7450 l’ha presa 1 giorno fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
PolicyEngine/policyengine-us#10369 ·
I maintainer di solito rispondono entro 2 giorni
-
Florida School Readiness counts tips twice (employment_income already includes tip_income)Forse già presa @hermes-agent-909 l’ha presa 5 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
PolicyEngine/policyengine-us#10262 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
PolicyEngine/policyengine-us#10179 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
PolicyEngine/policyengine-us#10073 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
PolicyEngine/policyengine-us#10072 ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di PolicyEngine/policyengine-us
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
aws-samples/sample-per-model-bedrock#464 ·
I maintainer di solito rispondono entro 1 giorno
-
lesson-submission pending-review
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
Ikalus1988/MisakaNet#3789 ·
I maintainer di solito rispondono entro 1 giorno
-
Python Volcengine provider returns failures instead of raising themForse già presa @Ricardo-M-L l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 79/100
agent-infra/sandbox#248 ·
-
[Bug] cloud JSON directory loading assumes a Key field in fsspec listingsForse già presa @Ricardo-M-L l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
hiyouga/LlamaFactory#10910 ·
I maintainer di solito rispondono entro 1 giorno
-
Bundled uv is never updated and trusts the compromised eMudhra certificatesForse già presa @FabienDanieau l’ha presa oggi. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100