TL; DR
ఒకే npm ఆపరేటర్ ఆరు వారాల పాటు నకిలీ టైప్స్క్రిప్ట్ “యుటిలిటీ” ప్యాకేజీలను ప్రచురించడంలో గడిపాడు, అవి: ts-form-utils, ts-project-lintమరియు ts-enum-helper.
ప్యాకేజీలు చట్టబద్ధంగా కనిపించే చిన్న ధ్రువీకరణ సహాయకాలను బహిర్గతం చేస్తున్నప్పటికీ, అసలైన పేలోడ్ ఇన్స్టాల్ లేదా మొదటి రిక్వైర్ సమయంలో అమలు అవుతుంది మరియు హోస్ట్ ఫింగర్ప్రింటింగ్, గిట్హబ్ ఆర్గనైజేషన్ డిస్కవరీ, రిపోజిటరీ క్లోనింగ్ మరియు సోర్స్-కోడ్ ఎక్స్ఫిల్ట్రేషన్ను నిర్వహిస్తుంది.
ఈ మాల్వేర్ ప్రత్యేకంగా అనేక విలువైన గిట్హబ్ సంస్థలను లక్ష్యంగా చేసుకుంటుంది. Shopify రిపోజిటరీలు, ఆపై ఆర్కైవ్లు మరియు అందుబాటులో ఉన్న సోర్స్ ట్రీలను ఒక కేంద్రీకృత కలెక్షన్ ఎండ్పాయింట్కు తరలిస్తాయి.
రాజీ వర్క్ఫ్లోలో భాగంగా, పేలోడ్ commitGoogle యొక్క అటానమస్ కోడింగ్ ఐడెంటిటీగా నటిస్తూ sa ఫైల్ను బాధితుల రిపోజిటరీలలోకి తిరిగి పంపండి google-labs-jules[bot].
మేము ప్రచారాన్ని ట్రాక్ చేసాము — పేరు జూల్స్ జాకర్ — బహుళ పబ్లిషర్ పరిధులలో మరియు కనీసం ఐదు పేలోడ్ తరాలలో, ఎన్క్రిప్టెడ్ మరియు శాండ్బాక్స్-అవేర్ వేరియంట్లతో సహా.
ఈ సరికొత్త వేరియంట్ ప్రత్యేకంగా మాల్వేర్-విశ్లేషణ మౌలిక సదుపాయాలను లక్ష్యంగా చేసుకుంటుంది: ఇది కేవలం విశ్లేషణ వాతావరణాలలో మాత్రమే క్రియాశీలమవుతుంది, క్లౌడ్ మెటాడేటా సర్వీస్-అకౌంట్ టోకెన్లను దొంగిలిస్తుంది, మరియు కుబెర్నెటెస్ కంట్రోల్ ప్లేన్లు మరియు క్లౌడ్ స్టోరేజ్ బకెట్లను శోధిస్తుంది.
అన్ని పేలోడ్ తరాలలో పంచుకోబడిన ప్రాథమిక IOC సేకరణ ఎండ్పాయింట్. aaronstack[.]com/jules-collect.
తీవ్రత: విషమంగా ఉంది.
దాడి: అది ఎలా పనిచేస్తుంది
ప్రతి జూల్స్జాకర్ ప్యాకేజీ ఒకే టెంప్లేట్ను అనుసరిస్తుంది. ప్యాకేజీ.జాసన్ MIT లైసెన్స్తో మరియు ఎలాంటి లింక్ చేయబడిన సోర్స్ రిపోజిటరీ లేకుండా, ఒక హానిచేయని టైప్స్క్రిప్ట్ హెల్పర్ను ప్రకటిస్తుంది. index.js ఈమెయిల్ రెగెక్స్లు, ఎనమ్ మ్యాప్లు, లింట్ రూల్ టేబుల్స్ వంటి కొన్ని నిజమైన, పనిచేసే ఫంక్షన్లను ఇది ఎగుమతి చేస్తుంది, తద్వారా ప్యాకేజీని వాస్తవంగా ఇంపోర్ట్ చేసే డెవలపర్ నమ్మశక్యమైన ప్రవర్తనను చూస్తాడు. అసలు దురుద్దేశం వేరే చోట ఉంది: ఒక పోస్ట్ ఇన్స్టాల్ కొక్కెం, లేదా దిగువన ఉన్న బ్లాక్లో index.js మాడ్యూల్ అవసరమైన క్షణంలో అది అమలు అవుతుంది.
పేలోడ్లు స్పష్టంగా సంఖ్యలు వేయబడిన అంతర్గత దశల ద్వారా అభివృద్ధి చెందాయి (ఆపరేటర్ తన సొంత టెలిమెట్రీ ఈవెంట్లకు లేబుల్స్ ఇస్తుంది) sc1-, sc3-, sc4-మరియు మొదలైనవి), మరియు ఆ పరిణామాన్ని గమనించడమే ప్రచారాన్ని అర్థం చేసుకోవడానికి అత్యంత స్పష్టమైన మార్గం.
తరం 1–2: గూఢచర్యం మరియు గిట్-కాన్ఫిగ్ దొంగతనం
తొలి ప్యాకేజీలు సూటిగా సమాచారాన్ని దొంగిలించేవి. ఇన్స్టాల్ చేసేటప్పుడు అవి ఎన్విరాన్మెంట్ వేరియబుల్స్, గిట్హబ్ CLI హోస్ట్స్ ఫైల్, మరియు గ్లోబల్ గిట్ కాన్ఫిగరేషన్ను సేకరించేవి (git config –global –list, git remote -v), ఆ తర్వాత బండిల్ను కలెక్షన్ ఎండ్పాయింట్కు POST చేసింది. ఇది ఆపరేటర్ యొక్క ప్రత్యేకతను స్పష్టం చేసింది: “టైప్స్క్రిప్ట్ ఫారం వాలిడేషన్ యుటిలిటీస్” అనే కట్టుకథ, ఒకే డొమైన్కు వెళ్లే ఒక అవుట్బౌండ్ బీకన్, మరియు వినియోగదారు డేటా కంటే డెవలపర్ ఆధారాలకే ప్రాధాన్యత ఇవ్వడం.
తరం 3: హైపర్వైజర్ మరియు కెర్నల్ ఎస్కేప్ ప్రోబ్లు
ప్రచార మధ్య దశలో ఒక వెర్షన్ మౌలిక సదుపాయాల దాడులపై తీవ్రంగా దృష్టి సారించింది. కాన్ఫిగరేషన్ను దొంగిలించడానికి బదులుగా, అది ఒక రికాన్ హార్నెస్ ప్రోబింగ్ను అమలు చేసింది. AF_VSOCK సాకెట్లు, వర్టియో MMIO ప్రాంతాలు, /dev/memమరియు కెర్నల్ హార్డెనింగ్ ఫ్లాగ్లు, మరియు sysrq- ప్రేరేపిత కెర్నల్ క్రాష్ల ప్రయత్నాలు కూడా — వర్చువల్ మెషీన్ లేదా కంటైనర్ నుండి బయటపడటానికి చేసే ప్రయత్నాలతో సంబంధం ఉన్న ప్రవర్తన. టెలిమెట్రీ ట్యాగ్లు (s0-vmm-recon, s1-vmm-vsock-fuzz, s2-vmm-mmio, s3-కెర్నల్-ప్రోబ్) ఉద్దేశాన్ని స్పష్టం చేసింది. ఈ వేరియంట్ స్పష్టంగా లక్ష్యంగా చేసుకుంది క్లౌడ్-శాండ్బాక్స్ మరియు సర్వర్లెస్-రన్నర్ పరిసరాలు — విశ్వసనీయత లేని కోడ్ను నిర్మించి, పరీక్షించే ఒక రకమైన అశాశ్వతమైన VM.
తరం 3 (SC3): క్రాస్-రెపో రైట్ వార్మ్
ఈ క్యాంపెయిన్ యొక్క ప్రధాన కేంద్రం, దానంతట అదే వ్యాపించే ఒక రెపో దొంగగా మారింది. ఇన్స్టాల్ చేసేటప్పుడు, పేలోడ్ ఐదు దశల సమయబద్ధమైన క్రమాన్ని అమలు చేస్తుంది:
- స్టేజ్ X (~100 మిల్లీసెకన్లు): హోస్ట్ను ఫింగర్ప్రింట్ చేయండి — హోస్ట్ పేరు, వినియోగదారు సమాచారం, గిట్ గుర్తింపు.
- స్టేజ్ X (~3 సె): పరిశీలించడం ద్వారా బాధితుడు ఏ సంస్థకు చెందినవాడో నిర్ధారించండి git remote -vతర్వాత హార్డ్కోడ్ చేయబడినదాన్ని వెతకండి ORG_CONFIG టేబుల్ మరియు టెస్ట్ రెపో యాక్సెస్తో git ls-remote — దాడి చేసేవారి నియంత్రణలో ఉన్న SSRF ప్రాక్సీ ద్వారా మళ్ళించబడింది http://git@192.168.0.1:8080.
- స్టేజ్ X (~10 సెకన్లు): జిట్ క్లోన్ లక్ష్య జాబితాలోని చేరుకోగల ప్రతి రిపోజిటరీ నుండి ట్రీని టార్బాల్ మరియు జిజిప్ చేసి, దానిని బేస్64-ఎన్కోడ్ చేసి, చంక్-ఎక్స్ఫిల్ట్రేట్ చేయండి.
- స్టేజ్ X (~45 సెకన్లు): “యాక్సెస్ రుజువు” — వ్రాయదగిన రెపోను క్లోన్ చేయండి, SECURITY-POC.md అనే ఫైల్ను ఉంచండి, మరియు commit రచయితగా google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> ను మరియు ఈ సందేశ భాగాన్ని సెట్ చేయండి: డిపెండెన్సీ కాష్ను అప్డేట్ చేయండి, ఆపై బాధితుడి మెయిన్లైన్ బ్రాంచ్కు పుష్ చేయండి.
హార్డ్కోడ్ చేయబడిన టార్గెట్ జాబితా జెనరిక్ కాదు. ఇది ముప్పైకి పైగా జాబితా చేస్తుంది. Shopify పేరు ద్వారా రిపోజిటరీలు — షాపిఫై/షాపిఫై, షాపిఫై/గుర్తింపు, షాపిఫై/బిల్లింగ్, షాపిఫై/వాల్ట్, షాపిఫై/రహస్యాలు, షాపిఫై/మౌలిక సదుపాయాలు, Shopify/.githubమరియు మరెన్నో — ఒక పరీక్షా సంస్థతో పాటు, ఆరోన్స్టాక్బార్న్స్ఆపరేటర్ నియంత్రిస్తున్నట్లు కనిపించే మరియు రైట్ టార్గెట్గా ఉపయోగించేది.
జనరేషన్ 4 (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 ప్రాజెక్ట్ ID నుండి రూపొందించబడిన Google Cloud Storage బకెట్ పేర్లను బలవంతంగా ఎంచుకుంటుంది (అరుదైన-సంతకం చేసేవారు-437603-p9) మరియు ప్రాజెక్ట్ సంఖ్య, వంటి కలయికలను ఊహించడం *-నిర్మాణాలు, *-కళాఖండాలు, మరియు అనేక విశ్లేషణ- ఉపసర్గలు (విశ్లేషణ-ఫలితాలు, విశ్లేషణ-ప్యాకేజీలు, విశ్లేషణ-స్కాన్లుప్రతి రెస్పాన్స్ కోడ్ మరియు బాడీ లాగ్ చేయబడి, తిరిగి అదే చిరునామాకు POST చేయబడుతుంది. జూల్స్-కలెక్ట్ ముగింపు బిందువు.
రక్షకుల సొంత మౌలిక సదుపాయాలపై దాడి చేయడానికి ప్రత్యేకంగా రూపొందించిన సప్లై-చైన్ పేలోడ్కు సంబంధించిన అరుదైన కేసు ఇది. ఈ ప్రచారం అంతటా చెప్పిన కట్టుకథ — దీనిలోని కొన్ని భాగాలు పేలోడ్ల లోపల వ్యాఖ్యలుగా కనిపిస్తూ, ఈ ప్రవర్తనను "సెక్యూరిటీ రీసెర్చ్ PoC … ఓవర్స్కోప్డ్ గిట్ ప్రాక్సీ టోకెన్ ద్వారా క్రాస్-రెపో రైట్"గా చిత్రీకరిస్తాయి — రన్టైమ్ టార్గెట్ షాపిఫై మోనోరెపో అయినా లేదా అనాలిసిస్ క్లస్టర్ యొక్క మెటాడేటా సర్వర్ అయినా, అది ఒకే రకమైన స్వీయ సమర్థన.
టైమ్లైన్ & స్కోప్ మైగ్రేషన్
జూల్స్జాకర్ అనేది ఒక్కసారిగా జరిగిన సంఘటన కాదు. అది కేవలం తన పేరు మార్చుకోవడం ద్వారా రిజిస్ట్రీ నుండి తొలగింపును తట్టుకుని నిలబడిన ఒక నిరంతర కార్యకలాపం.
| ఎప్పుడు | ఈవెంట్ |
|---|---|
| ఏప్రిల్ 2026 మధ్యలో | అసలు ప్రచురణకర్త పరిధిలో మొదటి ప్యాకేజీలు కనిపిస్తాయి: TS-utility façade, environment మరియు git-config exfiltration. |
| 2026 మే ప్రారంభంలో | హైపర్వైజర్ మరియు కెర్నల్-ఎస్కేప్ నిఘా వేరియంట్ ప్రచురించబడింది. |
| మే 2026 మధ్య నుండి చివరి వరకు | షాపిఫై-లక్షిత పేలోడ్లతో పాటు SC3 క్రాస్-రెపో రైట్ వార్మ్ కూడా కనిపిస్తుంది మరియు google-labs-jules[bot] అనుకరణ. SC4 AES-ఎన్క్రిప్టెడ్ మరియు హోస్ట్-గేటెడ్ లోడర్లను పరిచయం చేస్తుంది. |
| మే 2026 చివరిలో | npm అసలు పబ్లిషర్ స్కోప్ను తొలగిస్తుంది; ప్యాకేజీ పేర్లు ఖాళీ సెక్యూరిటీ-హోల్డింగ్ ప్లేస్హోల్డర్లుగా మారతాయి. |
| అదే వారం | ఆపరేటర్ దాదాపుగా ఒకేలా కనిపించే స్కోప్కు మారి, విశ్లేషణ-మౌలిక సదుపాయాల వేరియంట్తో సహా వార్మ్ను తిరిగి ప్రచురిస్తాడు. |
మైగ్రేషన్ అనేది డిఫెండర్లు జీర్ణించుకోవాల్సిన విషయం. మొదటి స్కోప్ను కూల్చివేయడం క్యాంపెయిన్ను ముగించలేదు, కనీసం నెమ్మదింపజేయలేదు కూడా. ఆపరేటర్ అప్పటికే అసలైన దాని పేరుకు ఒకే అక్షరం తేడాతో ఒక సమాంతర స్కోప్ను ప్రారంభించి, అదే వారంలో ప్రచురించడం కొనసాగించాడు. ఈ రచన చేస్తున్న సమయానికి, కొత్త స్కోప్ యొక్క ts-form-utils (వెర్షన్లు 1.0.0 నుండి 1.1.0 వరకు), దాని ts-ప్రాజెక్ట్-లింట్ (1.0.0 మరియు 1.1.0), మరియు స్టాండ్అలోన్ ts-enum-helper (1.0.0) ఇన్స్టాల్ చేయదగినవిగా ఉంటాయి.
రాజీ సూచికలు
కింది సూచికలన్నీ ప్యాకేజీ మూలంతో సరిపోల్చి నిర్ధారించబడ్డాయి.
| రకం | సూచిక | గమనికలు |
|---|---|---|
| నెట్వర్క్ (C2) | aaronstack[.]com/jules-collect | ప్రతి తరం అంతటా ఒకే సేకరణ ఎండ్పాయింట్; JSON టెలిమెట్రీ మరియు బేస్64-జిజిప్ రిపోజిటరీ టార్బాల్ చంక్లను స్వీకరిస్తుంది. |
| నెట్వర్క్ (SSRF ప్రాక్సీ) | 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 మొదటి 16 బైట్లలో నిల్వ చేయబడింది మరియు కీ డైనమిక్గా పునర్నిర్మించబడింది index.js. |
| ఫైలు | SECURITY-POC.md | పడిపోయింది మరియు commitసందేశంతో బాధితుల రిపోజిటరీలలోకి తిరిగి చేర్చబడింది chore: update dependency cache. |
| ఫైలు | scripts/postinstall.sh | గేటెడ్ ఆన్ $MALYSIS_ANALYSIS_ID; విశ్లేషణ-మౌలిక సదుపాయాలను-లక్ష్యంగా చేసుకునే వేరియంట్ను గుర్తిస్తుంది. |
| బిహేవియరల్ | os.hostname() తనిఖీలు devbox / ubuntu-fc-uvm | పేలోడ్ డీక్రిప్షన్ మరియు అమలుకు ముందు శాండ్బాక్స్ మరియు AI-ఏజెంట్ వాతావరణ గేటింగ్. |
| బిహేవియరల్ | .jules/ మరియు /app/.jules డైరెక్టరీ రీడ్స్ | AI-ఏజెంట్ వర్క్స్పేస్ పరిసరాలను స్పష్టంగా లక్ష్యంగా చేసుకోవడం. |
| బిహేవియరల్ | sc1-, sc3-, sc4-, s0-vmm-recon | గుర్తింపు మరియు వేట కోసం ఉపయోగపడే ఆపరేటర్-నిర్వచించిన టెలిమెట్రీ దశ లేబుల్లు. |
| క్లౌడ్ టార్గెట్ | rare-signer-437603-p9malysis-* బకెట్ అంచనాలు | విశ్లేషణ-మౌలిక సదుపాయాల వేరియంట్లో హార్డ్కోడ్ చేయబడిన GCP ప్రాజెక్ట్ ఐడెంటిఫైయర్లు మరియు స్టోరేజ్-బకెట్ గణన నమూనాలు పొందుపరచబడ్డాయి. |
| ప్యాకేజీ ఆకారం | రిపోజిటరీ ఫీల్డ్ లేని TS-యుటిలిటీ ప్యాకేజీ ఫేసేడ్ | స్థిరమైన ప్రచార నమూనా: హానికరమైన పేలోడ్లు పొందుపరిచిన నకిలీ టైప్స్క్రిప్ట్ యుటిలిటీ ప్యాకేజీలు postinstall hooks లేదా జోడించబడింది index.js. |




