• ओपन सोर्स पैकेज @ctrl/tinycolor को शामिल करने वाले कई npm पैकेज एक malicious version से संक्रमित हो गए; इसका कारण सहयोगी repository की GitHub Actions workflow के ज़रिए npm token की चोरी था
  • हमलावर ने broad permissions वाले npm token का उपयोग करके लगभग 20 पैकेजों में malicious code deploy किया, जिनमें @ctrl/tinycolor का साप्ताहिक डाउनलोड 20 लाख तक होने से उसका प्रभाव बड़ा था
  • संक्रमित versions ने postinstall चरण में malicious payload चलाया, और GitHub व npm security teams ने तेज़ी से प्रतिक्रिया देकर deletion और cleanup किया
  • लेखक ने दोबारा ऐसी घटना रोकने के लिए Trusted Publishing(OIDC) में migration, token permissions को न्यूनतम करने, 2FA अनिवार्य करने, और pnpm features के उपयोग सहित मज़बूत security plan तैयार किया
  • यह घटना software supply chain security की कमजोरियों को दिखाती है और npm ecosystem भर में security features के सुधार व security practices में बदलाव की ज़रूरत को उजागर करती है

TL;DR

  • एक malicious GitHub Actions workflow को shared repository में push किया गया, जिसने npm token चुरा लिया
  • उसी token से हमलावर ने 20 पैकेजों के malicious versions publish किए, जिनमें @ctrl/tinycolor की download volume अधिक होने से उसका असर बड़ा रहा
  • व्यक्तिगत account या repositories सीधे compromise नहीं हुए, और न phishing हुई, न local malware install किया गया
  • GitHub/npm security teams की तेज़ कार्रवाई से malicious versions हटा दिए गए, और बाद में cache साफ़ करने के लिए clean versions फिर से publish किए गए

घटना का पता कैसे चला (How I Found Out)

  • 15 सितंबर की दोपहर, community member Wes Todd ने Bluesky DM के ज़रिए समस्या की जानकारी दी
  • तब तक GitHub/npm security teams प्रभावित पैकेजों की सूची तैयार कर deletion शुरू कर चुकी थीं
  • शुरुआती संकेत के रूप में 'Shai-Hulud' नाम की malicious branch साझा की गई, जो Dune ब्रह्मांड के sandworm के नाम से ली गई थी

वास्तव में क्या हुआ (What Actually Happened)

  • बहुत पहले साथ काम किए गए angulartics2 repository में अब भी admin permissions वाला एक collaborator मौजूद था
  • उस repository में संग्रहीत npm token को malicious GitHub Actions workflow ने चुरा लिया
  • हमलावर ने इसी token से @ctrl/tinycolor सहित लगभग 20 पैकेज publish किए
  • GitHub/npm security teams ने तेज़ी से malicious versions हटा दिए, और लेखक ने भरोसेमंद नए versions दोबारा publish किए

प्रभाव (Impact)

  • malicious version install होने पर postinstall script चलती थी, जिससे security threat पैदा होता था
  • प्रभावित users को StepSecurity के तुरंत response guidance देखने की सलाह दी गई

पब्लिशिंग सेटअप और अंतरिम योजना (Publishing Setup & Interim Plan)

  • पहले semantic-release + GitHub Actions के संयोजन से automated publishing की जाती थी
  • npm के provenance feature का उपयोग किया गया था, लेकिन यह valid token वाले हमलावर को नहीं रोक सका
  • आगे चलकर Trusted Publishing(OIDC) अपनाकर static tokens हटाने की योजना है
  • फिलहाल सभी tokens रद्द कर दिए गए हैं और 2FA अनिवार्य, granular permissions वाले token ही अनुमत, तथा pnpm के minimumReleaseAge feature की समीक्षा जैसे अतिरिक्त security measures लागू किए जा रहे हैं

आदर्श सुधार (Publishing Wishlist)

  • npm account स्तर पर OIDC-आधारित Trusted Publishing को अनिवार्य करने का विकल्प उपलब्ध होना चाहिए
  • provenance न होने पर publishing block करने की सुविधा, और semantic-release व OIDC के पूर्ण integration का समर्थन होना चाहिए
  • GitHub UI में 2FA-आधारित manual approval publishing feature उपलब्ध कराया जाना चाहिए
  • Pro subscription के बिना भी GitHub Environments स्तर के protection features इस्तेमाल किए जा सकें
  • npm package page पर postinstall script की मौजूदगी का संकेत और हटाए गए versions के कारण सार्वजनिक किए जाने चाहिए

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.