Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Upgrade certifi to >= 2026.10.19 in uv.lock to mitigate eMudhra intermediate CA compromise

Aperta Adatta ai principianti
#10,355 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

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
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
python
Ambito
devops, security

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.lock currently pins certifi == 2026.1.4.
  • certifi < 2026.10.19 accepts the compromised eMudhra intermediate certificates.
  • Outbound HTTPS requests made through Python using certifi are vulnerable to MitM attacks on untrusted networks.
  • Developer and CI packaging tools: uv prior to 0.13.4 and pip prior to 26.2.2 are 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 certifi to >= 2026.10.19 in uv.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
Lingua principale
Python
Stelle
170
Fork
216
Merge medio
3g 19h
PR unite (30g)
355

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di PolicyEngine/policyengine-us

Tutte le issue di PolicyEngine/policyengine-us

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.