Red Hat Cloud Services में दुर्भावनापूर्ण npm पैकेजों का पता चला
घटना का दायरा
- दुर्भावनापूर्ण npm पैकेज Red Hat Cloud Services के JavaScript client repos में डाले गए, apparently एक compromised CI/CD pipeline (GitHub Actions + OIDC) के जरिए, न कि चोरी की गई static credentials के जरिए।
- प्रभावित पैकेज frontend libraries हैं जो कुछ Red Hat container images में compile की जाती हैं; प्रभाव मुख्यतः उन images के consumers पर दिखता है, सीधे npm users पर नहीं।
- थ्रेड में जुड़े कई analyses shared pipelines की सूची बनाते हैं और इसे व्यापक “mini‑Shai-Hulud” / TrapDoor‑style npm worms का हिस्सा वर्गीकृत करते हैं।
क्या यह npm की समस्या है या ecosystem की समस्या?
- कई लोगों का तर्क है कि सभी modern language package managers (npm, PyPI, crates.io, Composer, NuGet, RubyGems, आदि) में वही मूल जोखिम साझा है: कोई भी publish कर सकता है, code व्यापक authority के साथ चलता है, और maintainers अक्सर individual होते हैं।
- दूसरों का कहना है कि npm और भी खराब है क्योंकि:
- Lifecycle/postinstall scripts जो install के समय default रूप से arbitrary code चलाते हैं।
- बहुत बड़े, गहराई तक nested dependency graphs और बहुत छोटे packages की संस्कृति।
- तेज़ी से बदलती “हमेशा latest पर update करो” की norms।
- Counterpoint: lifecycle hooks और similar features कई systems में मौजूद हैं (dpkg/rpm, RubyGems, Pip, NuGet), इसलिए blame केवल npm पर केंद्रित करना कुछ लोगों को unfair या biased लगता है।
प्रस्तावित Mitigations
- Dependency cooldowns (1–7 days) ताकि अभी-अभी प्रकाशित versions install न हों, और उस window में scanners तथा maintainers malware पकड़ सकें। pnpm, Yarn 4, npm 11, pip, uv, और third-party tools के माध्यम से supported।
- समर्थक: सस्ता, और हालिया attacks में प्रभावी जो घंटों/दिनों के भीतर पकड़े गए।
- संशयवादी: यदि सभी delay करें, तो attackers time bombs जोड़ सकते हैं; urgent CVEs को फिर भी संभालना होगा।
- CI/CD को harden करना:
- “build/test” को “sign/release” jobs से अलग रखें ताकि worms automatically republish न कर सकें।
- trusted publishers, MFA, staged publishing का उपयोग करें; लेकिन यदि CI itself compromised हो, तो ये मदद नहीं करते।
- Blast radius कम करना:
- installs/tests को containers, sandboxes, या कम-privileged environments में चलाएँ।
- ऐसे dev machines का उपयोग न करें जिनमें sensitive keys या wallets भी हों।
- Governance और packaging models:
- Linux distros की तरह emulate करने की calls: curated maintainers, review layers, slower channels (testing/unstable)।
- dependencies को vendor करने, exact versions pin करने, अनावश्यक libraries से बचने, और flatter, smaller dependency graphs वाले ecosystems को prefer करने के सुझाव।
सांस्कृतिक आलोचनाएँ
- कई टिप्पणियाँ JavaScript/Web culture को दोष देती हैं: tiny packages, rapid change, deep transitive deps, और automated updates पर भारी निर्भरता।
- अन्य लोग ज़ोर देते हैं कि users सुविधा को security से ऊपर रखते हैं जब तक कुछ टूट न जाए; security को एक invisible requirement माना जाता है जिसे अक्सर बाद में जोड़ा जाता है।