JulesJacker: Dudu npm falz jimpersonifika lil Jules AI

JulesJacker: Worm npm ta' PoC Falz li Jimpersonifika l-Aġent Jules ta' Google — u Jattiva s-Sandbox Waqt li Jianalizzah

TL; DR

Operatur wieħed tal-npm qatta’ sitt ġimgħat jippubblika pakketti foloz ta’ “utilità” tat-TypeScript bħal ts-form-utils, ts-project-lint, u ts-enum-helper.

Filwaqt li l-pakketti jesponu helpers żgħar ta' validazzjoni li jidhru leġittimi, il-payload reali jiġi esegwit mal-installazzjoni jew l-ewwel ħtieġa u jwettaq fingerprinting tal-host, skoperta ta' organizzazzjoni GitHub, ikklonazzjoni ta' repożitorju, u esfiltrazzjoni tal-kodiċi tas-sors.

Il-malware jimmira speċifikament lejn organizzazzjonijiet GitHub ta’ valur għoli, inklużi diversi Shopify repożitorji, imbagħad jarkivja u jesfiltra s-siġar tas-sors li jistgħu jintlaħqu għal endpoint ċentralizzat tal-ġbir.

Bħala parti mill-fluss tax-xogħol ta' kompromess, il-payload commitil-fajl sa lura fir-repożitorji tal-vittmi waqt li jimpersonifika l-identità tal-kodifikazzjoni awtonoma ta' Google google-labs-jules[bot].

Segwejna l-kampanja — bl-isem JulesJacker — f'diversi ambiti ta' pubblikaturi u mill-inqas ħames ġenerazzjonijiet ta' payload, inklużi varjanti kriptati u sandbox-aware.

L-aktar varjant ġdid jimmira speċifikament lejn l-infrastruttura tal-analiżi tal-malware: jattiva biss ġewwa ambjenti ta' analiżi, jisraq tokens tal-kont tas-servizz tal-metadata tal-cloud, u jinvestiga l-pjani ta' kontroll ta' Kubernetes u l-buckets tal-ħażna tal-cloud.

L-IOC primarju kondiviż bejn il-ġenerazzjonijiet kollha tat-tagħbija utli huwa l-endpoint tal-ġbir aaronstack[.]com/jules-collect.

Severità: kritika.

L-Attakk: Kif Jaħdem

Kull pakkett ta' JulesJacker isegwi l-istess mudell. Il- package.json jirreklama helper TypeScript beninni b'liċenzja MIT u mingħajr repożitorju tas-sors marbut. Il- index.js jesporta numru żgħir ta' funzjonijiet reali u li jaħdmu — regex tal-email, mapep tal-enum, tabelli tar-regoli tal-lint — sabiex żviluppatur li fil-fatt jimporta l-pakkett jara mġiba plawżibbli. Il-malizzja tgħix xi mkien ieħor: f' wara l-installazzjoni ganċ, jew f'blokka fil-qiegħ ta' index.js li jesegwixxi fil-mument li l-modulu jkun meħtieġ.

Il-payloads evolvew permezz ta' stadji interni nnumerati b'mod ċar (l-operatur jittikketta l-avvenimenti tat-telemetrija tiegħu stess sc1-, sc3-, sc4-, eċċ.), u l-osservazzjoni ta’ dik l-evoluzzjoni hija l-aktar mod ċar biex tifhem il-kampanja.

 Ġenerazzjoni 1–2: rikonoxximent u serq ta' git-config

L-ewwel pakketti kienu infostealers sempliċi. Mal-installazzjoni ġabru varjabbli tal-ambjent, il-fajl tal-hosts tas-CLI ta' GitHub, u l-konfigurazzjoni globali ta' git (konfigurazzjoni tal-git –lista globali, git remot -v), imbagħad bagħat il-pakkett lill-endpoint tal-kollezzjoni. Dan stabbilixxa l-firma tal-operatur: storja ta' kopertura ta' "utilitajiet ta' validazzjoni tal-formola TypeScript", beacon 'il barra għal dominju wieħed, u preferenza għall-kredenzjali tal-iżviluppatur aktar milli għad-dejta tal-konsumatur.

Ġenerazzjoni 3: sondi tal-ħruġ tal-iperviżur u tal-kernel

Verżjoni waħda f'nofs kampanja daret sew f'attakki fuq l-infrastruttura. Minflok ma serqet il-konfigurazzjoni, wettqet riċerka dwar is-sistema ta' rikonoxximent. AF_VSOCK sokits, reġjuni virtio MMIO, / dev / mem, u bnadar tat-tisħiħ tal-kernel, u anke tentattivi ta' ħabtiet tal-kernel attivati ​​minn sysrq — imġieba assoċjata ma' tentattivi ta' ħruġ minn magna virtwali jew kontenitur. It-tikketti tat-telemetrija (s0-vmm-recon, s1-vmm-vsock-fuzz, s2-vmm-mmio, sonda tal-kernel s3) għamlet l-intenzjoni espliċita. Din il-varjant kienet immirata b'mod ċar lejn ambjenti cloud-sandbox u serverless-runner — it-tip ta' VM effimera li tibni u tittestja kodiċi mhux fdat.

Ġenerazzjoni 3 (SC3): id-dudu tal-kitba bejn ir-repożitorji

Iċ-ċentru tal-gravità tal-kampanja sar ħalliel ta' repo li jippropaga lilu nnifsu. Mal-installazzjoni, il-payload imexxi sekwenza skedata ta' ħames stadji:

  • 0 Internship (~100 ms): ħu l-marka tas-swaba' tal-host — isem tal-host, informazzjoni tal-utent, identità tal-git.
  • 1 Internship (~3 s): iddetermina għal liema organizzazzjoni tappartjeni l-vittma billi tispezzjona git remot -v, imbagħad fittex hardcoded ORG_CONFIG aċċess għat-tabella u r-repo tat-test bi git ls-remote — imdaħħla permezz ta' proxy SSRF ikkontrollat ​​minn attakkant f' http://git@192.168.0.1:8080.
  • 2 Internship (~10 sekondi): git klonu kull repożitorju li jista' jintlaħaq fil-lista fil-mira, ikkompila t-tarball u agħmel gzip tas-siġra, ikkodifikaha bil-base64, u neħħiha b'chunk-exfiltrazzjoni.
  • 3 Internship (~45 s): il-“prova tal-aċċess” — ikklona repo li jista' jinkiteb fih, neħħi fajl bl-isem SECURITY-POC.md, u commit bl-awtur issettjat għal google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> u l-kompitu tal-messaġġ: aġġorna l-cache tad-dipendenza, imbagħad imbotta lejn il-fergħa prinċipali tal-vittma.

Il-lista ta' miri hardcoded mhijiex ġenerika. Din telenka aktar minn tletin Shopify repożitorji skont l-isem — Shopify/shopify, Shopify/identità, Shopify/kontijiet, Shopify/kaxxaforti, Shopify/sigrieti, Shopify/infrastruttura, Shopify/.github, u ħafna aktar — flimkien ma' organizzazzjoni tat-test, AaronStackBarnes, li l-operatur jidher li jikkontrolla u juża bħala l-mira tal-kitba.

Ġenerazzjoni 4 (SC4): kriptata u protetta

L-aktar varjant ġdid li jiffaċċja l-iżviluppaturi jżid żewġ saffi ta' evażjoni fuq il-worm SC3.

L-ewwel, il-payload m'għadux jintbagħat bħala plaintext. Il-loġika vera tinsab f'blob kriptat bl-AES-256-CBC, lib/.perf.dat, bl-IV fl-ewwel sittax-il byte tiegħu. Il-loader fi index.js jirrikonstrwixxi ċ-ċavetta tad-deċifrar minn frammenti ta' strings ikkonkatenati, jiddeċifra l-blob, u jħaddimha b' Funzjoni ġdida()Anke l-ismijiet tal-moduli huma maqsuma biex jiġu evitati skanners statiċi — teħtieġ('kripta' + 'o'), teħtieġ('f' + 's').

It-tieni, huwa ospitanti-gated. Varjant wieħed biss jiddekripta u jaħdem meta os.isem tal-host() ugwali devbox or ubuntu-fc-uvm (default ta' Firecracker microVM) jew fih is-substring devboxBieb ieħor fuq il-preżenza ta' .jules/ direttorju tax-xogħol:

Fi kliem ieħor, il-payload SC4 huwa ddisinjat biex jibqa' inattiv fuq il-laptop ta' żviluppatur ordinarju u jqum biss ġewwa l-aġent tal-AI awtomatizzat u ambjenti sandbox l-operatur fil-fatt irid jagħmel kompromess.

Ixgħel il-Laboratorju: il-Varjant tal-Analiżi-Infrastruttura

L-aktar pakkett ġdid fil-kampanja, ts-enum-helper, ma jattakkax lill-iżviluppaturi jew lil Shopify xejn. Tagħha postinstall.sh jiftaħ b'bieb li jikxef il-logħba:

L-iskrittura ma tagħmel xejn sakemm ma tkunx issettjata varjabbli tal-ambjent speċifika għal pjattaforma tal-analiżi tal-malware. Meta tkun issettjata, il-payload tkun taf li qed taħdem ġewwa s-sandbox li teżisti biex tisplodi u tistudja pakketti eżattament bħal dan — u tagħmel kontro-attakk.

L-ewwel jiġbed it-token OAuth tal-kont tas-servizz tal-GCP mis-server tal-metadata tal-istanza u jesfiltrah. Imbagħad, bl-użu ta' dak it-token, jiknes il- Ajru tal-kontroll Kubernetes jintlaħaq fi kubernetes.default.svc:

  • jelenka ClusterRoleBindings, ClusterRoles, u Nodes;
  • sondi pods, sigrieti, u configmaps madwar sistema kube, inadempjenza, kube-pubbliku, kiri tan-nodu kube, u l-ispazju tal-ismijiet tal-analiżi;
  • joħroġ sejħiet lil SelfSubjectAccessReview biex jimmappa eżattament x'hija permessa tagħmel l-identità misruqa.

Fl-aħħarnett, jagħmel forza bruta fuq l-ismijiet tal-buckets ta' Google Cloud Storage mibnija minn ID ta' proġett GCP hardcoded (firmatarju rari-437603-p9) u n-numru tal-proġett, billi wieħed jaqta' kombinazzjonijiet bħal *-bini, *-artefatti, u diversi maliżija- prefissi (riżultati tal-maliżija, pakketti tal-malysis, skens tal-maliżija). Kull kodiċi u korp tar-rispons jiġi rreġistrat u mibgħut lura lill-istess jules-collect punt tat-tmiem.

Dan huwa l-każ rari ta' payload tal-katina tal-provvista mibni speċifikament biex jattakka l-infrastruttura tad-difensuri stess. L-istorja tal-qoxra fil-kampanja kollha — frammenti minnha jidhru ġewwa l-payloads bħala kummenti li jiffrawjaw l-imġieba bħala "Security Research PoC ... cross-repo write via overscoped git proxy token" — hija l-istess awtoġustifikazzjoni, kemm jekk il-mira tar-runtime hija Shopify monorepo jew is-server tal-metadata tal-cluster tal-analiżi.

Kronoloġija u l-Migrazzjoni tal-Ambitu

JulesJacker mhuwiex xi ħaġa li nħarġet darba biss. Hija operazzjoni sostnuta li baqgħet ħajja wara t-tneħħija tar-reġistru billi sempliċement biddlet isimha.

Meta avveniment
Nofs April 2026 L-ewwel pakketti jidhru taħt l-ambitu oriġinali tal-pubblikatur: TS-utility facade, environment u git-config exfiltration.
Kmieni ta' Mejju 2026 Ippubblikat il-varjant ta' rikonoxximent tal-iperviżur u tal-kernel-escape.
Minn nofs sa tmiem Mejju 2026 Id-dudu tal-kitba cross-repo tal-SC3 jidher flimkien ma' payloads immirati lejn Shopify u google-labs-jules[bot] impersonazzjoni. L-SC4 jintroduċi loaders kriptati bl-AES u b'gating tal-host.
Lejn l-aħħar ta' Mejju 2026 npm ineħħi l-ambitu oriġinali tal-pubblikatur; l-ismijiet tal-pakketti jirriżolvu għal placeholders vojta li jżommu s-sigurtà.
L-istess ġimgħa L-operatur jemigra għal ambitu kważi identiku u jerġa' jippubblika d-dudu, inkluż il-varjant tal-infrastruttura tal-analiżi.

Il-migrazzjoni hija l-parti li d-difensuri għandhom joqogħdu magħha. It-tneħħija tal-ewwel skop ma temmitx il-kampanja u lanqas ma rattifhiex. L-operatur kien diġà waqqaf skop parallel li ismu huwa differenti mill-oriġinali b'karattru wieħed, u kompla jippubblika fl-istess ġimgħa. Sa meta nkiteb dan, l-iskop il-ġdid... ts-form-utils (verżjonijiet 1.0.0 sa 1.1.0), tiegħu ts-proġett-lint (1.0.0 u 1.1.0), u l-verżjoni waħedha ts-enum-helper (1.0.0) jibqgħu installabbli.

Indikaturi ta' Kompromess

L-indikaturi kollha hawn taħt ġew ikkonfermati kontra s-sors tal-pakkett.

tip Indikatur Noti
Netwerk (C2) aaronstack[.]com/jules-collect Endpoint wieħed tal-ġbir f'kull ġenerazzjoni; jirċievi t-telemetrija JSON u l-biċċiet tarball tar tar tar tar tar tar tar tar tar tar repository base64-gzip.
Netwerk (prokura SSRF) http://git@192.168.0.1:8080 Faċċata għal token ta' proxy git b'ambitu żejjed użat biex jilħaq ir-repożitorji tal-organizzazzjoni fil-mira.
Netwerk (sħaba) metadata.google.internal/computeMetadata/v1
kubernetes.default.svc
storage.googleapis.com/storage/v1/b
Użat biss mill-varjant tal-infrastruttura tal-analiżi għas-serq tat-tokens u r-rikonoxximent tal-pjan ta' kontroll ta' Kubernetes.
Identità google-labs-jules[bot]
161369871+google-labs-jules[bot]@users.noreply.github.com
Falsifikati commit L-identità tal-awtur imbuttata fil-fergħat ewlenin tal-vittmi.
File lib/.perf.dat Blob tal-payload kriptat bl-AES-256-CBC; IV maħżun fl-ewwel 16-il byte u ċavetta rikostruwita b'mod dinamiku fi index.js.
File SECURITY-POC.md Niżel u commitlura fir-repożitorji tal-vittmi bil-messaġġ chore: update dependency cache.
File scripts/postinstall.sh Imdaħħal fuq $MALYSIS_ANALYSIS_ID; jidentifika l-varjant tal-analiżi-infrastruttura-immirar.
Komportamentali os.hostname() kontrolli għal devbox / ubuntu-fc-uvm Gateing tal-ambjent sandbox u AI-agent qabel id-deċifrar u l-eżekuzzjoni tal-payload.
Komportamentali .jules/ u, /app/.jules qari tad-direttorju Immirar espliċitu ta' ambjenti ta' xogħol tal-aġent tal-AI.
Komportamentali sc1-, sc3-, sc4-, s0-vmm-recon Tikketti tal-istadju tat-telemetrija definiti mill-operatur utli għad-detezzjoni u l-kaċċa.
Mira tas-sħab rare-signer-437603-p9
malysis-* suppożizzjonijiet tal-barmil
Identifikaturi tal-proġett GCP hardcoded u mudelli ta' enumerazzjoni tal-bucket tal-ħażna inkorporati fil-varjant tal-infrastruttura tal-analiżi.
Forma tal-pakkett Faċċata tal-pakkett TS-utility mingħajr qasam ta' repożitorju Mudell ta' kampanja konsistenti: pakketti ta' utilità TypeScript foloz b'payloads malizzjużi inkorporati fihom postinstall hooks jew miżjud ma' index.js.
sca-tools-software-composition-analysis-tools
Prijoritizza, irranġa, u assigura r-riskji tas-softwer tiegħek
Ikseb il-Kont B'Xejn tiegħek.
Mhix meħtieġa karta ta 'kreditu.

Assigura l-Iżvilupp u l-Kunsinna tas-Softwer tiegħek

bis-Suite tal-Prodotti Xygeni