JulesJacker: Lažni npm crv oponaša Julesovu umjetnu inteligenciju

JulesJacker: Lažni PoC npm crv koji se predstavlja kao Googleov Jules Agent — i uključuje sandbox analizirajući ga

TL; DR

Jedan NPM operater je proveo šest sedmica objavljujući lažne TypeScript "uslužne" pakete kao što su ts-form-utils, ts-project-lint, I ts-enum-helper.

Dok paketi otkrivaju male, legitimno izgledajuće pomoćne programe za validaciju, pravi korisni teret se izvršava prilikom instalacije ili prvog zahtjeva i vrši otiske hosta, otkrivanje GitHub organizacije, kloniranje repozitorija i izdvajanje izvornog koda.

Zlonamjerni softver posebno cilja visokovrijedne GitHub organizacije, uključujući više njih Shopify repozitorije, zatim arhivira i izdvaja dostupna izvorna stabla do centralizirane krajnje tačke kolekcije.

Kao dio procesa kompromisa, korisni teret commitsa datoteku nazad u repozitorije žrtve dok se istovremeno predstavlja kao autonomni identitet kodiranja kompanije Google google-labs-jules[bot].

Pratili smo kampanju — pod nazivom JulesJacker — u više opsega izdavača i najmanje pet generacija korisnog tereta, uključujući šifrirane i varijante koje su svjesne sandboxa.

Najnovija varijanta posebno cilja infrastrukturu za analizu zlonamjernog softvera: aktivira se samo unutar analitičkih okruženja, krade tokene servisnih računa metapodataka u oblaku i ispituje Kubernetes kontrolne ravnine i kontejnere za pohranu u oblaku.

Primarni IOC koji se dijeli između svih generacija korisnog tereta je krajnja tačka kolekcije. aaronstack[.]com/jules-collect.

Ozbiljnost: kritično.

Napad: Kako funkcioniše

Svaki JulesJacker paket prati isti šablon. package.json reklamira benigni TypeScript pomoćnik s MIT licencom i bez povezanog repozitorija izvornog koda. index.js izvozi nekoliko stvarnih, funkcionalnih funkcija - regekse e-pošte, mape nabrajanja, tabele pravila lint-a - tako da programer koji zapravo uvozi paket vidi uvjerljivo ponašanje. Zloba se nalazi negdje drugdje: u nakon instalacije kuku ili u bloku na dnu index.js koji se izvršava u trenutku kada je modul potreban.

Korisni tereti su evoluirali kroz jasno numerisane interne faze (operator sam označava svoje telemetrijske događaje sc1-, sc3-, sc4-, i tako dalje), a posmatranje te evolucije je najjasniji način da se razumije kampanja.

 Generacija 1–2: izviđanje i krađa git-config-a

Najraniji paketi su bili jednostavni kradljivci informacija. Prilikom instalacije su prikupljali varijable okruženja, GitHub CLI hosts datoteku i globalnu git konfiguraciju (git config –global –list, git udaljeni -v), a zatim je POST-ao paket na krajnju tačku kolekcije. Ovo je uspostavilo potpis operatera: naslovna priča o „uslužnim programima za validaciju TypeScript obrazaca“, odlazni beacon ka jednoj domeni i sklonost ka akreditivima programera, a ne podacima o potrošačima.

Generacija 3: hipervizor i sonde za bijeg kernela

Jedna verzija usred kampanje se snažno okrenula napadima na infrastrukturu. Umjesto krađe konfiguracije, pokrenula je izviđačko ispitivanje opreme. AF_VSOCK utičnice, virtio MMIO regije, / dev / mem, i zastavice za pojačavanje kernela, pa čak i pokušaji rušenja kernela izazvanih sysrq-om - ponašanje povezano s pokušajima izlaska iz virtualne mašine ili kontejnera. Oznake telemetrije (s0-vmm-izviđanje, s1-vmm-vsock-fuzz, s2-vmm-mmio, s3-kernel-probe) je eksplicitno naznačio namjeru. Ova varijanta je očigledno bila usmjerena na cloud-sandbox i serverless-runner okruženja — vrsta kratkotrajne virtuelne mašine koja gradi i testira nepouzdani kod.

Generacija 3 (SC3): crv za pisanje unakrsnih repozitorija

Težište kampanje postalo je samorazmnožavajući kradljivac repozitorija. Prilikom instalacije, korisni teret izvršava vremenski ograničenu sekvencu od pet faza:

  • Stage 0 (~100 ms): otisak prsta hosta — ime hosta, korisničke informacije, git identitet.
  • Stage 1 (~3 s): utvrditi kojoj organizaciji žrtva pripada pregledom git udaljeni -v, a zatim potražite fiksno kodiran ORG_CONFIG pristup tabeli i testnom repozitoriju sa git ls-remote — usmjereno kroz SSRF proxy koji kontrolira napadač na http://git@192.168.0.1:8080.
  • Stage 2 (~10 s): git klon svaki dostupni repozitorij na ciljnoj listi, tarball i gzip datoteku stabla, base64 kodiranje i izdvajanje dijelova iz njega.
  • Stage 3 (~45 s): „dokaz pristupa“ — klonirajte repozitorij u koji se može pisati, uklonite datoteku pod nazivom SECURITY-POC.md i commit s autorom postavljenim na google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> i zadatkom poruke: ažuriranje keša zavisnosti, a zatim slanje na glavnu granu žrtve.

Fiksno kodirana lista ciljeva nije generička. Navodi više od trideset Shopify repozitorije po imenu — Shopify/shopify, Shopify/identitet, Shopify/naplata, Shopify/trezor, Shopify/tajne, Shopify/infrastruktura, Shopify/.github, i mnogo više — uz organizaciju za testiranje, AaronStackBarnes, koju operater izgleda kontroliše i koristi kao cilj pisanja.

Generacija 4 (SC4): šifrirana i zaštićena

Najnovija varijanta namijenjena programerima dodaje dva sloja izbjegavanja na vrh crva SC3.

Prvo, korisni teret se više ne isporučuje kao običan tekst. Prava logika se nalazi u blobu šifriranom AES-256-CBC metodom, lib/.perf.dat, sa IV u svojih prvih šesnaest bajtova. Učitavač u index.js rekonstruiše ključ za dešifrovanje iz spojenih fragmenata stringa, dešifrira blob i pokreće ga sa nova Funkcija()Čak su i nazivi modula razdvojeni kako bi se izbjegli statički skeneri — zahtijevati('kripta' + 'o'), zahtijeva('f' + 's').

Drugo, ograničen je na host-gate. Jedna varijanta dešifrira i pokreće se samo kada os.hostname() jednako razvojni okvir or ubuntu-fc-uvm (podrazumevana vrijednost Firecracker microVM-a) ili sadrži podniz razvojni okvirJoš jedna kapija na osnovu prisustva .jules/ radni direktorij:

Drugim riječima, SC4 korisni teret je dizajniran da ostane neaktivan na običnom laptopu programera i da se probudi samo unutar automatizovanog AI-agenta. sandbox okruženja Operater zapravo želi kompromis.

Uključivanje laboratorije: varijanta analitičke infrastrukture

Najnoviji paket u kampanji, ts-enum-helper, uopće ne napada programere ili Shopify. Njegov postinstall.sh otvara se kapijom koja otkriva igru:

Skripta ne radi ništa osim ako nije postavljena varijabla okruženja specifična za platformu za analizu zlonamjernog softvera. Kada je postavljena, korisni teret zna da se izvršava unutar sandboxa koji postoji za detoniranje i proučavanje paketa upravo poput ovog - i izvodi kontranapad.

Prvo povlači OAuth token GCP servisnog računa sa servera metapodataka instance i izdvaja ga. Zatim, koristeći taj token, pregledava Kubernetes kontrolni plan dostupan na kubernetes.default.svc:

  • navodi ClusterRoleBindings, ClusterRoles i Nodes;
  • ispituje podove, tajne i konfiguracijske mape kube-sistem, default, kube-public, zakup kube-čvorai imenski prostor analize;
  • izdaje pozive funkcije SelfSubjectAccessReview kako bi tačno mapirao šta je ukradenom identitetu dozvoljeno da radi.

Konačno, vrši bruteforsiranje imena kontejnera Google Cloud Storage-a izgrađenih iz fiksno kodiranog ID-a GCP projekta (rijedak-potpisnik-437603-p9) i broj projekta, pogađanje kombinacija kao što su *-gradi, *-artefaktima, i nekoliko malazija- prefiksi (rezultati-malizacije, paketi-malysis, malysis-skeniranjeSvaki kod i tijelo odgovora se zapisuju i šalju nazad na isti jules-collect krajnja tačka.

Ovo je rijedak slučaj korisnog tereta u lancu snabdijevanja izgrađenog posebno za napad na vlastitu infrastrukturu branitelja. Naslovna priča kroz cijelu kampanju - čiji se fragmenti pojavljuju unutar korisnih tereta kao komentari koji uokviruju ponašanje kao "Security Research PoC ... pisanje unakrsnog repozitorija putem preopsežnog git proxy tokena" - je isto samoopravdanje, bez obzira da li je cilj vremena izvođenja Shopify monorepozitorij ili server metapodataka analitičkog klastera.

Vremenski okvir i migracija opsega

JulesJacker nije jednokratni pad. To je održiva operacija koja je preživjela brisanje registra jednostavnom promjenom imena.

Kada događaj
Sredinom aprila 2026 Prvi paketi se pojavljuju pod originalnim opsegom izdavača: TS-utility facade, environment i git-config exfiltration.
Početkom maja 2026 Objavljeni hipervizor i varijanta za izviđanje kernela.
Sredina do kraja maja 2026. SC3 crv za pisanje unakrsnih repozitorija pojavljuje se uz korisne terete usmjerene na Shopify i google-labs-jules[bot] impersonacija. SC4 uvodi AES-šifrirane i host-gated učitavače.
Krajem maja 2026. npm uklanja originalni opseg izdavača; imena paketa se rješavaju kao prazne rezervirane prostore za sigurnost.
Ista sedmica Operator migrira na gotovo identičan sličan opseg i ponovo objavljuje crva, uključujući varijantu infrastrukture za analizu.

Migracija je dio s kojim bi se branitelji trebali složiti. Uklanjanje prvog nišana nije okončalo kampanju niti je usporilo. Operater je već postavio paralelni nišan čije se ime razlikuje od originalnog za jedan znak i nastavio je objavljivati ​​u istoj sedmici. U vrijeme pisanja ovog teksta, novi nišan... ts-form-utils (verzije od 1.0.0 do 1.1.0), njegove ts-project-lint (1.0.0 i 1.1.0), i samostalni ts-enum-helper (1.0.0) ostaju instalirati.

Indikatori kompromisa

Svi dolje navedeni indikatori su potvrđeni u odnosu na izvor paketa.

tip pokazatelj bilješke
Mreža (C2) aaronstack[.]com/jules-collect Jedna krajnja tačka kolekcije u svakoj generaciji; prima JSON telemetriju i dijelove tarballa repozitorija base64-gzip.
Mreža (SSRF proxy) http://git@192.168.0.1:8080 Prednja strana za preopsežni git proxy token koji se koristi za pristup repozitorijima ciljne organizacije.
Mreža (oblak) metadata.google.internal/computeMetadata/v1
kubernetes.default.svc
storage.googleapis.com/storage/v1/b
Koristi se samo od strane varijante analitičke infrastrukture za krađu tokena i izviđanje Kubernetes kontrolne ravni.
identitet google-labs-jules[bot]
161369871+google-labs-jules[bot]@users.noreply.github.com
krivotvoren commit Identitet autora ubačen u glavne grane žrtve.
fajl lib/.perf.dat AES-256-CBC-šifrirani blob korisnog tereta; IV pohranjen u prvih 16 bajtova, a ključ dinamički rekonstruiran u index.js.
fajl SECURITY-POC.md Ispušteno i commitvraćeno u repozitorije žrtava s porukom chore: update dependency cache.
fajl scripts/postinstall.sh Zatvoreno $MALYSIS_ANALYSIS_ID; identificira varijantu ciljanja analize infrastrukture.
Behavioral os.hostname() provjere za devbox / ubuntu-fc-uvm Kontrola okruženja sandbox i AI-agent prije dešifriranja i izvršavanja korisnog tereta.
Behavioral .jules/ i /app/.jules čitanja direktorija Eksplicitno ciljanje okruženja radnog prostora AI-agenata.
Behavioral sc1-, sc3-, sc4-, s0-vmm-recon Oznake telemetrijskih faza koje definira operater, korisne za detekciju i lov.
Cilj u oblaku rare-signer-437603-p9
malysis-* nagađanja iz kante
Fiksno kodirani identifikatori GCP projekta i obrasci nabrajanja skladišnih prostora ugrađeni u varijantu infrastrukture za analizu.
Oblik pakovanja Fasada TS-komunalnog paketa bez polja za repozitorij Dosljedan predložak kampanje: lažni paketi uslužnih programa TypeScript sa ugrađenim zlonamjernim sadržajem postinstall hooks ili dodano uz index.js.
sca-tools-software-alati-za-analizu-sastava
Prioritizirajte, sanirajte i osigurajte softverske rizike
Nabavite svoj besplatni račun.
Nije potrebna kreditna kartica.

Osigurajte svoj razvoj i isporuku softvera

sa Xygeni paketom proizvoda