Upgrade certifi to >= 2026.10.19 in uv.lock to mitigate eMudhra intermediate CA compromise
Los mantenedores suelen responder en 2 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 76/100
Línea de trabajo
Empieza comprobando la versión fijada de certifi en uv.lock y el comando de actualización propuesto en el issue. Actualiza el archivo de bloqueo a certifi >= 2026.10.19 y luego ejecuta el fragmento de verificación de Python proporcionado con la URL de prueba indicada; se considera terminado cuando la conexión falla con un error de verificación SSL.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Lenguaje dominante
- Python
- Estrellas
- 171
- Forks
- 217
- Merge medio
- 4 d 21 h
- PR fusionados (30 d)
- 333
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de PolicyEngine/policyengine-us
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
PolicyEngine/policyengine-us#10652 ·
Los mantenedores suelen responder en 2 días
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
PolicyEngine/policyengine-us#10552 ·
Los mantenedores suelen responder en 2 días
-
South Carolina OSS: require SSI's citizen or qualified-noncitizen test (S.C. Code Regs. 126-920)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
PolicyEngine/policyengine-us#10545 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
PolicyEngine/policyengine-us#10524 ·
Los mantenedores suelen responder en 2 días
-
bug state-income-tax states/ia
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
PolicyEngine/policyengine-us#10512 ·
Los mantenedores suelen responder en 2 días
Todos los issues de PolicyEngine/policyengine-us
Issues similares
-
ChatBedrockConverse changes the keys of JSON tool results to camelCase (`order_id` becomes `orderId`)Posiblemente ocupada @geyazheng la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
langchain-ai/langchain-aws#1469 ·
Los mantenedores suelen responder en 1 día
-
GCToggler leaves collection enabled if the body re-enables itPosiblemente ocupada @Gambit-Checkmate la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 7 días
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
EESSI/docs#949 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
doronz88/pymobiledevice3#2176 ·
Los mantenedores suelen responder en 1 día
-
b4b usability
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día