TL; डॉ
एकाच npm ऑपरेटरने सहा आठवडे बनावट TypeScript “युटिलिटी” पॅकेजेस प्रकाशित करण्यात घालवले, जसे की ts-form-utils, ts-project-lintआणि ts-enum-helper.
जरी पॅकेजेस लहान, वैध दिसणारे व्हॅलिडेशन हेल्पर्स उघड करतात, तरी खरा पेलोड इन्स्टॉल किंवा पहिल्या रिक्वायरवर कार्यान्वित होतो आणि होस्ट फिंगरप्रिंटिंग, गिटहब ऑर्गनायझेशन डिस्कव्हरी, रिपॉझिटरी क्लोनिंग आणि सोर्स-कोड एक्सफिल्ट्रेशन करतो.
हा मालवेअर विशेषतः अनेक मौल्यवान GitHub संस्थांना लक्ष्य करतो. Shopify रिपॉझिटरीज, नंतर पोहोचण्यायोग्य सोर्स ट्रीजचे संग्रहण करते आणि एका केंद्रीकृत कलेक्शन एंडपॉईंटवर बाहेर पाठवते.
तडजोड कार्यप्रवाहाचा भाग म्हणून, पेलोड commitगुगलच्या ऑटोनॉमस कोडिंग आयडेंटिटीचे रूप धारण करून पीडित रिपॉझिटरीजमध्ये sa फाईल परत टाकणे google-labs-jules[bot].
आम्ही नावाच्या मोहिमेचा मागोवा घेतला ज्युल्सजॅकर — अनेक प्रकाशकांच्या व्याप्तीमध्ये आणि किमान पाच पेलोड पिढ्यांमध्ये, ज्यामध्ये एनक्रिप्टेड आणि सँडबॉक्स-अवेअर प्रकारांचा समावेश आहे.
नवीनतम प्रकार विशेषतः मालवेअर-विश्लेषण पायाभूत सुविधांना लक्ष्य करतो: तो केवळ विश्लेषण वातावरणातच सक्रिय होतो, क्लाउड मेटाडेटा सेवा-खाते टोकन चोरतो आणि कुबरनेट्स कंट्रोल प्लेन व क्लाउड स्टोरेज बकेट्सची तपासणी करतो.
सर्व पेलोड पिढ्यांमध्ये सामायिक असलेला प्राथमिक IOC हा कलेक्शन एंडपॉइंट आहे. aaronstack[.]com/jules-collect.
तीव्रता: गंभीर.
हल्ला: तो कसा काम करतो
प्रत्येक JulesJacker पॅकेज एकाच साच्याचे अनुसरण करते. package.json हे MIT परवाना असलेल्या आणि कोणतेही सोर्स रिपॉझिटरी न जोडलेल्या एका निरुपद्रवी TypeScript हेल्परची जाहिरात करते. index.js हे पॅकेज काही मोजकीच खरी, कार्यरत फंक्शन्स — जसे की ईमेल रेग्युलर एक्स्प्रेशन्स (regexes), एनम मॅप्स (enum maps), लिंट रूल टेबल्स (lint rule tables) — एक्सपोर्ट करते, जेणेकरून जो डेव्हलपर प्रत्यक्षात हे पॅकेज इम्पोर्ट करेल, त्याला अपेक्षित कार्यप्रणाली दिसेल. खरा दोष मात्र दुसरीकडे आहे: एका पोस्टइंस्टॉल हुक, किंवा तळाशी असलेल्या ब्लॉकमध्ये index.js जेव्हा मॉड्यूलची आवश्यकता असते, तेव्हा ते कार्यान्वित होते.
पेलोड्स स्पष्टपणे क्रमांकित केलेल्या अंतर्गत टप्प्यांमधून विकसित झाले आहेत (ऑपरेटर स्वतःच्या टेलिमेट्री इव्हेंट्सना लेबल लावतो). एससी४-, एससी४-, एससी४-(आणि असेच पुढे), आणि त्या उत्क्रांतीचे निरीक्षण करणे हा मोहीम समजून घेण्याचा सर्वात स्पष्ट मार्ग आहे.
पिढी १-२: टेहळणी आणि गिट-कॉन्फिगची चोरी
सुरुवातीचे पॅकेजेस सरळसरळ माहिती चोरणारे होते. इन्स्टॉल केल्यावर ते एन्व्हायर्नमेंट व्हेरिएबल्स, गिटहब सीएलआय होस्ट्स फाइल आणि ग्लोबल गिट कॉन्फिगरेशन गोळा करत असत.git config –global –list, git remote -v), त्यानंतर कलेक्शन एंडपॉइंटवर बंडल POST केले. यावरून ऑपरेटरची ओळख पटली: “टाईपस्क्रिप्ट फॉर्म व्हॅलिडेशन युटिलिटीज” असल्याचे खोटे कारण, एकाच डोमेनवर जाणारे आउटबाउंड बीकन, आणि ग्राहकांच्या डेटाऐवजी डेव्हलपरच्या क्रेडेन्शियल्सची आवड.
पिढी ३: हायपरवायझर आणि कर्नल एस्केप प्रोब्स
मोहिमेच्या मध्यात एका आवृत्तीने पायाभूत सुविधांवरील हल्ल्यांवर पूर्णपणे लक्ष केंद्रित केले. कॉन्फिग चोरण्याऐवजी, तिने एक रिकॉन हार्नेस चालवून तपासणी केली. AF_VSOCK सॉकेट्स, व्हर्टिओ एमएमआयओ रिजन, / देव / मेमआणि कर्नल हार्डनिंग फ्लॅग्ज, आणि sysrq-मुळे कर्नल क्रॅश होण्याचे प्रयत्न — व्हर्च्युअल मशीन किंवा कंटेनरमधून बाहेर पडण्याच्या प्रयत्नांशी संबंधित वर्तन. टेलिमेट्री टॅग्ज (s0-vmm-recon, s1-vmm-vsock-fuzz, s2-vmm-mmio, s3-कर्नेल-प्रोब) ने हेतू स्पष्ट केला. हा प्रकार स्पष्टपणे याला उद्देशून होता क्लाउड-सँडबॉक्स आणि सर्व्हरलेस-रनर वातावरण — अशा प्रकारची क्षणभंगुर व्हर्च्युअल मशीन जी अविश्वसनीय कोड तयार करते आणि त्याची चाचणी घेते.
पिढी ३ (SC3): क्रॉस-रेपो राइट वर्म
मोहिमेचे केंद्र एक स्वयंप्रसारित रेपो चोर बनले. इन्स्टॉल केल्यावर, पेलोड पाच-टप्प्यांची एक वेळेनुसार चालणारी प्रक्रिया चालवतो:
- स्टेज 0 (~100 ms): होस्टचा फिंगरप्रिंट घ्या — होस्टनेम, वापरकर्ता माहिती, गिट आयडेंटिटी.
- स्टेज 1 (~३ सेकंद): तपासणी करून पीडित व्यक्ती कोणत्या संस्थेशी संबंधित आहे हे निश्चित करा. git remote -vमग हार्डकोडेड शोधा ORG_CONFIG टेबल आणि टेस्ट रेपो ऍक्सेससह git ls-remote — हल्लेखोराच्या नियंत्रणाखालील SSRF प्रॉक्सीद्वारे मार्गस्थ केले गेले http://git@192.168.0.1:8080.
- स्टेज 2 (~१० सेकंद): गिट क्लोन लक्ष्य सूचीमधील प्रत्येक पोहोचण्यायोग्य रेपॉजिटरी, ट्रीचा टारबॉल आणि जीझिप बनवा, त्याला बेस64-एनकोड करा आणि चंक-एक्स्फिल्ट्रेट करा.
- स्टेज 3 (~४५ सेकंद): “प्रवेशाचा पुरावा” — एक रायटेबल रेपो क्लोन करा, SECURITY-POC.md नावाची फाईल टाका, आणि commit लेखक म्हणून google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> असे सेट करून आणि 'chore: update dependency cache, then push to the victim's mainline branch' हा संदेश देऊन ते चालवा.
हार्डकोडेड लक्ष्य सूची जेनेरिक नाही. त्यात तीसहून अधिक गोष्टींची गणना केली आहे. Shopify नावानुसार भांडारे — शॉपिफाय/शॉपिफाय, शॉपिफाय/ओळख, शॉपिफाय/बिलिंग, शॉपिफाय/वॉल्ट, शॉपिफाय/सिक्रेट्स, शॉपिफाय/पायाभूत सुविधा, शॉपिफाय/.गिटहबआणि इतर बरेच काही — एका चाचणी संस्थेसोबत, एरॉनस्टॅकबार्न्सज्यावर ऑपरेटरचे नियंत्रण असल्याचे दिसते आणि तो त्याचा लेखन लक्ष्य म्हणून वापर करतो.
चौथी पिढी (SC4): एनक्रिप्टेड आणि गेटेड
नवीनतम डेव्हलपर-अनुकूल व्हेरिएंट SC3 वर्मच्या वर बचावाचे दोन स्तर जोडतो.
सर्वप्रथम, पेलोड आता प्लेनटेक्स्ट स्वरूपात पाठवला जात नाही. खरे लॉजिक एका AES-256-CBC-एनक्रिप्टेड ब्लॉबमध्ये असते. lib/.perf.dat, ज्याच्या पहिल्या सोळा बाइट्समध्ये IV आहे. लोडरमध्ये index.js जोडलेल्या स्ट्रिंगच्या तुकड्यांपासून डिक्रिप्शन कीची पुनर्रचना करते, ब्लॉब डिक्रिप्ट करते आणि त्यासोबत चालवते. नवीन फंक्शन()स्टॅटिक स्कॅनरना चुकवण्यासाठी मॉड्यूलची नावेसुद्धा विभागलेली आहेत. require('crypt' + 'o'), require('f' + 's').
दुसरे म्हणजे, ते होस्ट-गेटेड आहे. एक व्हेरिएंट फक्त तेव्हाच डिक्रिप्ट आणि रन होतो जेव्हा... os.hostname() समतुल्य डेव्हबॉक्स or उबंटू-एफसी-यूव्हीएम (फायरक्रॅकर मायक्रोव्हीएमचे डीफॉल्ट) किंवा त्यात सबस्ट्रिंग समाविष्ट आहे डेव्हबॉक्सच्या उपस्थितीवर आणखी एक दरवाजा. .ज्युल्स/ कार्यरत डिरेक्टरी:
दुसऱ्या शब्दांत सांगायचे तर, SC4 पेलोडची रचना अशी केली आहे की तो एका सामान्य डेव्हलपरच्या लॅपटॉपवर निष्क्रिय राहील आणि केवळ स्वयंचलित AI-एजंटच्या आतच सक्रिय होईल. सँडबॉक्स वातावरण ऑपरेटरला खरंतर तडजोड करायची आहे.
प्रयोगशाळा सुरू करणे: विश्लेषण-पायाभूत सुविधा प्रकार
मोहिमेतील सर्वात नाविन्यपूर्ण पॅकेज. ts-enum-helperते डेव्हलपर्स किंवा शॉपिफायवर अजिबात हल्ला करत नाही. त्याचे postinstall.sh एका अशा गेटने सुरुवात होते, जे सर्व रहस्य उघड करते:
मालवेअर-विश्लेषण प्लॅटफॉर्मसाठी विशिष्ट असलेले एन्व्हायर्नमेंट व्हेरिएबल सेट केल्याशिवाय स्क्रिप्ट काहीही करत नाही. जेव्हा ते सेट केलेले असते, तेव्हा पेलोडला कळते की तो अशाच प्रकारच्या पॅकेजेसना निकामी करण्यासाठी आणि त्यांचा अभ्यास करण्यासाठी अस्तित्वात असलेल्या सँडबॉक्समध्ये चालत आहे — आणि तो प्रतिहल्ला करतो.
ते सर्वप्रथम इन्स्टन्स मेटाडेटा सर्वरमधून GCP सर्व्हिस-अकाउंट OAuth टोकन मिळवते आणि ते बाहेर पाठवते. त्यानंतर, त्या टोकनचा वापर करून, ते स्कॅन करते कुबरनेट्स नियंत्रण विमान येथे पोहोचण्यायोग्य kubernetes.default.svc:
- क्लस्टररोलबाइंडिंग्ज, क्लस्टररोल्स आणि नोड्सची यादी करते;
- संपूर्णपणे पॉड्स, सिक्रेट्स आणि कॉन्फिगमॅप्सची तपासणी करते क्यूब-सिस्टम, डीफॉल्ट, क्यूब-पब्लिक, क्यूब-नोड-लीजआणि विश्लेषण नेमस्पेस;
- चोरलेल्या ओळखीला नेमके काय करण्याची परवानगी आहे हे मॅप करण्यासाठी SelfSubjectAccessReview कॉल जारी करते.
शेवटी ते हार्डकोडेड GCP प्रोजेक्ट आयडीवरून तयार केलेल्या Google Cloud Storage बकेट नावांचा ब्रूट-फोर्स पद्धतीने शोध घेते.दुर्मिळ-स्वाक्षरीकर्ता-४३७६०३-पी९) आणि प्रकल्प क्रमांक, खालीलप्रमाणे संयोजनांचा अंदाज लावणे *-बिल्ड्स, *-कलाकृती, आणि अनेक मलय- उपसर्ग (विश्लेषण-निकाल, मलिस-पॅकेजेस, मलेसिस-स्कॅनप्रत्येक प्रतिसाद कोड आणि बॉडी लॉग केली जाते आणि त्याच ठिकाणी परत POST केली जाते. ज्युल्स-कलेक्ट शेवटचा बिंदू.
हे एका सप्लाय-चेन पेलोडचे दुर्मिळ प्रकरण आहे, जे विशेषतः संरक्षकांच्या स्वतःच्या पायाभूत सुविधांवर हल्ला करण्यासाठी तयार केले गेले होते. संपूर्ण मोहिमेमागील बनावट कहाणी — ज्याचे काही अंश पेलोड्समध्ये कमेंट्सच्या स्वरूपात दिसतात आणि या वर्तनाला “सुरक्षा संशोधन PoC … ओव्हरस्कोप्ड गिट प्रॉक्सी टोकनद्वारे क्रॉस-रेपो राइट” असे संबोधतात — ही तीच आत्मसमर्थनात्मक मांडणी आहे, मग रनटाइम लक्ष्य शॉपिफाय मोनोरेपो असो किंवा विश्लेषण क्लस्टरचा मेटाडेटा सर्व्हर असो.
टाइमलाइन आणि व्याप्ती स्थलांतर
ज्युल्सजॅकर ही एकाच वेळी होणारी गोष्ट नाही. ही एक दीर्घकाळ चालणारी प्रक्रिया आहे, जी केवळ नाव बदलून रजिस्ट्री बंद झाल्यानंतरही टिकून राहिली.
| कधी | कार्यक्रम |
|---|---|
| एप्रिल २०२६ च्या मध्यापर्यंत | पहिले पॅकेजेस मूळ प्रकाशकाच्या व्याप्तीखाली दिसतात: TS-utility फेसाड, एन्व्हायर्नमेंट आणि git-config एक्सफिल्ट्रेशन. |
| मे २०२५ च्या सुरुवातीला | हायपरवायझर आणि कर्नल-एस्केप रेकनिसन्स व्हेरिएंट प्रकाशित झाले. |
| मे २०२६ च्या मध्यापासून ते अखेरपर्यंत | SC3 क्रॉस-रेपो राइट वर्म शॉपिफाय-लक्ष्यित पेलोड्ससोबत आढळतो आणि google-labs-jules[bot] बनावट ओळख. SC4 मध्ये AES-एनक्रिप्टेड आणि होस्ट-गेटेड लोडर्स सादर केले आहेत. |
| मे २०२५ च्या अखेरीस | npm मूळ पब्लिशर स्कोप काढून टाकते; पॅकेजची नावे रिकाम्या सुरक्षा-धारक प्लेसहोल्डर्समध्ये रूपांतरित होतात. |
| त्याच आठवड्यात | ऑपरेटर जवळजवळ सारख्याच दिसणाऱ्या व्याप्तीमध्ये स्थलांतरित होतो आणि विश्लेषण-पायाभूत सुविधा प्रकारासह वर्म पुन्हा प्रकाशित करतो. |
हे स्थलांतर हा असा भाग आहे जो समर्थकांनी शांतपणे स्वीकारला पाहिजे. पहिल्या स्कोपला हटवल्याने मोहीम संपली नाही किंवा तिचा वेगही मंदावला नाही. ऑपरेटरने आधीच एक समांतर स्कोप तयार केला होता, ज्याचे नाव मूळ नावापेक्षा फक्त एका अक्षराने वेगळे होते, आणि त्याच आठवड्यात प्रकाशन सुरू ठेवले. हे लिहीत असताना, नवीन स्कोपच्या... ts-form-utils (आवृत्त्या १.०.० ते १.१.०), त्याचे टीएस-प्रोजेक्ट-लिंट (१.०.० आणि १.१.०), आणि स्टँडअलोन ts-enum-helper (1.0.0) स्थापित करण्यायोग्य राहतील.
तडजोडीचे निर्देशक
खालील सर्व निर्देशकांची पॅकेज सोर्सच्या आधारे पुष्टी करण्यात आली.
| प्रकार | दर्शक | टिपा |
|---|---|---|
| नेटवर्क (C2) | aaronstack[.]com/jules-collect | प्रत्येक पिढीमध्ये एकच कलेक्शन एंडपॉईंट; JSON टेलिमेट्री आणि base64-gzip रिपॉझिटरी टारबॉल चंक्स स्वीकारतो. |
| नेटवर्क (एसएसआरएफ प्रॉक्सी) | http://git@192.168.0.1:8080 | लक्ष्य संस्थेच्या रिपॉझिटरीजपर्यंत पोहोचण्यासाठी वापरल्या जाणाऱ्या ओव्हरस्कोप गिट प्रॉक्सी टोकनसाठीचा फ्रंट. |
| नेटवर्क (क्लाउड) | metadata.google.internal/computeMetadata/v1kubernetes.default.svcstorage.googleapis.com/storage/v1/b | केवळ विश्लेषण-पायाभूत सुविधा प्रकाराद्वारे टोकन चोरी आणि कुबरनेट्स कंट्रोल-प्लेन टेहळणीसाठी वापरले जाते. |
| ओळख | google-labs-jules[bot]161369871+google-labs-jules[bot]@users.noreply.github.com | बनावट commit लेखकाची ओळख पीडित मुख्य शाखांमध्ये टाकण्यात आली. |
| फाइल | lib/.perf.dat | AES-256-CBC-एनक्रिप्टेड पेलोड ब्लॉब; IV पहिल्या १६ बाइट्समध्ये साठवलेला आहे आणि की डायनॅमिकली पुनर्रचित केली आहे. index.js. |
| फाइल | SECURITY-POC.md | सोडले आणि commitसंदेशासह पीडित रिपॉझिटरीजमध्ये परत पाठवले chore: update dependency cache. |
| फाइल | scripts/postinstall.sh | गेटवर $MALYSIS_ANALYSIS_ID; विश्लेषण-पायाभूत सुविधा-लक्ष्यित व्हेरिएंट ओळखतो. |
| वर्तणूक | os.hostname() साठी तपासणी devbox / ubuntu-fc-uvm | पेलोड डिक्रिप्शन आणि एक्झिक्यूशनच्या आधी सँडबॉक्स आणि एआय-एजंट वातावरणाचे गेटिंग करणे. |
| वर्तणूक | .jules/ आणि /app/.jules डिरेक्टरी वाचन | एआय-एजंटच्या कार्यक्षेत्रांना स्पष्टपणे लक्ष्य करणे. |
| वर्तणूक | sc1-, sc3-, sc4-, s0-vmm-recon | ऑपरेटरने परिभाषित केलेले टेलिमेट्री स्टेज लेबल्स, जे शोध आणि हंटिंगसाठी उपयुक्त असतात. |
| क्लाउड लक्ष्य | rare-signer-437603-p9malysis-* बकेट अंदाज | विश्लेषण-पायाभूत सुविधा प्रकारात अंतर्भूत केलेले हार्डकोडेड GCP प्रकल्प ओळखकर्ते आणि स्टोरेज-बकेट गणना नमुने. |
| पॅकेजचा आकार | रिपॉझिटरी फील्ड नसलेले TS-युटिलिटी पॅकेज फेसेड | सुसंगत मोहीम टेम्पलेट: दुर्भावनापूर्ण पेलोड अंतर्भूत असलेले बनावट टाइपस्क्रिप्ट युटिलिटी पॅकेजेस postinstall hooks किंवा जोडलेले index.js. |




