TL; DR
Yon sèl operatè npm te pase sis semèn ap pibliye fo pakè "itilite" TypeScript tankou ts-form-utils, ts-project-lint, epi ts-enum-helper.
Pandan ke pakè yo ekspoze ti asistan validasyon ki sanble lejitim, chaj reyèl la egzekite lè yo enstale l oswa lè yo mande l pou premye fwa a epi li fè anprent dijital lame a, dekouvèt òganizasyon GitHub, klonaj depo, ak èksfiltrasyon kòd sous.
Malveyan an vize espesyalman òganizasyon GitHub ki gen anpil valè, tankou plizyè Shopify depo yo, apresa achiv epi ekstrè pyebwa sous aksesib yo nan yon pwen final koleksyon santralize.
Kòm yon pati nan workflow konpwomi an, chaj la commitfichye sa a tounen nan depo viktim yo pandan y ap imite idantite kodaj otonòm Google la. google-labs-jules[bot].
Nou te swiv kanpay la — yo te rele l JulesJacker — atravè plizyè dimansyon piblikatè ak omwen senk jenerasyon chaj itil, ki gen ladan varyant chiffres ak sandbox-aware.
Dènye varyant lan vize espesyalman enfrastrikti analiz malveyan: li aktive sèlman andedan anviwònman analiz yo, li vòlè jeton kont sèvis metadone nwaj la, epi li sonde plan kontwòl Kubernetes yo ak bokit depo nwaj yo.
IOC prensipal ki pataje atravè tout jenerasyon chaj itil la se pwen final koleksyon an. aaronstack[.]com/jules-collect.
Gravite: kritik.
Atak la: Kijan li fonksyone
Chak pake JulesJacker swiv menm modèl la. package.json fè piblisite pou yon asistan TypeScript ki pa danjere avèk yon lisans MIT epi san okenn depo sous lye. index.js ekspòte yon ti ponyen fonksyon reyèl ki fonksyone — regex imèl, map enum, tablo règ lint — pou yon devlopè ki aktyèlman enpòte pake a wè konpòtman ki posib. Malis la rete yon lòt kote: nan yon apre enstalasyon zen, oubyen nan yon blòk nan pati anba a index.js ki egzekite lè yo bezwen modil la.
Chaj itil yo evolye atravè etap entèn ki byen nimewote (operatè a mete etikèt sou pwòp evènman telemetri li yo sc1-, sc3-, sc4-, ak sou sa), epi obsève evolisyon sa a se fason ki pi klè pou konprann kanpay la.
Jenerasyon 1–2: rekonesans ak vòl git-config
Premye pakè yo te vòlè enfòmasyon ki senp. Lè yo enstale yo, yo te rekòlte varyab anviwònman yo, fichye hosts GitHub CLI a, ak konfigirasyon git global la (konfigirasyon git –global –list, git remote -v), apresa li te poste pake a nan pwen final koleksyon an. Sa te etabli siyati operatè a: yon istwa kouvèti "itilite validasyon fòm TypeScript", yon baliz sortan pou yon sèl domèn, ak yon gou pou kalifikasyon devlopè olye de done konsomatè.
Jenerasyon 3: sond chape ipèvizè ak nwayo
Yon vèsyon nan mitan kanpay la te antre an atak enfrastrikti byen fò. Olye pou l vòlè konfigirasyon, li te fè yon sondaj sou ekipay done yo. AF_VSOCK priz, rejyon virtio MMIO, / dev / mem, ak drapo ranfòsman nwayo a, e menm tantativ aksidan nwayo deklanche pa sysrq — konpòtman ki asosye ak tantativ pou soti nan yon machin vityèl oswa yon veso. Etikèt telemetri yo (s0-vmm-rekoneksyon, s1-vmm-vsocket-fuzz, s2-vmm-mmio, s3-kernel-probe) te fè entansyon an klè. Varyan sa a te klèman vize anviwònman "cloud-sandbox" ak "serverless-runner" — kalite VM efemèr ki bati epi teste kòd ki pa fyab.
Jenerasyon 3 (SC3): vè ekriti kwa-repo a
Sant gravite kanpay la te vin tounen yon vòlè depo ki t ap pwopaje tèt li. Lè l ap enstale, chaj la ap egzekite yon sekans senk etap ki gen yon delè:
- Etap 0 (~100 ms): pran anprent dijital la — non lame a, enfòmasyon itilizatè a, idantite git la.
- Etap 1 (~3 s): detèmine nan ki òganizasyon viktim nan ye lè w enspekte git remote -v, apresa chèche yon kòd ki kode an fè ORG_CONFIG aksè tab ak depo tès ak git ls-remote — dirije atravè yon proxy SSRF kontwole pa yon atakè nan http://git@192.168.0.1:8080.
- Etap 2 (~10 segonn): git script chak depo aksesib nan lis sib la, mete yon tarball epi zip pyebwa a, kode li nan base64, epi èkfiltre li an chunk.
- Etap 3 (~45 s): "prèv aksè" a — klone yon depo ekritib, lage yon fichye ki rele SECURITY-POC.md, epi commit li avèk otè a mete sou google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> epi travay mesaj la: mete ajou kach depandans lan, answit pouse l nan branch prensipal viktim nan.
Lis sib ki kode an dirèk la pa jenerik. Li gen plis pase trant Shopify depo pa non — Shopify/shopify, Shopify/idantite, Shopify/faktirasyon, Shopify/kof vwazen, Shopify/sekrè, Shopify/enfrastrikti, Shopify/.github, ak anpil lòt ankò — ansanm ak yon òganizasyon tès, AaronStackBarnes, ke operatè a sanble kontwole epi itilize kòm sib ekriti a.
Jenerasyon 4 (SC4): chiffres ak baryè
Dènye varyant ki fè fas ak devlopè a ajoute de kouch evazyon anlè vè SC3 la.
Premyèman, chaj la pa anbake kòm tèks klè ankò. Vrè lojik la chita nan yon blob chifreman AES-256-CBC, lib/.perf.dat, ak IV la nan premye sèz okte li yo. Loader a nan index.js rekonstwi kle dekriptaj la apati fragman chèn ki konekte, dekripte blob la, epi egzekite li avèk nouvo Fonksyon()Menm non modil yo divize pou evite eskanè estatik yo — mande('kript' + 'o'), mande('f' + 's').
Dezyèmman, li gen yon kontwòl sou òdinatè a (host-gate). Se yon sèl varyant ki dekripte epi ki fonksyone lè non_ost() egal bwat devlopman or ubuntu-fc-uvm (yon Firecracker microVM pa defo) oubyen gen sou-chèn nan bwat devlopmanYon lòt baryè sou prezans yon .jul/ anyè travay:
Nan lòt mo, chaj SC4 la fèt pou rete inaktif sou laptop yon devlopè òdinè epi reveye sèlman andedan ajan IA otomatik la ak anviwònman sandbox Operatè a aktyèlman vle fè konpwomi.
Limen Laboratwa a: Varyan Analiz-Enfrastrikti a
Pakè ki pi nouvo nan kanpay la, ts-enum-helper, pa atake devlopè yo oswa Shopify ditou. Li postinstall.sh ouvè ak yon pòtay ki devwale jwèt la:
Script la pa fè anyen sof si yo mete yon varyab anviwònman espesifik pou yon platfòm analiz malveyan. Lè li mete, chaj la konnen li ap fonksyone andedan sandbox la ki egziste pou eksploze epi etidye pakè egzakteman tankou sa a — epi li kontrekare.
Li premye rale jeton OAuth kont sèvis GCP a nan sèvè metadone enstans lan epi li retire li. Apre sa, lè l sèvi avèk jeton sa a, li baleye... Avyon kontwòl Kubernetes rive nan kubernetes.default.svc:
- lis ClusterRoleBindings, ClusterRoles, ak Nodes;
- sonde pod, sekrè, ak configmap atravè sistèm kube, default, kube-piblik, lokasyon kube-node, ak espas non analiz la;
- bay apèl SelfSubjectAccessReview pou trase egzakteman sa idantite yo vòlè a gen dwa fè.
Finalman, li fòse non bokit Google Cloud Storage yo bati apati yon ID pwojè GCP ki kode an dirèk (ra-siyatè-437603-p9) ak nimewo pwojè a, devine konbinezon tankou *-bati, *-artefak, ak plizyè maliz- prefiks (rezilta maliz, pakè malysis, eskanè malèz). Chak kòd repons ak kò li anrejistre epi yo poste l tounen nan menm adrès la. jules-kolekte pwen final.
Sa a se yon ka ki ra kote yon chaj chèn ekipman pou konstwi espesyalman pou atake pwòp enfrastrikti defansè yo. Istwa kouvèti a atravè tout kanpay la — fragman ladan l parèt andedan chaj yo kòm kòmantè ki ankadre konpòtman an kòm yon "PoC Rechèch Sekirite ... ekriti kwa-repo atravè yon jeton proxy git ki depase limit" — se menm jistifikasyon pwòp tèt ou a, kit sib ekzekisyon an se yon monorepo Shopify oswa sèvè metadone gwoup analiz la.
Delè ak Migrasyon Dimansyon an
JulesJacker se pa yon operasyon yo te lage yon sèl fwa. Se yon operasyon dirab ki te siviv yon demantilasyon rejis la jis grasa yon chanjman non.
| Lè | evènman |
|---|---|
| Mid-avril 2026 | Premye pakè yo parèt anba dimansyon orijinal piblikatè a: fasad TS-utility, anviwònman ak èsfiltrasyon git-config. |
| Kòmansman me 2026 | Yo pibliye varyant rekonesans ipèvizè ak kernel-escape la. |
| Mitan rive nan fen mwa me 2026 | Vè ekriti kwa-repo SC3 a parèt ansanm ak payloads ki vize Shopify yo epi google-labs-jules[bot] imitasyon. SC4 prezante chajè ki chiffres ak AES ak ki kontwole pa lame a. |
| Fen Me 2026 | npm retire dimansyon orijinal piblikatè a; non pakè yo rezoud an espas vid ki kenbe sekirite. |
| Menm semèn nan | Operatè a migre nan yon domèn ki prèske idantik epi li repibliye vè a, ki gen ladan varyant enfrastrikti analiz la. |
Migrasyon an se pati defansè yo ta dwe pran swen. Destriksyon premye teleskòp la pa t fini kanpay la oswa menm ralanti li. Operatè a te deja mete sou pye yon teleskòp paralèl ki gen yon non diferan de orijinal la pa yon sèl karaktè, epi li te kontinye pibliye nan menm semèn nan. Nan moman sa a, nouvo teleskòp la... ts-fòm-itilite (vèsyon 1.0.0 jiska 1.1.0), li yo ts-pwojè-lint (1.0.0 ak 1.1.0), ak vèsyon endepandan an ts-enum-helper (1.0.0) rete enstalabl.
Endikatè Konpwomi
Tout endikatè ki anba yo te konfime parapò ak sous pakè a.
| Kalite | Endikatè | nòt |
|---|---|---|
| Rezo (C2) | aaronstack[.]com/jules-collect | Yon sèl pwen final koleksyon atravè chak jenerasyon; li resevwa telemetri JSON ak moso tarball depo base64-gzip. |
| Rezo (proksi SSRF) | http://git@192.168.0.1:8080 | Devan pou yon jeton proxy git ki gen twòp dimansyon ki itilize pou rive nan depo òganizasyon sib yo. |
| Rezo (nwaj) | metadata.google.internal/computeMetadata/v1kubernetes.default.svcstorage.googleapis.com/storage/v1/b | Sèlman varyant enfrastrikti analiz la itilize li pou vòl jeton ak rekonesans plan kontwòl Kubernetes. |
| Idantite | google-labs-jules[bot]161369871+google-labs-jules[bot]@users.noreply.github.com | Fòje commit idantite otè a pouse nan branch prensipal viktim yo. |
| File | lib/.perf.dat | Blob chaj chifre ak AES-256-CBC; IV estoke nan premye 16 okte yo epi kle rekonstwi dinamikman nan index.js. |
| File | SECURITY-POC.md | Tonbe epi commitretounen nan depo viktim yo ak mesaj la chore: update dependency cache. |
| File | scripts/postinstall.sh | Baryè sou $MALYSIS_ANALYSIS_ID; idantifye varyant analiz-enfrastrikti-sib la. |
| Konpòtman | os.hostname() chèk pou devbox / ubuntu-fc-uvm | Baryè anviwònman sandbox ak ajan IA anvan dekriptaj ak ekzekisyon chaj itil la. |
| Konpòtman | .jules/ ta dwe apwouve bèso tibebe w la epi /app/.jules lekti anyè | Sib eksplisit anviwònman espas travay ajan IA yo. |
| Konpòtman | sc1-, sc3-, sc4-, s0-vmm-recon | Etikèt etap telemetri defini pa operatè a ki itil pou deteksyon ak lachas. |
| Sib nwaj la | rare-signer-437603-p9malysis-* devine bokit | Idantifyan pwojè GCP ki kode an fè ak modèl enumerasyon bokit depo entegre nan varyant enfrastrikti analiz la. |
| Fòm pake a | Fasad pake sèvis piblik TS san jaden depo | Modèl kanpay ki konsistan: pakè sèvis piblik TypeScript fo ak chaj move entegre ladan yo postinstall hooks oubyen ajoute nan index.js. |




