JulesJacker: Cacing npm palsu nyamar dadi Jules AI

JulesJacker: Cacing npm PoC Palsu sing Nyamar dadi Agen Jules Google — lan Nguripake Sandbox sing Nganalisis

TL; DR

Operator npm tunggal ngentekake nem minggu nerbitake paket "utilitas" TypeScript palsu kayata ts-form-utils, ts-project-lint, Lan ts-enum-helper.

Nalika paket-paket kasebut mbabarake pembantu validasi cilik sing katon sah, muatan nyata dieksekusi nalika instalasi utawa dibutuhake dhisik lan nindakake sidik jari host, panemuan organisasi GitHub, kloning repositori, lan eksfiltrasi kode sumber.

Malware iki khusus ngincer organisasi GitHub sing duwe nilai dhuwur, kalebu pirang-pirang Shopify repositori, banjur ngarsip lan ngeksfiltrasi wit sumber sing bisa digayuh menyang titik pungkasan koleksi terpusat.

Minangka bagéan saka alur kerja kompromi, muatan commitfile sa bali menyang repositori korban nalika nyamar dadi identitas coding otonom Google google-labs-jules[bot].

Kita nglacak kampanye kasebut — jenenge JulesJacker — ing pirang-pirang ruang lingkup penerbit lan paling ora limang generasi muatan, kalebu varian sing dienkripsi lan sing ngerti sandbox.

Varian paling anyar iki khusus ngincer infrastruktur analisis malware: varian iki mung ngaktifake ing njero lingkungan analisis, nyolong token akun layanan metadata awan, lan nyelidiki bidang kontrol Kubernetes lan bucket panyimpenan awan.

IOC utama sing dienggo bareng ing kabeh generasi payload yaiku titik pungkasan koleksi aaronstack[.]com/jules-collect.

Keruwetan: kritis.

Serangan: Cara Kerjane

Saben paket JulesJacker ngetutake cithakan sing padha. paket.json ngiklanake helper TypeScript sing ora mbebayani nganggo lisensi MIT lan ora ana repositori sumber sing disambungake. indeks.js ngekspor sawetara fungsi nyata sing bisa digunakake — regexe email, peta enum, tabel aturan lint — supaya pangembang sing ngimpor paket kasebut bisa ndeleng prilaku sing masuk akal. Kebencian kasebut ana ing papan liya: ing sawise instalasi pancing, utawa ing blok ing sisih ngisor indeks.js sing bakal dieksekusi nalika modul dibutuhake.

Muatan wis berkembang liwat tahapan internal sing diwenehi nomer kanthi jelas (operator menehi label acara telemetri dhewe sc1-, sc3-, sc4-, lan sapanunggalane), lan nonton evolusi kasebut minangka cara paling jelas kanggo mangerteni kampanye kasebut.

 Generasi 1–2: pengintaian lan pencurian git-config

Paket-paket paling awal kuwi mung infostealer sing gampang dimangerteni. Nalika diinstal, dheweke ngumpulake variabel lingkungan, file host GitHub CLI, lan konfigurasi git global (konfigurasi git –global –daftar, git remot -v), banjur ngeposake bundel kasebut menyang titik pungkasan koleksi. Iki netepake tandha tangan operator: crita sampul "utilitas validasi formulir TypeScript", suar metu menyang domain siji, lan rasa kanggo kredensial pangembang tinimbang data konsumen.

Generasi 3: hypervisor lan probe escape kernel

Salah sawijining versi pertengahan kampanye luwih fokus ing serangan infrastruktur. Tinimbang nyolong konfigurasi, versi iki nglakokake serangan recon harness. AF_VSOCK soket, wilayah virtio MMIO, /dev/mem, lan tandha-tandha pengerasan kernel, lan malah nyoba nabrak kernel sing dipicu sysrq — prilaku sing ana gandhengane karo upaya kanggo metu saka mesin virtual utawa wadhah. Tag telemetri (s0-vmm-recon, s1-vmm-vsock-fuzz, s2-vmm-mmio, probe-kernel-s3) ndadekake maksude jelas. Varian iki kanthi gamblang ditujokake kanggo lingkungan cloud-sandbox lan serverless-runner — jinis VM sementara sing mbangun lan nguji kode sing ora dipercaya.

Generasi 3 (SC3): cacing panulisan cross-repo

Pusat gravitasi kampanye dadi maling repo sing nyebar dhewe. Nalika diinstal, payload nglakokake urutan wektu limang tahap:

  • 0 internship (~100 ms): sidik jari host — jeneng host, info panganggo, identitas git.
  • 1 internship (~3 detik): nemtokake organisasi endi sing dadi anggota korban kanthi mriksa git remot -v, banjur goleki hardcode KONFIGURASI_ORG akses tabel lan repo uji coba nganggo git ls-remote — diarahake liwat proxy SSRF sing dikontrol penyerang ing http://git@192.168.0.1:8080.
  • 2 internship (~10 detik): git clone saben repositori sing bisa dijangkau ing dhaptar target, tarball lan gzip wit kasebut, encode base64, lan exfiltrate chunk.
  • 3 internship (~45 detik): "bukti akses" — kloning repo sing bisa ditulis, selehake file sing jenenge SECURITY-POC.md, lan commit karo pangripta sing disetel menyang google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> lan pesen tugas: nganyari cache dependensi, banjur push menyang cabang utama korban.

Dhaptar target sing wis di-hardcode ora umum. Dhaptar iki ngecek luwih saka telung puluh Shopify gudang miturut jeneng — Shopify/shopify, Shopify/identitas, Shopify/tagihan, Shopify/lemari panyimpenan, Shopify/rahasia, Shopify/infrastruktur, Shopify/.github, lan liya-liyane — bebarengan karo organisasi uji coba, AaronStackBarnes, sing katon dikontrol lan digunakake operator minangka target tulis.

Generasi 4 (SC4): dienkripsi lan dikurung

Varian paling anyar sing diadhepi pangembang nambahake rong lapisan penghindaran ing ndhuwur cacing SC3.

Kapisan, muatan ora dikirim maneh minangka plaintext. Logika sing sejatine ana ing blob sing dienkripsi AES-256-CBC, lib/.perf.dat, karo IV ing nembelas byte pisanane. Loader ing indeks.js mbangun maneh kunci dekripsi saka fragmen string sing digabung, dekripsi blob kasebut, lan mbukak nganggo Fungsi anyar()Malah jeneng modul uga dipisahake kanggo ngindhari pemindai statis — mbutuhake('crypt' + 'o'), mbutuhake('f' + 's').

Kapindho, iki di-host-gated. Siji varian mung dekripsi lan mlaku nalika jeneng host os.() padha karo kothak pangembangan or ubuntu-fc-uvm (standar microVM Firecracker) utawa ngemot substring kothak pangembanganGerbang liyané ana ing ngarsane .jules/ direktori kerja:

Kanthi tembung liya, muatan SC4 dirancang supaya tetep ora aktif ing laptop pangembang biasa lan mung tangi ing njero agen AI otomatis lan lingkungan kothak wedhi operator kasebut sejatine pengin kompromi.

Nguripake Lab: Varian Analisis-Infrastruktur

Paket paling anyar ing kampanye iki, ts-enum-helper, ora nyerang para pangembang utawa Shopify babar pisan. Iku postinstall.sh dibukak nganggo gapura sing menehi game kasebut:

Skrip iki ora nindakake apa-apa kajaba variabel lingkungan khusus kanggo platform analisis malware disetel. Nalika wis disetel, payload ngerti yen lagi mlaku ing njero sandbox sing ana kanggo njeblug lan nyinaoni paket persis kaya iki — lan banjur nyerang balik.

Pisanan, iki narik token OAuth akun layanan GCP saka server metadata instansi lan ngekstrak token kasebut. Banjur, nggunakake token kasebut, iki nyapu Bidang kontrol Kubernetes tekan ing kubernetes.default.svc:

  • ndhaptar ClusterRoleBindings, ClusterRoles, lan Nodes;
  • nyelidiki pod, rahasia, lan peta konfigurasi ing sakubenge sistem kube, standar, kube-publik, kube-node-lease, lan ruang jeneng analisis;
  • ngetokake panggilan SelfSubjectAccessReview kanggo memetakan persis apa sing diidini ditindakake identitas sing dicolong.

Pungkasane, iki nggunakake jeneng ember Google Cloud Storage kanthi kasar sing digawe saka ID proyek GCP sing wis di-hardcode (penandatangan-langka-437603-p9) lan nomer proyek, ngira-ngira kombinasi kayata *-mbangun, *-artefak, lan sawetara malisis- awalan (asil-malisis, paket-malisis, malysis-scanSaben kode lan awak respon dicathet lan dikirim bali menyang sing padha. jules-collect titik pungkasan.

Iki minangka kasus langka saka muatan rantai pasokan sing dibangun khusus kanggo nyerang infrastruktur para pembela dhewe. Crita sampul ing kabeh kampanye — fragmen sing katon ing njero muatan minangka komentar sing mbentuk prilaku kasebut minangka "PoC Riset Keamanan ... nulis cross-repo liwat token proxy git sing overscoped" — minangka justifikasi dhewe sing padha, apa target runtime kasebut minangka monorepo Shopify utawa server metadata kluster analisis.

Garis Waktu & Migrasi Cakupan

JulesJacker dudu operasi sing mung kedadeyan saknalika. Iki minangka operasi sing terus-terusan sing slamet saka penghapusan registri mung kanthi ngganti jenenge.

Kapan Event
Pertengahan April 2026 Paket-paket pisanan katon ing sangisore ruang lingkup penerbit asli: TS-utility façade, lingkungan lan git-config exfiltration.
Awal Mei 2026 Varian hypervisor lan kernel-escape reconnaissance wis diterbitake.
Pertengahan nganti pungkasan Mei 2026 Cacing nulis repo silang SC3 katon bebarengan karo muatan sing ditargetake Shopify lan google-labs-jules[bot] peniruan identitas. SC4 ngenalake loader sing dienkripsi AES lan host-gated.
Pungkasan Mei 2026 npm mbusak ruang lingkup penerbit asli; jeneng paket mutusake kanggo ngosongake placeholder sing nyimpen keamanan.
Minggu sing padha Operator kasebut pindhah menyang ruang lingkup sing meh padha lan nerbitake maneh worm kasebut, kalebu varian infrastruktur analisis.

Migrasi iku bagean sing kudu diurus dening para pembela. Penghapusan scope pertama ora mungkasi kampanye utawa malah ngendhegake. Operator wis nggawe scope paralel sing jenenge beda karo asline mung nganggo siji karakter, lan terus nerbitake ing minggu sing padha. Nalika iki ditulis, scope anyar ts-form-utils (versi 1.0.0 nganti 1.1.0), iku ts-project-lint (1.0.0 lan 1.1.0), lan sing mandiri ts-enum-helper (1.0.0) tetep bisa diinstal.

Indikator Kompromi

Kabeh indikator ing ngisor iki dikonfirmasi marang sumber paket.

Koleksi indikator Cathetan
Jaringan (C2) aaronstack[.]com/jules-collect Titik pungkasan koleksi tunggal ing saben generasi; nampa telemetri JSON lan potongan tarball repositori base64-gzip.
Jaringan (proksi SSRF) http://git@192.168.0.1:8080 Ngarep kanggo token proxy git sing di-overscope sing digunakake kanggo nggayuh repositori organisasi target.
Jaringan (awan) metadata.google.internal/computeMetadata/v1
kubernetes.default.svc
storage.googleapis.com/storage/v1/b
Mung digunakake dening varian infrastruktur analisis kanggo nyolong token lan pengintaian bidang kontrol Kubernetes.
Identity google-labs-jules[bot]
161369871+google-labs-jules[bot]@users.noreply.github.com
Palsu commit identitas panganggit didorong menyang cabang-cabang arus utama korban.
file lib/.perf.dat Gumpalan payload sing dienkripsi AES-256-CBC; IV disimpen ing 16 byte pisanan lan kunci direkonstruksi kanthi dinamis ing index.js.
file SECURITY-POC.md Mudhun lan commitdikirim maneh menyang gudang korban nganggo pesen kasebut chore: update dependency cache.
file scripts/postinstall.sh Dipager ing $MALYSIS_ANALYSIS_ID; ngidentifikasi varian analisis-infrastruktur-penargetan.
Prilaku os.hostname() pamriksan kanggo devbox / ubuntu-fc-uvm Gerbang lingkungan sandbox lan agen AI sadurunge dekripsi lan eksekusi payload.
Prilaku .jules/ lan /app/.jules maca direktori Penargetan eksplisit saka lingkungan ruang kerja agen AI.
Prilaku sc1-, sc3-, sc4-, s0-vmm-recon Label tahapan telemetri sing ditetepake operator migunani kanggo deteksi lan mburu.
Target méga rare-signer-437603-p9
malysis-* tebakan ember
Identifikasi proyek GCP sing wis di-hardcode lan pola enumerasi storage-bucket sing wis disematkan ing varian infrastruktur analisis.
Wangun kemasan Fasad paket utilitas TS tanpa kolom repositori Cithakan kampanye sing konsisten: paket utilitas TypeScript palsu kanthi muatan jahat sing dipasang ing postinstall hooks utawa ditambahake menyang index.js.
piranti lunak-piranti-sca-piranti-analisis-komposisi
Prioritasake, ndandani, lan amanake risiko piranti lunak sampeyan
Entuk Akun Gratismu.
Ora ana kertu kredit.

Amanake Pangembangan lan Pangiriman Piranti Lunak Sampeyan

karo Suite Produk Xygeni