TL; DR
Mendeshaji mmoja wa npm alitumia wiki sita kuchapisha vifurushi bandia vya "huduma" ya TypeScript kama vile ts-form-utils, ts-project-lint, na ts-enum-helper.
Ingawa vifurushi hivyo vinafichua wasaidizi wadogo wa uthibitishaji wanaoonekana halali, mzigo halisi hutekelezwa wakati wa kusakinisha au kwanza unahitaji na hufanya upigaji alama za vidole wa mwenyeji, ugunduzi wa shirika la GitHub, uundaji wa kumbukumbu, na uchujaji wa msimbo chanzo.
Programu hasidi hiyo inalenga mahususi mashirika ya GitHub yenye thamani kubwa, ikiwa ni pamoja na mengi Shopify hazina, kisha huhifadhi na kutoa miti chanzo inayoweza kufikiwa hadi sehemu ya mwisho ya mkusanyiko iliyo katikati.
Kama sehemu ya mtiririko wa kazi wa maelewano, mzigo wa malipo commitfaili ya sa kurudi kwenye hazina za mwathiriwa huku ikiiga utambulisho wa msimbo huru wa Google google-labs-jules[bot].
Tulifuatilia kampeni hiyo — iliyopewa jina JulesJacker — katika wigo nyingi za wachapishaji na angalau vizazi vitano vya mzigo, ikiwa ni pamoja na aina zilizosimbwa kwa njia fiche na zinazozingatia sandbox.
Toleo jipya zaidi linalenga hasa miundombinu ya uchambuzi wa programu hasidi: huamilisha tu ndani ya mazingira ya uchambuzi, huiba tokeni za akaunti ya huduma ya metadata ya wingu, na huchunguza ndege za udhibiti wa Kubernetes na ndoo za kuhifadhi wingu.
IOC kuu inayoshirikiwa katika vizazi vyote vya mzigo ni mwisho wa ukusanyaji aaronstack[.]com/jules-collect.
Ukali: muhimu.
Shambulio: Jinsi Linavyofanya Kazi
Kila kifurushi cha JulesJacker hufuata kiolezo kile kile. kifurushi.json hutangaza msaidizi wa TypeScript asiye na madhara mwenye leseni ya MIT na hana hazina chanzo kilichounganishwa. index.js husafirisha nje vitendakazi vichache halisi, vinavyofanya kazi — regexes za barua pepe, ramani za enum, jedwali la sheria za lint — ili msanidi programu anayeingiza kifurushi aone tabia inayowezekana. Uovu huishi kwingineko: katika baada ya kusakinisha ndoano, au katika kizuizi chini ya index.js ambayo hutekeleza wakati moduli inapohitajika.
Mizigo ya malipo imebadilika kupitia hatua za ndani zilizohesabiwa wazi (mendeshaji huweka lebo kwenye matukio yake ya telemetri sc1-, sc3-, sc4-, na kadhalika), na kutazama kwamba mageuzi ndiyo njia iliyo wazi zaidi ya kuelewa kampeni.
Kizazi cha 1–2: upelelezi na wizi wa usanidi wa git
Vifurushi vya mwanzo kabisa vilikuwa ni viwizi wa habari vilivyo wazi. Wakati wa kusakinisha walivuna vigezo vya mazingira, faili ya mwenyeji wa GitHub CLI, na usanidi wa git wa kimataifa (usanidi wa git –orodha ya kimataifa, git kijijini -v), kisha akaweka kifurushi kwenye sehemu ya mwisho ya mkusanyiko. Hii ilithibitisha sahihi ya mwendeshaji: hadithi ya jalada la "Huduma za uthibitishaji wa fomu ya TypeScript", taa inayotoka kwenda kwenye kikoa kimoja, na ladha ya sifa za msanidi programu badala ya data ya watumiaji.
Kizazi cha 3: vichunguzi vya kutoroka vya hypervisor na kernel
Toleo moja la katikati ya kampeni lilibadilika sana na kuwa mashambulizi ya miundombinu. Badala ya kuiba usanidi, liliendesha uchunguzi wa kuunganisha upya AF_VSOCK soketi, maeneo ya virtio MMIO, /dev/mem, na alama za ugumu wa kernel, na hata jaribio la ajali za kernel zilizosababishwa na sysrq — tabia inayohusishwa na majaribio ya kutoka kwenye mashine pepe au chombo. Lebo za telemetry (s0-vmm-recon, s1-vmm-vsock-fuzz, s2-vmm-mmio, kipima-kiini-cha s3) ilifanya nia iwe wazi. Lahaja hii ililenga waziwazi mazingira ya kisanduku cha mchanga cha wingu na kiendeshaji kisichotumia seva — aina ya VM ya muda mfupi ambayo huunda na kujaribu msimbo usioaminika.
Kizazi cha 3 (SC3): mdudu mtambuka wa kuandika
Kitovu cha mvuto cha kampeni hiyo kikawa mwizi wa repo anayejitangaza. Wakati wa kusakinisha, mzigo wa malipo huendesha mfuatano wa hatua tano uliopangwa kwa wakati:
- Hatua 0 (~100 ms): alama ya vidole kwenye seva mwenyeji — jina la mwenyeji, maelezo ya mtumiaji, utambulisho wa git.
- Hatua 1 (~sekunde 3): kubaini mwathiriwa ni wa shirika gani kwa kukagua git kijijini -v, kisha tafuta faili iliyo na msimbo mgumu ORG_CONFIG jedwali na ujaribu ufikiaji wa repo na git ls-remote — imepitishwa kupitia proksi ya SSRF inayodhibitiwa na mshambuliaji katika http://git@192.168.0.1:8080.
- Hatua 2 (~sekunde 10): git clone kila hazina inayoweza kufikiwa katika orodha lengwa, tarball na gzip mti, uiweke kwenye msimbo wa base64, na uichuje kwa vipande.
- Hatua 3 (~ s 45): "uthibitisho wa ufikiaji" — andika nakala ya kumbukumbu inayoweza kuandikwa, dondosha faili inayoitwa SECURITY-POC.md, na commit Itumie huku mwandishi akiweka google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> na kazi ya ujumbe: sasisha akiba ya utegemezi, kisha sukuma hadi tawi kuu la mwathiriwa.
Orodha ya walengwa iliyo na msimbo mgumu si ya jumla. Inaorodhesha zaidi ya thelathini Shopify hazina kwa jina — Shopify/shopify, Shopify/utambulisho, Shopify/bili, Shopify/banda, Shopify/siri, Shopify/miundombinu, Shopify/.github, na mengine mengi — pamoja na shirika la majaribio, AaronStackBarnes, kwamba opereta anaonekana kudhibiti na kutumia kama lengo la kuandika.
Kizazi cha 4 (SC4): kimesimbwa kwa njia fiche na kuwekwa lango
Toleo jipya zaidi linalowakabili wasanidi programu huongeza tabaka mbili za ukwepaji juu ya mdudu wa SC3.
Kwanza, mzigo hausafirishwi tena kama maandishi rahisi. Mantiki halisi iko katika kibodi kilichosimbwa kwa njia fiche cha AES-256-CBC, lib/.perf.dat, ikiwa na IV katika baiti zake kumi na sita za kwanza. Kipakiaji katika index.js hujenga upya ufunguo wa usimbaji fiche kutoka kwa vipande vya kamba vilivyounganishwa, huondoa usimbaji fiche kwenye blob, na kuiendesha kwa Kazi mpya ()Hata majina ya moduli yamegawanywa ili kuepuka vichanganuzi tuli — hitaji('crypt' + 'o'), kuhitaji('f' + 's').
Pili, imewekewa lango la mwenyeji. Toleo moja huondoa usimbaji fiche na kufanya kazi tu wakati jina la mwenyeji () sawa kisanduku cha usanidi or ubuntu-fc-uvm (chaguo-msingi la Firecracker microVM) au lina kamba ndogo kisanduku cha usanidiMilango mingine mbele ya .jules/ saraka ya kazi:
Kwa maneno mengine, mzigo wa SC4 umeundwa ili kukaa bila kufanya kazi kwenye kompyuta ya kawaida ya msanidi programu na kuamka ndani ya wakala wa kiotomatiki wa akili bandia na mazingira ya sandbox Mhudumu anataka kuafikiana.
Kuanzisha Maabara: Tofauti ya Uchambuzi-Miundombinu
Kifurushi kipya zaidi katika kampeni, msaidizi wa ts-enum, haishambulii watengenezaji au Shopify hata kidogo. Ni baada ya kusakinisha.sh Hufunguliwa kwa lango linalotoa mchezo:
Hati haifanyi chochote isipokuwa kigezo maalum cha mazingira kwa mfumo wa uchambuzi wa programu hasidi kimewekwa. Inapowekwa, mzigo wa malipo unajua unaendeshwa ndani ya kisanduku cha mchanga ambacho kipo ili kulipua na kusoma vifurushi kama hiki - na hupinga mashambulizi.
Kwanza huvuta tokeni ya OAuth ya akaunti ya huduma ya GCP kutoka kwa seva ya metadata ya mfano na kuiondoa. Kisha, kwa kutumia tokeni hiyo, hufagia Ndege ya kudhibiti Kubernetes inayoweza kufikiwa kwa kubernetes.default.svc:
- huorodhesha ClusterRoleBindings, ClusterRoles, na Nodes;
- huchunguza maganda, siri, na ramani za usanidi kote mfumo wa kube, default, kube-public, kukodisha-node-ya-kube, na nafasi ya majina ya uchambuzi;
- Masuala ya SelfSubjectAccessReview yanaitaka kubainisha hasa kile ambacho utambulisho ulioibiwa unaruhusiwa kufanya.
Hatimaye inalazimisha majina ya ndoo za Hifadhi ya Wingu la Google yaliyojengwa kutoka kwa Kitambulisho cha mradi cha GCP kilicho na msimbo mgumu (saini-nadra-437603-p9) na nambari ya mradi, michanganyiko ya kubahatisha kama vile *-hujenga, *-vitu vya kale, na kadhaa malysis- viambishi awali (matokeo ya malysis, vifurushi vya malysis, skani za malysis). Kila msimbo wa majibu na mwili umehifadhiwa na kutumwa tena kwenye kisanduku hicho hicho jules-collect mwisho.
Hii ni kesi nadra ya mzigo wa ugavi uliojengwa mahsusi kushambulia miundombinu ya watetezi wenyewe. Hadithi ya jalada katika kampeni nzima — vipande vyake vinavyoonekana ndani ya mzigo wa gawio kama maoni yanayoelezea tabia hiyo kama "Utafiti wa Usalama wa PoC ... uandishi mtambuka kupitia tokeni ya proksi ya git iliyozidi kipimo" — ni uhalalishaji uleule, iwe lengo la wakati wa utekelezaji ni Shopify monorepo au seva ya metadata ya kundi la uchambuzi.
Muda na Uhamiaji wa Wigo
JulesJacker si tone la risasi moja. Ni operesheni endelevu ambayo ilinusurika kuondolewa kwa usajili kwa kubadilisha jina lake tu.
| Wakati | tukio |
|---|---|
| Katikati ya Aprili 2026 | Vifurushi vya kwanza vinaonekana chini ya wigo wa awali wa mchapishaji: TS-utility façade, mazingira na exfiltration ya git-config. |
| Mapema Mei 2026 | Toleo la upelelezi wa hypervisor na kernel-escape limechapishwa. |
| Kuanzia katikati hadi mwishoni mwa Mei 2026 | Mdudu wa kuandika wa SC3 mtambuka anaonekana pamoja na mizigo inayolengwa na Shopify google-labs-jules[bot] uigaji. SC4 inaleta vipakiaji vilivyosimbwa kwa AES na vilivyowekwa lango la mwenyeji. |
| Mwishoni mwa Mei 2026 | npm huondoa wigo wa awali wa mchapishaji; majina ya vifurushi huamua kuwa vihifadhi nafasi vilivyoachwa wazi. |
| Wiki hiyo hiyo | Mendeshaji huhamia kwenye wigo unaofanana sana na kuchapisha tena mdudu, ikiwa ni pamoja na aina ya uchambuzi-miundombinu. |
Uhamiaji ndio sehemu ambayo watetezi wanapaswa kukaa nayo. Kuondolewa kwa wigo wa kwanza hakukumaliza kampeni au hata kuipunguza. Mendeshaji alikuwa tayari ameandaa wigo sambamba ambao jina lake hutofautiana na asili kwa herufi moja, na aliendelea kuchapisha ndani ya wiki hiyo hiyo. Kufikia wakati huu wa kuandika, wigo mpya matumizi ya umbo la ts (matoleo 1.0.0 hadi 1.1.0), yake ts-project-lint (1.0.0 na 1.1.0), na inayojitegemea msaidizi wa ts-enum (1.0.0) bado inaweza kusakinishwa.
Viashiria vya Maelewano
Viashiria vyote vilivyo hapa chini vilithibitishwa dhidi ya chanzo cha kifurushi.
| aina | Kiashiria | Vidokezo |
|---|---|---|
| Mtandao (C2) | aaronstack[.]com/jules-collect | Sehemu ya mwisho ya mkusanyiko mmoja katika kila kizazi; hupokea vipande vya telemetry ya JSON na hazina ya base64-gzip. |
| Mtandao (proksi ya SSRF) | http://git@192.168.0.1:8080 | Mbele ya tokeni ya proksi ya git iliyo na upana wa juu inayotumika kufikia hazina lengwa za shirika. |
| Mtandao (wingu) | metadata.google.internal/computeMetadata/v1kubernetes.default.svcstorage.googleapis.com/storage/v1/b | Hutumika tu na aina ya uchambuzi-miundombinu kwa wizi wa tokeni na upelelezi wa ndege ya udhibiti wa Kubernetes. |
| utambulisho | google-labs-jules[bot]161369871+google-labs-jules[bot]@users.noreply.github.com | Kughushi commit utambulisho wa mwandishi ulisukumwa kwenye matawi makuu ya mwathiriwa. |
| File | lib/.perf.dat | Kipande cha mzigo wa malipo kilichosimbwa kwa njia fiche cha AES-256-CBC; IV imehifadhiwa katika baiti 16 za kwanza na ufunguo umejengwa upya kiotomatiki katika index.js. |
| File | SECURITY-POC.md | Imeachwa na commitimerudishwa kwenye hazina za mwathiriwa na ujumbe chore: update dependency cache. |
| File | scripts/postinstall.sh | Lango limewashwa $MALYSIS_ANALYSIS_ID; hutambua lahaja inayolenga uchambuzi-miundombinu. |
| Tabia | os.hostname() hundi za devbox / ubuntu-fc-uvm | Mazingira ya Sandbox na Agent AI yakifungamana kabla ya kuondoa na kutekeleza usimbaji fiche wa mzigo. |
| Tabia | .jules/ na /app/.jules saraka inasomwa | Ulengaji dhahiri wa mazingira ya nafasi za kazi za wakala wa akili bandia (AI). |
| Tabia | sc1-, sc3-, sc4-, s0-vmm-recon | Lebo za hatua za telemetri zilizoainishwa na opereta ni muhimu kwa kugundua na kuwinda. |
| Lengo la wingu | rare-signer-437603-p9malysis-* ubashiri wa ndoo | Vitambulisho vya mradi wa GCP vilivyosimbwa kwa njia ngumu na mifumo ya kuhesabu kwa ndoo ya kuhifadhi iliyopachikwa katika lahaja ya miundombinu ya uchanganuzi. |
| Umbo la kifurushi | Kifurushi cha TS-utility façade bila sehemu ya hifadhi | Kiolezo cha kampeni kinachoendelea: vifurushi bandia vya matumizi vya TypeScript vyenye mizigo mibaya iliyopachikwa ndani postinstall hooks au imeambatanishwa na index.js. |




