PyPI सुरक्षा टीम की आधिकारिक सप्लाई चेन अटैक घटना रिपोर्ट: LiteLLM·Telnyx malicious package मामला और इससे बचाव
(blog.pypi.org)🔑 मुख्य सारांश
Trivy dependency vulnerability के ज़रिए API token चोरी किए गए, और इन्हीं के आधार पर PyPI पर litellm और telnyx पैकेजों के malicious version प्रकाशित किए गए। Malicious code install होते ही तुरंत चल गया, संवेदनशील credentials और files इकट्ठा किए, और फिर उन्हें बाहरी server पर exfiltrate कर दिया।
⚠️ यह malware अलग क्यों है
PyPI पर पहले के ज़्यादातर malicious package नए बनाए गए package होते थे, जैसे typosquatting। यह हमला अलग है। इसमें पहले से व्यापक रूप से इस्तेमाल हो रहे open source package में malicious code inject किया गया।
Injection के दो रास्ते हैं:
- कमजोर security वाले repository, release workflow, या authentication वाले open source project को सीधे निशाना बनाना
- latest version install करने वाली developer machine से API token और key चोरी करना
चोरी किए गए PyPI या GitHub API token से दूसरे open source package को भी compromise करने वाला यह chain attack ढांचा है।
📅 घटना टाइमलाइन
LiteLLM
Malicious version के exposure period के दौरान इसे 119,000 से अधिक बार download किया गया।
PyPI को "malware report" feature के माध्यम से 13 रिपोर्ट मिलीं।
| चरण | लगा समय |
|---|---|
| upload → पहली रिपोर्ट | 1 घंटा 19 मिनट |
| पहली रिपोर्ट → quarantine | 1 घंटा 12 मिनट |
| कुल exposure समय | 2 घंटे 32 मिनट |
LiteLLM को हर हफ्ते लगभग 1.5~2 करोड़ बार install किया जाता है, और हर मिनट लगभग 1,700 install होते हैं। इनमें से करीब 40~50% में version pin नहीं था, इसलिए वे अपने आप latest version ले रहे थे।
Telnyx
telnyx package को PyPI के trusted reporters pool की वजह से अपने आप quarantine कर दिया गया।
| चरण | लगा समय |
|---|---|
| upload → पहली रिपोर्ट | 1 घंटा 45 मिनट |
| पहली रिपोर्ट → quarantine | 1 घंटा 57 मिनट |
| कुल exposure समय | 3 घंटे 42 मिनट |
🛡️ डेवलपर्स के लिए सुरक्षा सिफारिशें
1. Dependency cooldowns
यह एक ऐसी रणनीति है जिसमें हाल ही में प्रकाशित package को कुछ समय तक install न करने के लिए configure किया जाता है, ताकि security researcher और PyPI maintainer को प्रतिक्रिया देने का समय मिल सके।
uv — अभी support उपलब्ध है:
# ~/.config/uv/uv.toml 또는 pyproject.toml
[tool.uv]
exclude-newer = "P3D" # 3 दिन के भीतर प्रकाशित package को exclude करें
pip v26.1 — अप्रैल में support आने वाला है:
# ~/.config/pip/pip.conf
[install]
uploaded-prior-to = P3D
> ⚠️ Cooldown कोई जादुई समाधान नहीं है। अगर security patch की ज़रूरत हो तो उसे तुरंत install करना चाहिए, इसलिए Dependabot·Renovate जैसे vulnerability scanning tool के साथ इसका उपयोग करना चाहिए।
2. Dependency locking
सिर्फ version रिकॉर्ड करने वाला pip freeze lock file नहीं है। सुरक्षा के लिए checksum/hash शामिल करने वाली असली lock file चाहिए।
सुझाए गए tool:
uv lockpip-compile --generate-hashespipenv
🔒 Open source maintainers के लिए सुरक्षा सिफारिशें
1. Release workflow security मजबूत करें
- Unsafe trigger का उपयोग न करें — GitHub Actions का
pull_request_targetखास तौर पर खतरनाक है - Parameters और input को sanitize करें — template injection रोकने के लिए उन्हें environment variable के रूप में पास करें
- Mutable reference का उपयोग न करें — Git tag की जगह commit SHA का उपयोग करें, और dependency lock file बनाए रखें
- Review-required deployment configuration — Trusted Publishers + GitHub Environments के संयोजन से deploy के समय अतिरिक्त approval माँगें
अगर आप GitHub Actions का उपयोग करते हैं, तो workflow vulnerabilities की जाँच के लिए Zizmor tool की सिफारिश की जाती है।
2. API token की जगह Trusted Publishers का उपयोग करें
- API token लंबे समय तक वैध रहते हैं, इसलिए चोरी होने पर तुरंत पता लगाना मुश्किल होता है
- Trusted Publishers short-lived token इस्तेमाल करते हैं, इसलिए चोरी हो भी जाएँ तो उन्हें तुरंत इस्तेमाल करना पड़ता है और जोखिम कम होता है
- Digital Attestations के ज़रिए downstream user यह पहचान सकते हैं कि कोई deploy सामान्य release workflow के बिना किया गया था
3. 2FA को अनिवार्य रूप से लागू करें
PyPI ने 2024 से package publish करने के लिए 2FA अनिवार्य कर दिया है। लेकिन सिर्फ PyPI account ही नहीं, बल्कि GitHub, GitLab, email और open source development से जुड़े सभी account पर 2FA लागू होना चाहिए, और संभव हो तो hardware key का उपयोग करना चाहिए।
💰 इस काम को support करने के लिए
PyPI की security गतिविधियाँ Python Software Foundation(PSF) के support से संभव हैं। आप PSF sponsorship program, direct donation, या sponsors@python.org पर संपर्क कर सकते हैं।
> Mike Fiedler और Seth Larson के PyPI security engineer पदों को Alpha-Omega का support प्राप्त है.
अभी कोई टिप्पणी नहीं है.