NPM वर्म की वापसी और यह बहुत बदतर है (TanStack हैक हो गया)

BBetter Stack
컴퓨터/소프트웨어경영/리더십AI/미래기술

Transcript

00:00:00शाई हुलुद अपने चौथे सीक्वल के साथ वापस आ गया है।
00:00:02इस बार यह टैनस्टैक (TanStack) जैसे पैकेजों को निशाना बना रहा है,
00:00:04मेरे नेक्स्ट.जेएस (Next.js) पर वीडियो पब्लिश करने के कुछ ही घंटों बाद,
00:00:07जो कि मेरी तरफ से बेहतरीन टाइमिंग थी।
00:00:08यह वास्तव में एक बहुत बड़ा एनपीएम (NPM) सप्लाई चेन हमला है
00:00:11जो सिर्फ TanStack से कहीं ज़्यादा को प्रभावित करता है।
00:00:13इसमें यूआईपाथ (UiPath), मिस्ट्रल (Mistral) जैसे पैकेज भी शामिल हैं,
00:00:15और 160 अन्य पैकेज,
00:00:17यहाँ तक कि गार्डरेल्स डॉट एआई (Guardrails.ai) जैसे पाइपी (PyPy) पैकेज भी।
00:00:20इस हमले को और भी दिलचस्प बनाने वाली बात
00:00:22यह है कि इसमें एक डेडमैन स्विच शामिल था,
00:00:24ताकि अगर यह पता चले कि आपने चोरी की गई कुंजियों (keys) को बदल दिया है,
00:00:26तो यह आपके पूरे पीसी को मिटा देगा,
00:00:28और इसमें कुछ वैश्विक राजनीति भी शामिल थी।
00:00:30तो चलिए शुरुआत करते हैं।
00:00:36इस सीक्वल के लिए, 'द वर्म' का लक्ष्य वही है,
00:00:39डेवलपर मशीनों और सीआईसीडी (CICD) रनर्स से क्रेडेंशियल्स चुराना,
00:00:42फिर उन क्रेडेंशियल्स का उपयोग करके और अधिक पैकेजों तक पहुँचना।
00:00:44TanStack के लिए, इसका मतलब था 84 दुर्भावनापूर्ण वर्ज़न पब्लिश करना
00:00:47केवल कुछ ही मिनटों में 42 TanStack पैकेज के ज़रिए।
00:00:51अब, मैं आपको बताऊंगा कि वे
00:00:52शुरुआत में TanStack को कैसे संक्रमित करने में कामयाब रहे,
00:00:54लेकिन पहले देखते हैं कि यह मैलवेयर क्या करता है
00:00:56अगर आप इन प्रभावित पैकेज में से कोई एक इंस्टॉल करें।
00:00:58दुर्भावनापूर्ण पैकेज के अंदर,
00:00:59आपको routerinit.js नाम की एक नई फ़ाइल मिलेगी,
00:01:02साथ ही एक इंजेक्ट की गई वैकल्पिक निर्भरता (optional dependency),
00:01:04जो उस लिंक पर ले जाती है जो देखने में
00:01:05एक वैध TanStack राउटर GitHub लिंक जैसा लगता है,
00:01:08लेकिन यह वास्तव में हमलावर के फोर्क (fork) पर एक अनाथ कमिट है।
00:01:10GitHub फोर्क लिंक को इसी तरह हैंडल करता है,
00:01:13इसलिए यूआरएल (URL) वास्तव में ऐसा दिख सकता है
00:01:14जैसे कि यह मूल प्रोजेक्ट का हिस्सा है,
00:01:16भले ही कमिट वास्तव में एक फोर्क से हो।
00:01:18उस फोर्क में, एक लाइफसाइकिल स्क्रिप्ट है,
00:01:20'prepare', जो bun run task runner JS चलाती है,
00:01:22और अंत में exit 1 है।
00:01:24यह वैकल्पिक निर्भरता को विफल करने का एक चालाक तरीका है
00:01:27पेलोड के चल जाने के बाद,
00:01:28ताकि इंस्टाल सामान्य रूप से चलता रहे,
00:01:30और यह आपके इंस्टाल लॉग्स में कम स्पष्ट निशान छोड़ता है।
00:01:33साथ ही, आपने गौर किया होगा कि यह उस
00:01:35routerinit.js फाइल को नहीं चला रहा है जिसके बारे में मैंने कहा था
00:01:37कि उसे पैकेजों में शुरू में डाला गया था,
00:01:38लेकिन अभी के लिए, बस इन दोनों फाइलों को
00:01:40अलग-अलग नामों के साथ बिल्कुल एक ही भूमिका निभाते हुए सोचें।
00:01:42संक्षेप में कहें तो, जब आप इसे इंस्टॉल करते हैं,
00:01:44तो यह स्क्रिप्ट चलेगी।
00:01:46पहली चीज जो यह स्क्रिप्ट करने की कोशिश करती है,
00:01:47वह खुद को स्पष्ट इंस्टाल प्रवाह से अलग करना है,
00:01:50इसलिए यह जांचेगी कि क्या यह पहले से ही
00:01:51बैकग्राउंड में चल रही है, और यदि नहीं,
00:01:53तो यह खुद की एक अलग कॉपी फोर्क करती है
00:01:54और पैरेंट स्क्रिप्ट से सफाई से बाहर निकल जाती है।
00:01:57इस तरह, आपके एनपीएम इंस्टाल लॉग्स
00:01:58स्क्रिप्ट का कोई भी आउटपुट नहीं दिखाते हैं
00:02:00क्योंकि मैलवेयर ने अब खुद को उस प्रक्रिया से
00:02:01अलग कर लिया है और बैकग्राउंड में चल रहा है।
00:02:04इसके बाद, यह बहुत ही चतुर काम करता है।
00:02:06यह खुद की कॉपियां
00:02:07आपके क्लॉड कोड (Claude Code) हुक्स डायरेक्टरी में लिखता है,
00:02:08फिर आपकी क्लॉड सेटिंग्स को कॉन्फ़िगर करता है
00:02:10ताकि जब भी आप उस प्रोजेक्ट में क्लॉड कोड का उपयोग करें,
00:02:12तो यह हुक चले।
00:02:13इस तरह, यह मूल इंस्टाल के बाद भी जीवित रह सकता है
00:02:16और हर बार जब आप उस प्रोजेक्ट में
00:02:17क्लॉड कोड खोलते हैं तो फिर से ट्रिगर होता रहता है।
00:02:20यह वास्तव में वीएस कोड (VS Code) के टास्क रनर के साथ भी ऐसा ही करता है,
00:02:22उसमें खुद को डुप्लिकेट कर लेता है,
00:02:23इसलिए यदि आप वीएस कोड की वर्कस्पेस ऑटो-रन सुविधाओं का उपयोग करते हैं,
00:02:26तो आपको बिल्कुल वही समस्या होती है।
00:02:28यह 'गिटहब टोकन मॉनिटर' नामक एक ओएस-स्तर (OS-level) की सेवा भी
00:02:29जिसे GitHub टोकन मॉनिटर कहा जाता है,
00:02:31लेकिन हम उस पर वापस आएंगे
00:02:32क्योंकि वह बिल्कुल शैतानी है।
00:02:34यह भी काफी शैतानी है
00:02:35कि आपने अभी तक सब्सक्राइब नहीं किया है।
00:02:37अगली चीज जो पेलोड करता है
00:02:38वह आपकी साख चुराने का काम शुरू करता है,
00:02:40और यह सब कुछ आजमाता है।
00:02:41GitHub एक्शन्स में, यह साख की तलाश करता है
00:02:43और रनर एनवायरमेंट में सीक्रेट्स की।
00:02:45विशेष रूप से, GitHub एक्शन्स
00:02:47रनर वर्कर प्रोसेस मेमोरी को खंगालना
00:02:48आपके वर्कफ़्लो सीक्रेट्स के लिए
00:02:50जिसमें मास्क किए गए सीक्रेट्स शामिल हैं,
00:02:52और यह एक नकली कोड QL जैसा GitHub वर्कफ़्लो भी डालता है
00:02:55जो आपके रिपो सीक्रेट्स को सीरियलाइज़ करता है
00:02:57और उन्हें बाद में निकाल (exfiltrate) लेता है।
00:02:58यह एडब्ल्यूएस (AWS) सीक्रेट्स को भी ढूंढता है,
00:03:00पहले आपके पर्यावरण वेरिएबल्स
00:03:02और स्थानीय कॉन्फ़िगरेशन फाइलों के पीछे जाता है,
00:03:03लेकिन फिर यह एडब्ल्यूएस मेटाडेटा सेवाओं के पीछे भी जाता है
00:03:06जैसे IMDS v2 और ECS टास्क मेटाडेटा।
00:03:09कुबेरनेट्स (Kubernetes) के लिए, यह सर्विस अकाउंट टोकन चुराता है
00:03:11और सर्टिफिकेट्स, जो इसे इन-क्लस्टर एपीआई एक्सेस की अनुमति देते हैं
00:03:14उन भूमिका-आधारित एक्सेस कंट्रोल (RBAC) विशेषाधिकारों के लिए
00:03:17जो उस पॉड के सर्विस अकाउंट के पास थे,
00:03:19जो खराब तरीके से कॉन्फ़िगर किए गए क्लस्टर्स में
00:03:21अत्यंत व्यापक हो सकते हैं,
00:03:22कभी-कभी प्रभावी रूप से एडमिन भी।
00:03:24और इसे और भी बुरा बनाने के लिए,
00:03:25यह हैशीकॉर्प वॉल्ट (HashiCorp Vault) के पीछे भी जाता है,
00:03:27आपके सभी वॉल्ट-संबंधित पर्यावरण वेरिएबल्स को इकट्ठा करता है
00:03:29और टोकन,
00:03:30फिर जो भी कुबेरनेट्स एक्सेस इसके पास है उसका उपयोग करके
00:03:32आपके सभी वॉल्ट-प्रबंधित सीक्रेट्स प्राप्त करता है।
00:03:34और यह सब कुछ वही है जो यह
00:03:35आपके सीआई डिप्लॉयमेंट के लिए करता है।
00:03:37यदि यह आपके वर्कस्टेशन पर है,
00:03:38तो यह आपकी सभी एसएसएच (SSH) कुंजियों के पीछे जाता है,
00:03:39आपके एनपीएम क्रेडेंशियल्स,
00:03:41आपके गिट (Git) क्रेडेंशियल्स,
00:03:42शेल हिस्ट्री,
00:03:43क्लाउड प्रदाता क्रेडेंशियल्स,
00:03:44क्रिप्टो कुंजियाँ,
00:03:45सिग्नल (Signal),
00:03:45स्लैक (Slack),
00:03:45और डिस्कॉर्ड (Discord) फाइलें।
00:03:46और उन सबके ऊपर,
00:03:47यह आपकी क्लॉड कोड सत्र हिस्ट्री निकालता है।
00:03:49इसलिए यदि आपने कभी क्लॉड क्रेडेंशियल्स दिए हैं
00:03:51या इसे उन फाइलों को पढ़ने दिया है जिनमें क्रेडेंशियल्स हैं,
00:03:53तो इसके पास उन तक भी पहुंच है।
00:03:55तो हाँ, जैसा कि मैंने कहा,
00:03:56वे उन सभी चीजों के पीछे थे
00:03:57जिन पर वे अपना हाथ रख सकते थे,
00:03:58और फिर वे इस डेटा को
00:04:00सेशन मैसेंजर नेटवर्क के माध्यम से निकालते (exfiltrate) थे।
00:04:02और बैकअप के रूप में,
00:04:02वे इस चोरी किए गए डेटा को गिटहब रिपोस में
00:04:04गिटहब (GitHub) रिपोज़ में।
00:04:05और उनके सभी हमलों की थीम के अनुसार,
00:04:07इन ब्रांचों का नाम 'ड्यून' (Dune) के संदर्भों पर रखा गया है।
00:04:09तो इसने आपके क्रेडेंशियल्स चुरा लिए।
00:04:11इससे बुरा और क्या हो सकता है, है ना?
00:04:12खैर, हाँ।
00:04:13हाँ, हो सकता है।
00:04:14इन सबके ऊपर,
00:04:15अगर आपको वह सर्विस याद हो
00:04:16जो मैंने कहा था कि यह आपकी मशीन पर सेट करता है,
00:04:18खैर, वह आपके गिटहब टोकन्स की निगरानी करता है
00:04:19और उन्हें बार-बार निकालता रहता है।
00:04:21लेकिन हर मिनट,
00:04:22यह जांचता है कि क्या टोकन अभी भी मान्य है।
00:04:24और यदि नहीं,
00:04:25तो यह आपकी यूजर डायरेक्टरी पर RMRF चलाता है,
00:04:27सब कुछ मिटा देता है।
00:04:28यह आपके क्रेडेंशियल्स के साथ
00:04:30एक एनपीएम टोकन बनाने की भी कोशिश करता है,
00:04:31इस विवरण के साथ,
00:04:32यदि आप इस टोकन को रद्द करते हैं,
00:04:33तो हम मालिक के कंप्यूटर को मिटा देंगे,
00:04:35यह संकेत देते हुए कि यह एनपीएम टोकन के लिए भी
00:04:36ऐसा ही करता है।
00:04:38इसलिए यदि आप इन टोकन को रद्द करते हैं
00:04:39अपनी मशीन को अलग करने
00:04:40और उस बैकग्राउंड प्रोसेस को हटाने से पहले,
00:04:42तो पेलोड आपके पीसी को नष्ट कर सकता है,
00:04:44जो कि बहुत ही शैतानी है।
00:04:46और यहाँ एक साइड नोट के रूप में,
00:04:47इस हमले का पायथन संस्करण
00:04:48काफी हद तक वही काम करता है,
00:04:49लेकिन इसमें एक जांच भी शामिल है
00:04:51यह देखने के लिए कि क्या आपकी मशीन की भाषा रूसी है।
00:04:53यदि है,
00:04:53तो यह बस रुक जाता है।
00:04:54और यदि आपकी मशीन
00:04:55इजराइल या ईरान से प्रतीत होती है,
00:04:56तो यह 1 और 6 के बीच
00:04:58एक यादृच्छिक संख्या उत्पन्न करता है।
00:04:59और यदि वह संख्या 2 है,
00:05:00तो यह एक विनाशकारी वाइप कमांड चलाता है
00:05:01और फुल-वॉल्यूम पर एक एमपी3 (MP3) चलाने की
00:05:03कोशिश करता है।
00:05:04दुख की बात है,
00:05:05कि मैं यह पता नहीं लगा सका
00:05:05कि वह एमपी3 क्या है।
00:05:07खैर,
00:05:07अब जब इसने यह सब कर लिया है,
00:05:08सबसे बुरा आना अभी बाकी है
00:05:09क्योंकि वह सिर्फ पहला चरण (Stage 1) था।
00:05:11दूसरा चरण (Stage 2) स्व-प्रसार (self-propagation) है
00:05:13और यह इस हमले का सबसे खतरनाक हिस्सा है।
00:05:15सबसे पहले,
00:05:16यह आपकी मशीन पर
00:05:16किसी भी वैध एनपीएम टोकन को देखेगा
00:05:17जहाँ यह पब्लिश कर सके
00:05:19बिना टू-फैक्टर ऑथेंटिकेशन के।
00:05:19और यदि इसे एक मिल जाता है,
00:05:21तो यह उन सभी पैकेजों को स्कैन करेगा
00:05:22जिन तक उस खाते की पहुंच है,
00:05:24फिर उन क्रेडेंशियल्स का उपयोग करके
00:05:26खुद को उन पैकेजों में जोड़ेगा
00:05:26और नए संक्रमित संस्करण पब्लिश करेगा।
00:05:28अब यह स्पष्ट रूप से काफी बुरा है,
00:05:30लेकिन आपको शायद टोकन पब्लिश नहीं करने चाहिए थे
00:05:32जो इधर-उधर पड़े हों
00:05:33जो बायपास कर सकते हैं
00:05:33जो कहीं पड़े हों
00:05:34जो बायपास कर सकें
00:05:35टू-फैक्टर ऑथेंटिकेशन को।
00:05:36तो इसका कहीं ज्यादा डरावना रूप
00:05:38वह है जो तब होता है
00:05:39जब यह आपके CI-CD के अंदर चलता है।
00:05:41क्योंकि CI में,
00:05:42हमलावर को जरूरत नहीं होती
00:05:43एक लंबे समय तक चलने वाले NPM टोकन की
00:05:44क्योंकि अच्छे सेटअप
00:05:45अक्सर OIDC पर निर्भर करते हैं,
00:05:47जो कि ज्यादा सुरक्षित माना जाता है।
00:05:48संक्षेप में,
00:05:49NPM टोकन को
00:05:50सीक्रेट के रूप में स्टोर करने के बजाय,
00:05:51GitHub Actions NPM को साबित करता है,
00:05:53हे,
00:05:53मैं यह रेपो हूँ
00:05:54जो यह वर्कफ़्लो चला रहा है
00:05:55इस ब्रांच पर,
00:05:56और फिर NPM इसे देता है
00:05:57एक कम समय के लिए प्रकाशित टोकन।
00:05:59हालांकि इसके साथ समस्या यह है
00:06:00कि अगर स्क्रिप्ट को एक्सेस मिल जाए
00:06:01किसी भरोसेमंद GitHub Actions वातावरण तक,
00:06:03तो यह उसी जगह खड़ी हो सकती है
00:06:04जहाँ एक वैध प्रकाशक होता है।
00:06:06तो मैलवेयर इस्तेमाल कर सकता है
00:06:07उस OIDC-संबंधित वातावरण का
00:06:08जो GitHub जॉब को प्रदान करता है
00:06:10ताकि GitHub के टोकन एंडपॉइंट से OIDC JWT टोकन मांग सके,
00:06:12फिर यह उस JWT टोकन को बदल लेता है
00:06:14NPM के साथ
00:06:16उस छोटे समय वाले पब्लिशिंग टोकन के लिए
00:06:17NPM-भरोसेमंद पब्लिशिंग सिस्टम के माध्यम से,
00:06:18और अब यह प्रकाशित कर सकता है
00:06:19बिना किसी स्थायी NPM टोकन को चुराए
00:06:20और पूरी तरह से वैध दिख सकता है।
00:06:22इस मामले में,
00:06:22मैलवेयर उस router init.js फाइल की
00:06:24एक कॉपी को पैकेज के टेबल में बंडल करता है,
00:06:26फिर हानिकारक वैकल्पिक डिपेंडेंसी जोड़ता है,
00:06:26फिर इसे पैकेज के लेटेस्ट टैग के रूप में
00:06:27प्रकाशित कर देता है,
00:06:29ताकि जब कोई
00:06:30या कोई CI-CD पाइपलाइन
00:06:31उन पैकेजों को इंस्टॉल करे,
00:06:32तो यह लूप फिर से शुरू हो जाए,
00:06:33जितना दूर संभव हो सके फैलते हुए।
00:06:34तो यह सब
00:06:35काफी पागलपन है, है ना?
00:06:35लेकिन अब पेशेंट जीरो,
00:06:37TanStack पर ध्यान केंद्रित करते हैं।
00:06:38वे सबसे पहले संक्रमित कैसे हुए?
00:06:40खैर,
00:06:40उनके अपने पोस्ट-मॉर्टम के अनुसार,
00:06:42हमलावर ने उस GitHub Actions पाइपलाइन का
00:06:42दुरुपयोग किया।
00:06:43उन्होंने उस दिन शुरू किया
00:06:44जिससे एक दिन पहले हानिकारक पैकेज
00:06:46वास्तव में प्रकाशित हुए थे,
00:06:46जहाँ उन्होंने TanStack राउटर का
00:06:47एक फोर्क बनाया,
00:06:48लेकिन उन्होंने वास्तव में
00:06:49इसका नाम बदलकर 'configuration' कर दिया
00:06:50ताकि खोजना मुश्किल हो जाए
00:06:51उस GitHub Actions पाइपलाइन का दुरुपयोग किया।
00:06:53उन्होंने उस दिन शुरुआत की
00:06:53जब दुर्भावनापूर्ण पैकेज
00:06:54वास्तव में प्रकाशित हुए थे,
00:06:56जहाँ उन्होंने एक फोर्क बनाया
00:06:57TanStack राउटर का,
00:06:58और इसमें एक कमिट मैसेज था
00:06:59जो 'skip CI' से
00:06:59प्रीफिक्स्ड था,
00:07:01ताकि यह तुरंत पुश इवेंट पर
00:07:02CI न चला सके।
00:07:04अगले दिन,
00:07:04उन्होंने TanStack राउटर के खिलाफ
00:07:05एक PR खोला
00:07:06जिसका नाम था 'Work in Progress'
00:07:07'Simplify History Build'.
00:07:07और यहीं पर
00:07:08असली हमला होता है।
00:07:09TLDR यह है कि
00:07:10TanStack का एक बंडल-साइज्ड
00:07:11GitHub Actions वर्कफ़्लो था
00:07:13जो 'pull request target' का उपयोग करता था,
00:07:13और यह उल्लेखनीय है
00:07:14TanStack राउटर के खिलाफ
00:07:15जिसे वर्क इन प्रोग्रेस
00:07:16सिम्प्लीफाई हिस्ट्री बिल्ड।
00:07:18और यहीं पर
00:07:18असली हमला होता है।
00:07:20संक्षेप में कहें तो
00:07:21TanStack के पास एक बंडल-साइज़
00:07:22GitHub एक्शन वर्कफ़्लो था
00:07:23जो पुल रिक्वेस्ट टारगेट का उपयोग करता था,
00:07:25और यह उल्लेखनीय है
00:07:26क्योंकि पुल रिक्वेस्ट टारगेट
00:07:27वास्तव में
00:07:28बेस रिपो
00:07:29सुरक्षा संदर्भ में चलता है,
00:07:30फोर्क में नहीं।
00:07:31इसका मतलब है कि इसके पास
00:07:32बेस रिपो के कैश स्कोप
00:07:33और उसके GitHub टोकन का एक्सेस होता है।
00:07:35विषैला बना दिया
00:07:35जिसे रिलीज एक्शन
00:07:36बाद में इस्तेमाल करेगा।
00:07:38उन्होंने वास्तव में सार्वजनिक
00:07:39PMPM लॉक फाइल से
00:07:40इसकी प्री-कंप्यूटिंग की
00:07:40उसी फॉर्मूले का उपयोग करके
00:07:41जिसका वर्कफ़्लो भी उपयोग करता है।
00:07:42एक बार जब वह जहरीला कैश
00:07:43सेव हो गया,
00:07:44उन्होंने वास्तव में उस ब्रांच को
00:07:45वापस रीसेट कर दिया
00:07:47ताकि वह वर्तमान
00:07:48मेन ब्रांच से मेल खा सके,
00:07:49ताकि दिखाई देने वाला PR
00:07:50एक शून्य फाइल
00:07:51no-op जैसा दिखे,
00:07:52और फिर उन्होंने उस PR को बंद कर दिया
00:07:54और हानिकारक ब्रांच को डिलीट कर दिया।
00:07:56तो बाहर से,
00:07:57ऐसा लगता है कि
00:07:57बिल्कुल कुछ नहीं
00:07:58हुआ है,
00:07:59लेकिन उन्होंने
00:07:59उस GitHub एक्शन के कैश को खराब कर दिया है।
00:08:00इसका मतलब है कि
00:08:01आठ घंटे बाद,
00:08:02जब एक सामान्य मेंटेनर ने
00:08:03एक असंबंधित PR को
00:08:04मेन में मर्ज किया,
00:08:05तो इसने TanStack के
00:08:06रिलीज वर्कफ़्लो को ट्रिगर किया,
00:08:07जिसने PMPM जहरीले कैश को
00:08:07रिस्टोर कर दिया,
00:08:08और अब हमलावर नियंत्रित कोड
00:08:09उस रिलीज एक्शन के अंदर चल रहा था।
00:08:10उस गिटहब एक्शन के कैश को ज़हरीला कर दिया है।
00:08:11उसी तर्क का उपयोग किया
00:08:12NPM पब्लिशिंग टोकन पाने के लिए,
00:08:13और 42 Tanstack पैकेजों में
00:08:14अपने ही 84 संस्करण प्रकाशित करने में कामयाब रहा,
00:08:15और इसे एक्शन के
00:08:16प्रकाशित पैकेज चरण तक
00:08:17पहुंचने की भी जरूरत नहीं पड़ी।
00:08:18मजे की बात यह है,
00:08:19कि एक्शन वास्तव में विफल हो गया
00:08:20क्योंकि कुछ टेस्ट विफल हो गए थे,
00:08:22इसलिए यह कभी उस चरण तक नहीं पहुंचा,
00:08:23लेकिन हानिकारक कोड चला
00:08:24और उन सभी को प्रकाशित कर दिया
00:08:25चाहे कुछ भी हो।
00:08:26तो हमलावर तीन ट्रस्ट सीमाओं को
00:08:28जोड़ने में कामयाब रहा।
00:08:29सबसे पहले,
00:08:30फोर्क PR कोड
00:08:32बेस रेपो कैश को
00:08:33खराब करने में सफल रहा,
00:08:34फिर उस बेस रेपो कैश को
00:08:35असली रिलीज वर्कफ़्लो के अंदर
00:08:36रिस्टोर किया गया,
00:08:36फिर असली रिलीज वर्कफ़्लो के पास
00:08:37OIDC अनुमतियां होती हैं,
00:08:39जो NPM पब्लिश एक्सेस में
00:08:40बदल जाती हैं,
00:08:41ताकि वे प्रकाशित कर सकें
00:08:43जो दिखने में
00:08:43पूरी तरह से वैध पैकेज लगते हैं।
00:08:44और मुझे लगता है कि यह
00:08:46सप्लाई चेन हमलों के बारे में
00:08:47काफी डरावना होता जा रहा है।
00:08:47वे एक मेंटेनर के टोकन को चुराने से
00:08:48दूर होकर
00:08:49पूरी CI-CD प्रणाली का ही दुरुपयोग कर रहे हैं,
00:08:51और इसका मतलब है कि
00:08:52हमारे सभी ट्रस्ट सिग्नल
00:08:53हमलावर के लिए काम करने
00:08:54लगे हैं।
00:08:56यह एक हस्ताक्षरित पैकेज था
00:08:57जिसमें वैध प्रोवेनेंस था
00:08:58जो एक वास्तविक वर्कफ़्लो द्वारा प्रकाशित किया गया।
00:08:59तो यह रहा,
00:08:59वह ShaiHalud4 है,
00:09:01और यदि आप जांचना चाहते हैं
00:09:02कि क्या आप इनमें से किसी भी पैकेज से
00:09:03समझौता किए गए हैं,
00:09:05मैं नीचे ब्लॉग पोस्ट के
00:09:05लिंक छोड़ दूंगा,
00:09:06जो कवर करेंगे
00:09:07कि आप कैसे पता लगा सकते हैं
00:09:08और आप क्या कर सकते हैं
00:09:10यदि आपने इनमें से एक इंस्टॉल किया है।
00:09:11मुझे टिप्पणियों में बताएं
00:09:12कि आप इस सब के बारे में
00:09:13और NPM पारिस्थितिकी तंत्र के बारे में क्या सोचते हैं,
00:09:14जब आप वहां नीचे हों,
00:09:15सब्सक्राइब करें,
00:09:16और हमेशा की तरह,
00:09:18अगले वाले में मिलते हैं।
00:09:19तो ये है ShaiHalud4,
00:09:20और अगर आप चेक करना चाहते हैं
00:09:21कि क्या आप इनमें से
00:09:21किसी भी पैकेज से प्रभावित हुए हैं,
00:09:23तो मैं नीचे
00:09:23ब्लॉग पोस्ट के लिंक छोड़ दूंगा,
00:09:25जो आपको बताएंगे
00:09:25कि आप कैसे पता लगा सकते हैं
00:09:26और अगर आपने इनमें से
00:09:27किसी एक को इंस्टॉल किया है
00:09:28तो आप क्या कर सकते हैं।
00:09:29मुझे कमेंट में बताएं
00:09:30कि आप इस सब के बारे में
00:09:30और NPM इकोसिस्टम
00:09:31के बारे में क्या सोचते हैं,
00:09:33और जब आप वहां नीचे हों,
00:09:33...
00:09:34और हमेशा की तरह,
00:09:34अगले वीडियो में मिलते हैं।

Key Takeaway

TanStack के GitHub Actions कैश को दूषित करके हमलावर ने वैध प्रोवेनेंस वाले 84 दुर्भावनापूर्ण पैकेज पब्लिश किए, जिससे CI/CD पाइपलाइनों का उपयोग क्रेडेंशियल्स चुराने और सिस्टम को मिटाने के लिए किया गया।

Highlights

  • शाइ-हुलुद (Shai-Hulud) वर्म हमले ने TanStack, UiPath और Mistral सहित 160 से अधिक एनपीएम और पाइपी पैकेजों को संक्रमित किया है।

  • मैलवेयर ने GitHub Actions पाइपलाइन कैश को खराब करके 42 TanStack पैकेजों के 84 दुर्भावनापूर्ण संस्करण मिनटों में प्रकाशित किए।

  • इंस्टॉल होने पर मैलवेयर ने पीसी से SSH कुंजियाँ, एनपीएम/गिट क्रेडेंशियल्स, स्लैक/डिस्कॉर्ड डेटा और क्लॉड कोड सत्र हिस्ट्री चुराई है।

  • हमलावर ने 'डेडमैन स्विच' के रूप में एक विनाशकारी आरएम-आरएफ (rm -rf) कमांड शामिल की, जो चोरी किए गए टोकन रद्द होने पर सिस्टम को मिटा देती है।

  • यह हमला GitHub के OIDC प्रमाणीकरण का लाभ उठाकर पूरी तरह से वैध दिखने वाले हस्ताक्षरित पैकेज बनाने में सक्षम रहा है।

Timeline

हमले का दायरा और कार्यप्रणाली

  • शाइ-हुलुद वर्म ने 160 से अधिक विकास पैकेजों को निशाना बनाकर क्रेडेंशियल्स चोरी किए।
  • मैलवेयर ने वैकल्पिक निर्भरता (optional dependency) का उपयोग करके चुपके से पेलोड निष्पादित किया।
  • यह मैलवेयर वीएस कोड टास्क रनर और क्लॉड कोड हुक्स में खुद को डुप्लिकेट करता है।

यह हमला डेवलपर मशीनों और CI/CD रनर्स से गोपनीय जानकारी चुराने के लिए डिज़ाइन किया गया है। मैलवेयर ने GitHub फोर्क के माध्यम से एक अनाथ कमिट इंजेक्ट किया जो इंस्टाल लॉग्स में कोई स्पष्ट निशान नहीं छोड़ता। पेलोड खुद को बैकग्राउंड में फोर्क कर लेता है और इंस्टाल प्रक्रिया से अलग हो जाता है, जिससे यह सुरक्षा जांचों से बच जाता है।

डेटा चोरी और विनाशकारी तंत्र

  • मैलवेयर ने GitHub, AWS, कुबेरनेट्स और HashiCorp Vault से सीक्रेट्स और टोकन निकाले।
  • चोरी किया गया डेटा सेशन मैसेंजर नेटवर्क और GitHub रिपोस के माध्यम से बाहर भेजा गया।
  • एक 'डेडमैन स्विच' सक्रिय रहता है जो क्रेडेंशियल रद्द करने पर यूजर डायरेक्टरी को मिटा देता है।

हमलावर ने वर्कस्टेशन पर मौजूद एसएसएच कुंजियों, क्रिप्टो वॉलेट्स और मैसेजिंग ऐप डेटा को पूरी तरह खंगाला। कुबेरनेट्स वातावरण में, यह सर्विस अकाउंट टोकन चुराकर क्लस्टर-एडमिन विशेषाधिकार प्राप्त करने की कोशिश करता है। हमले के पायथन संस्करण में रूसी भाषा की पहचान होने पर रुकने और अन्य देशों के लिए विनाशकारी फाइल वाइपिंग कमांड का उपयोग करने जैसे विशेष तर्क शामिल हैं।

CI/CD पाइपलाइन और OIDC का दुरुपयोग

  • हमलावर ने TanStack की GitHub Actions पाइपलाइन के कैश को जहरीला बनाकर रिलीज प्रक्रिया पर कब्जा किया।
  • OIDC JWT टोकन का उपयोग करके बिना किसी स्थायी क्रेडेंशियल के वैध दिखने वाले पैकेज पब्लिश किए गए।
  • हमलावर ने PR के माध्यम से बेस रिपो के सुरक्षा संदर्भ में हानिकारक कैश को इंजेक्ट किया।

यह हमला मेंटेनर के टोकन के बजाय पूरी CI/CD प्रणाली के भरोसे का लाभ उठाता है। 'पुल रिक्वेस्ट टारगेट' वर्कफ़्लो का दुरुपयोग करते हुए, हमलावर ने जहरीले कैश को बेस रिपो में सेव कराया। जब सामान्य मेंटेनर ने कोड मर्ज किया, तो रिलीज वर्कफ़्लो ने उस जहरीले कैश का उपयोग करके 42 पैकेजों के संक्रमित संस्करण स्वचालित रूप से प्रकाशित कर दिए, जो पूरी तरह वैध और हस्ताक्षरित दिखाई दे रहे थे।

Community Posts

No posts yet. Be the first to write about this video!

Write about this video