[Bug] Raise certifi >= 2026.10.19 and pip >= 26.2.2 to distrust the compromised eMudhra intermediates
Maintainer thường phản hồi trong vòng 1 ngày
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 72/100
Hướng nghiên cứu
Trước tiên, hãy kiểm tra các phiên bản tối thiểu của certifi và pip trong pyproject.toml và requirements.txt, sau đó theo dõi cách các Docker image cài đặt những dependency này. Nâng các phiên bản tối thiểu lên phiên bản đã sửa được nêu trong issue và xác minh rằng quá trình cài đặt sạch giải quyết certifi = 2026.10.19 và pip = 26.2.2; cần xây dựng lại các image cũ để bao gồm bản sửa lỗi.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- Python
- Star
- 42.1k
- Fork
- 3.1k
- Merge trung bình
- 1 ngày 2 giờ
- Pull request đã merge (30 ngày)
- 146
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của AstrBotDevs/AstrBot
-
[Bug] Discord slash command sync aborts with KeyError when a plugin handler is defined in a submoduleCó thể đã có người làm @yuexia5 đã nhận 3 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 77/100
AstrBotDevs/AstrBot#10626 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug] QQ频道消息无法回复:markdown 回退顺序有误,误用主动消息导致 304049 限频Có thể đã có người làm @he-yufeng đã nhận 14 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
AstrBotDevs/AstrBot#10420 · 4 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Feature] 移除「切换到旧版知识库」入口Có thể đã có người làm @lingyun14beta đã nhận 11 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
AstrBotDevs/AstrBot#10340 · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
AstrBotDevs/AstrBot#10322 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug] WebChat 聊天偏好在刷新后重置:流式输出、显示思考内容及发送快捷键Có thể đã có người làm @C10H14N2O5 đã nhận 20 ngày trước. Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
AstrBotDevs/AstrBot#10316 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của AstrBotDevs/AstrBot
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
gramaziokohler/compas_timber#870 ·
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
autowarefoundation/autoware_carla_scenario#500 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
good first issue priority: low size: XS testing
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 86/100
cubrid-lab/cubrid-mcp-server#385 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
good first issue priority: low size: S testing
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
cubrid-lab/cubrid-cookbook-python#447 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100