Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

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

オープン 初心者向け
#10,355 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 2 日以内に返信

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
76/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
python
領域
devops, security

調査の方向性

まず uv.lock 内の certifi の固定バージョンと、issue で提案されているアップグレードコマンドを確認します。ロックファイルを certifi >= 2026.10.19 に更新し、指定されたテスト URL に対して提供された Python の検証スニペットを実行します。接続が SSL 検証エラーで失敗すれば完了です。

索引モデルが issue の本文から書いたものです。

説明

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
主要言語
Python
スター
170
フォーク
216
平均マージ
3日 22時間
マージ済み PR(30日)
363

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

PolicyEngine/policyengine-us のほかの issue

PolicyEngine/policyengine-us の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。