[Bug] Raise certifi >= 2026.10.19 and pip >= 26.2.2 to distrust the compromised eMudhra intermediates
メンテナーはふだん 1 日以内に返信
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 72/100
調査の方向性
まず pyproject.toml と requirements.txt で certifi と pip の最低バージョンを確認し、Docker イメージがこれらの依存関係をどのようにインストールするかを追ってください。最低バージョンを issue に記載された修正済みバージョンに引き上げ、クリーンインストールで certifi = 2026.10.19 と pip = 26.2.2 が解決されることを確認してください。修正を含めるには、古いイメージを再ビルドする必要があります。
索引モデルが issue の本文から書いたものです。
説明
Description
AstrBot's declared minimum versions of certifi and pip are still vulnerable to the October 2026 eMudhra intermediate-CA compromise:
pyproject.toml/requirements.txt:certifi>=2025.4.26pyproject.toml/requirements.txt:pip>=25.1.1
certifi versions before 2026.10.19 bundle the emSign ECC Root CA - G3 root. Eight eMudhra intermediate CAs chaining to that root had trivially recoverable P-384 private keys (d < 256), were revoked on 2026-10-18, and are blocked by browsers through OneCRL/CRLSet. Any client that trusts the root and does not enforce revocation can be MITM'd with a forged leaf certificate for an arbitrary hostname.
AstrBot loads the certifi bundle into its outbound SSL contexts (for example, runtime_bootstrap.py patches aiohttp's verified SSL context to the certifi-backed context, and io.py, zip_updater.py, plugin_service.py use certifi.where()). Plugin dependencies are installed with the in-process pip (pip_installer.py), and pip always adds its vendored certifi to certificate verification. With the current floors, environments can still resolve certifi < 2026.10.19 and pip < 26.2.2 (pip 26.2.2 is the first release that vendors certifi 2026.10.19).
Impact: an on-path attacker holding a compromised intermediate key can impersonate provider APIs (API keys and chat content) and plugin/update endpoints. Core, dashboard, and plugin ZIPs are downloaded over that TLS and executed after extraction, so the issue can escalate to code execution. Docker images built before 2026-10-19 keep the vulnerable certifi/pip baked in until rebuilt.
Reproduction Steps
-
Install AstrBot v4.29.1 (or an older Docker image) in a clean environment.
-
Check the resolved trust-store tooling:
python -c "import certifi; print(certifi.__version__)" python -m pip --versionExpected (fixed):
certifi >= 2026.10.19andpip >= 26.2.2.
Affected environments report something likecertifi 2026.7.22andpip 26.2.1. -
Network-position check with the incident test host
curl https://dv-g3b-emudhra.we-have-a-problem.com/A client with a vulnerable trust store completes the handshake; a fixed client returns a certificate error.
AstrBot Version
v4.29.1
Operating System
Linux
Deployment Method
Any
Message Platform Adapter
N/A
Error Log
No error is raised: the vulnerable trust store still validates a chain it should reject. Example from an affected environment:
$ python -c "import certifi; print(certifi.__version__)"
2026.7.22
$ python -m pip --version
pip 26.2.1 ...
A fixed environment reports `certifi 2026.10.19` and `pip 26.2.2`.
Supplementary Information
No response
Checklist
- I have searched the Issue list for related issues and could not resolve the problem, or this issue has never been reported before.
- I have tried disabling all plugins to rule out issues caused by plugins.
- The issue I am reporting is related to AstrBot itself, not to a specific plugin.
- I have read and agree to the project's Code of Conduct.
- (Optional) I am willing to submit a PR to help fix this issue.
- 主要言語
- Python
- スター
- 42.1k
- フォーク
- 3.1k
- 平均マージ
- 1日 2時間
- マージ済み PR(30日)
- 146
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
AstrBotDevs/AstrBot のほかの issue
-
[Bug] Discord slash command sync aborts with KeyError when a plugin handler is defined in a submodule対応中かも @yuexia5 が 2 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 77/100
AstrBotDevs/AstrBot#10626 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[Bug] QQ频道消息无法回复:markdown 回退顺序有误,误用主动消息导致 304049 限频対応中かも @he-yufeng が 14 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
AstrBotDevs/AstrBot#10420 · コメント 4 件 ·
メンテナーはふだん 1 日以内に返信
-
[Feature] 移除「切换到旧版知识库」入口対応中かも @lingyun14beta が 11 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
AstrBotDevs/AstrBot#10340 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
AstrBotDevs/AstrBot#10322 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[Bug] WebChat 聊天偏好在刷新后重置:流式输出、显示思考内容及发送快捷键対応中かも @C10H14N2O5 が 20 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
AstrBotDevs/AstrBot#10316 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
AstrBotDevs/AstrBot の issue をすべて見る
似ている issue
-
[Bug]: IndexHandler.post crashes with HTTP 500 on malformed payloads, missing credentials, or when login is disabled対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 6 日以内に返信
-
github_actions
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
collective/icalendar#2003 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 79/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
openzim/python-scraperlib#360 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
volcengine/OpenViking#6445 ·
メンテナーはふだん 1 日以内に返信