JulesJacker: Àìríran npm èké ń ṣe àfarawé Jules AI

JulesJacker: Kòkòrò irọ́-PoC npm kan tó ń ṣe àfarawé aṣojú Jules ti Google — ó sì ń tan Sandbox tó ń ṣàyẹ̀wò rẹ̀

TL; DR

Oníṣẹ́ npm kan lo ọ̀sẹ̀ mẹ́fà láti tẹ àwọn àpò “ìlò” TypeScript èké jáde bíi ts-form-utils, ts-project-lint, Ati ts-enum-helper.

Bó tilẹ̀ jẹ́ pé àwọn ìdìpọ̀ náà ń fi àwọn olùrànlọ́wọ́ ìfọwọ́sowọ́pọ̀ kékeré tí ó jọ ti òfin hàn, ẹrù gidi náà ń ṣiṣẹ́ nígbà tí a bá fi sori ẹrọ tàbí nígbà àkọ́kọ́, ó sì ń ṣe ìtẹ̀wé ìkànnì, ìwádìí ilé-iṣẹ́ GitHub, ìṣẹ̀dá ìpamọ́, àti ìyọkúrò koodu orísun.

Malware naa fojusi awọn ajọ GitHub ti o ni iye giga, pẹlu ọpọlọpọ Shopify àwọn ibi ìkópamọ́, lẹ́yìn náà kó àwọn igi orísun tí a lè dé sí ibi ìkójọpọ̀ tí ó wà ní àárín gbùngbùn.

Gẹ́gẹ́ bí ara iṣẹ́ ìbáṣepọ̀, ẹrù iṣẹ́ náà, commitpada si ibi ipamọ awọn olufaragba lakoko ti o n ṣe apẹẹrẹ idanimọ koodu ti ara ẹni ti Google google-labs-jules[bot].

A tọpa ipolongo naa — ti a daruko JulesJacker — kọja ọpọlọpọ awọn aaye olutẹjade ati o kere ju iran marun ti o ni ẹru, pẹlu awọn iyatọ ti a fi pamọ ati ti o mọ apoti sandbox.

Irú tuntun yìí ṣe pàtàkì sí àwọn ètò ìwádìí-àgbékalẹ̀ malware: ó ń ṣiṣẹ́ nínú àwọn àyíká ìwádìí nìkan, ó ń jí àwọn àmì ìwádìí-àkọọ́lẹ̀ ìṣiṣẹ́-ìròyìn ...

IOC akọkọ ti a pin kaakiri gbogbo iran awọn ẹru isanwo ni opin gbigba naa aaronstack[.]com/jules-collect.

Líle: pàtàkì.

Ikọlu naa: Bawo ni O Ṣe Nṣiṣẹ

Gbogbo àpò JulesJacker ló tẹ̀lé àwòṣe kan náà. package.json ń polówó olùrànlọ́wọ́ TypeScript tí kò ní ìṣòro pẹ̀lú ìwé àṣẹ MIT àti pé kò sí ibi ìpamọ́ orísun tí a so pọ̀ mọ́. atọka.js Àwọn iṣẹ́ gidi díẹ̀ ló ń kó jáde — àwọn ìlànà ìmeeli, àwọn máàpù enum, àwọn tábìlì òfin lint — kí olùgbékalẹ̀ tó bá kó àpò náà wọlé lè rí ìwà tó ṣeé gbà. Ìwà burúkú náà ń gbé níbòmíràn: nínú fifi sori ẹrọ lẹhin ìkọ́, tàbí nínú bulọ́ọ̀kì kan ní ìsàlẹ̀ atọka.js tí ó ń ṣiṣẹ́ ní àkókò tí a nílò module náà.

Àwọn ẹrù iṣẹ́ náà ti yípadà nípasẹ̀ àwọn ìpele inú tí ó ṣe kedere tí a ti fi nọ́mbà sí (olùṣiṣẹ́ náà ń pe àwọn ìṣẹ̀lẹ̀ telemetry tirẹ̀ ní àmì sc1-, sc3-, sc4-, àti bẹ́ẹ̀ bẹ́ẹ̀ lọ), àti wíwo ìdàgbàsókè yẹn ni ọ̀nà tó ṣe kedere jùlọ láti lóye ìpolongo náà.

 Ìran 1–2: ìwádìí àti ìjíjà git-config

Àwọn ìdìpọ̀ àkọ́kọ́ jẹ́ àwọn infostealers tí ó rọrùn. Nígbà tí wọ́n bá fi sori ẹrọ, wọ́n máa ń kó àwọn ayípadà àyíká jọ, fáìlì GitHub CLI yóò gbàlejò, àti ìṣètò git gbogbogbòò (git config –global –list, git remote -v), lẹ́yìn náà ó fi àkójọ náà sí ìparí àkójọ náà. Èyí fi ìfọwọ́sowọ́pọ̀ olùṣiṣẹ́ náà múlẹ̀: ìtàn àkọ́lé “Àwọn ohun èlò ìfọwọ́sowọ́pọ̀ fọ́ọ̀mù TypeScript”, àmì ìjáde sí agbègbè kan ṣoṣo, àti ìfẹ́ fún àwọn ìwé ẹ̀rí olùgbékalẹ̀ dípò ìwífún oníbàárà.

Ìran 3: àwọn ìwádìí ìsálà hypervisor àti kernel

Ẹ̀yà kan tí ó wà láàárín ìpolongo yí padà sí àwọn ìkọlù ètò ìṣiṣẹ́. Dípò jíjí ìṣètò, ó lo ìwádìí àtúnṣe. AF_VSOCK awọn sockets, awọn agbegbe MMIO virtio, / dev / mem, àti àwọn àsíá líle koko, àti ìgbìyànjú láti rún kernel tí sysrq-triggered — ìwà tí ó níí ṣe pẹ̀lú ìgbìyànjú láti já kúrò nínú ẹ̀rọ tàbí àpótí ìfojúsùn. Àwọn àmì tẹlimétàrì (s0-vmm-recon, s1-vmm-vsock-fuzz, s2-vmm-mmio, s3-kernel-probe) sọ èrò náà kedere. Èyí tí a ṣe kedere sí àwọsánmọ̀-sandbox àti àwọn àyíká olùsáré tí kò ní server — irú VM ìgbà díẹ̀ tí ó ń kọ́ àti dán àwọn kódù tí a kò gbẹ́kẹ̀lé wò.

Ìran 3 (SC3): kòkòrò ìkọ̀wé àgbélébùú

Aarin agbara ti ipolongo naa di olè repo ti o n tan kaakiri ara rẹ. Nigbati o ba fi sori ẹrọ, ẹrù naa n ṣiṣẹ ni ipele marun-un ti a ṣeto ni akoko:

  • Ipele 0 (~100 ms): ìtẹ̀wé olùgbàlejò — orúkọ olùgbàlejò, ìwífún olùlò, ìdámọ̀ git.
  • Ipele 1 (~3 s): pinnu ẹgbẹ́ tí ẹni tí wọ́n lù ní ìpalára jẹ́ nípa ṣíṣe àyẹ̀wò git remote -v, lẹ́yìn náà wá àwòrán tó ní àkójọpọ̀ ORG_CONFIG wiwọle si tabili ati ibi ipamọ idanwo pẹlu git ls-latọna jijin — a ti darí rẹ̀ nípasẹ̀ aṣojú SSRF tí olùkọlù ń ṣàkóso ní http://git@192.168.0.1:8080.
  • Ipele 2 (~10 s): gn clone gbogbo ibi ìpamọ́ tí a lè dé nínú àkójọ àwọn ohun tí a fẹ́ dé, tarball àti gzip igi náà, base64-encode rẹ̀, kí o sì yọ ọ́ kúrò.
  • Ipele 3 (~45 s): “ẹ̀rí wíwọlé” — ṣe àgbékalẹ̀ ibi ìpamọ́ tí a lè kọ nǹkan sí, fi fáìlì kan tí a ń pè ní SECURITY-POC.md sílẹ̀, àti commit pẹ̀lú ìkọ̀wé náà tí a ti ṣètò sí google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> àti iṣẹ́ ìránṣẹ́ náà: ṣe àtúnṣe ìpamọ́ ìgbẹ́kẹ̀lé, lẹ́yìn náà tẹ̀síwájú sí ẹ̀ka àkọ́kọ́ ti ẹni tí ó farapa.

Àkójọ àwọn ibi tí a fẹ́ kó àwọn nǹkan sí kì í ṣe gbogbogbò. Ó ju ọgbọ̀n lọ. Shopify àwọn ibi ìpamọ́ nípasẹ̀ orúkọ — Ṣọ́ọ̀bù/Ṣọ́jà, Shopify/idamọ, Ṣọ́ọ̀bù/ìsanwó, Ṣọ́ọ̀bù/ilé ìpamọ́, Shopify/àṣírí, Shopify/ẹ̀rọ amúlétutù, Shopify/.github, àti ọ̀pọ̀lọpọ̀ míràn — pẹ̀lú àjọ ìdánwò kan, AaronStackBarnes, pé ó dàbí ẹni pé olùṣiṣẹ́ náà ń ṣàkóso àti pé ó ń lò ó gẹ́gẹ́ bí àfojúsùn ìkọ̀wé.

Ìran 4 (SC4): ìkọ̀kọ̀ àti ẹnu ọ̀nà

Ẹ̀yà tuntun tó ń dojú kọ olùgbékalẹ̀ tuntun yìí fi àwọn ìpele méjì ti ìsáré sí orí kòkòrò SC3 kún un.

Àkọ́kọ́, ẹrù iṣẹ́ náà kò tún hàn gẹ́gẹ́ bí ọ̀rọ̀ lásán mọ́. Ìlànà gidi náà wà nínú àpò ìkọ̀kọ̀ AES-256-CBC, lib/.perf.dat, pẹ̀lú IV nínú àwọn baiti mẹ́rìndínlógún àkọ́kọ́ rẹ̀. atọka.js ó tún kọkọ́rọ́ ìyípadà láti inú àwọn ègé okùn tí a sopọ̀ mọ́ra, ó ń yí ìró náà padà, ó sì ń ṣiṣẹ́ pẹ̀lú Iṣẹ́ tuntun()Àní àwọn orúkọ module náà ni a pín sí méjì láti yẹra fún àwọn scanners tí kò dúró — nilo('crypt' + 'o'), nílò('f' + 's').

Èkejì, ó jẹ́ ẹnu-ọ̀nà tí a gbà. Ìyàtọ̀ kan nìkan ló máa ń yí i padà tí ó sì máa ń ṣiṣẹ́ nígbà tí ó bá dé. os.hostname() dogba àpótí devbox or ubuntu-fc-uvm (àìyípadà Firecracker microVM kan) tàbí ó ní àwọn substring nínú àpótí devboxÀwọn ẹnu ọ̀nà mìíràn wà ní iwájú .jules/ àkójọ iṣẹ́:

Ni awọn ọrọ miiran, a ṣe apẹrẹ fifuye SC4 lati duro ni oorun lori kọǹpútà alágbèéká ti olùgbékalẹ̀ lasan ati lati ji nikan ninu aṣoju AI adaṣe ati awọn agbegbe iyanrin oniṣẹ naa fẹ lati ṣe adehun.

Títúnṣe sí Lab: Ìyàtọ̀ Onínúúrò-Agbára Ìṣẹ̀dá

Àpò tuntun jùlọ nínú ìpolongo náà, olùrànlọ́wọ́ ts-enum, kò kọjú ìjà sí àwọn olùgbékalẹ̀ tàbí Shopify rárá. postinstall.sh ṣí pẹ̀lú ẹnu-ọ̀nà kan tí ó fún eré náà ní àǹfààní:

Àkọsílẹ̀ náà kò ṣe ohunkóhun àyàfi tí a bá ṣètò ohun tó yàtọ̀ sí àyíká kan pàtó fún ìwádìí malware. Nígbà tí ó bá rí bẹ́ẹ̀, ẹrù iṣẹ́ náà mọ̀ pé ó ń ṣiṣẹ́ nínú àpótí ìyanrìn tí ó wà láti bú gbàù àti láti kẹ́kọ̀ọ́ àwọn ìdìpọ̀ bí èyí — ó sì ń tàpá sí ìkọlù.

Ó kọ́kọ́ fa àkọọ́lẹ̀ iṣẹ́ GCP OAuth token kúrò nínú ẹ̀rọ data instance server, ó sì yọ ọ́ kúrò. Lẹ́yìn náà, nípa lílo àmì yẹn, ó gbá a mọ́lẹ̀. Kubernetes Iṣakoso ofurufu arọwọto ni kubernetes.default.svc:

  • ṣe àkójọ Àwọn Ìgbékalẹ̀ Ìgbékalẹ̀, Àwọn Ìgbékalẹ̀ Ìgbékalẹ̀, àti Àwọn Nódì;
  • n ṣe àwárí àwọn ìkọ̀kọ̀, àṣírí, àti àwọn àkójọpọ̀ káàkiri ètò-kube, aiyipada, kube-gbangba, iyalo-kube-node, àti orúkọ ààyè ìṣàyẹ̀wò;
  • Àwọn ìpè SelfSubjectAccessReview láti ṣe àfihàn ohun tí a gbà láyè láti ṣe.

Níkẹyìn, ó fi agbára mú kí àwọn orúkọ ibi ìkópamọ́ Google Cloud Storage tí a kọ́ láti inú ID iṣẹ́ GCP tí a fi àmì ìdámọ̀ ṣe (oníṣòwò-ṣọ̀wọ́n-437603-p9) àti nọ́mbà iṣẹ́ akanṣe, ṣíṣe àkíyèsí àwọn àpapọ̀ bíi *-kọ́lé, *-àwọn ohun ìṣẹ̀dá, ati pupọ àrùn jẹjẹrẹ- àwọn ìṣáájú (àwọn àbájáde àrùn malysitis, àwọn àpò àrùn, àwọn ìwòsàn àrùn jẹjẹrẹ) Gbogbo koodu idahun ati ara ni a gba wọle ati firanṣẹ pada si kanna Jules-collect ipari ipari.

Èyí ni ọ̀ràn tó ṣọ̀wọ́n ti ẹrù ìpèsè tí a kọ́ ní pàtó láti kọlu àwọn ẹ̀rọ ìdàgbàsókè àwọn olùgbèjà náà. Ìtàn ìkọ̀kọ̀ jálẹ̀ gbogbo ìpolongo náà — àwọn ègé nínú rẹ̀ tí ó farahàn nínú àwọn ẹrù ìsanwó bí àwọn ọ̀rọ̀ tí ó ń ṣe àgbékalẹ̀ ìwà náà gẹ́gẹ́ bí “Àjọ Ìwádìí Ààbò … ìkọ̀wé àgbékalẹ̀ nípasẹ̀ àfikún àwòkọ git proxy” — jẹ́ ìdáláre ara ẹni kan náà, yálà ibi-àfojúsùn runtime jẹ́ ti Shopify monorepo tàbí olupin metadata ti ẹgbẹ́ analysis.

Àkókò àti Ìṣípòpadà Ààlà

JulesJacker kì í ṣe ohun tí a lè fi ọwọ́ kan ṣoṣo ṣe. Ó jẹ́ iṣẹ́ tí ó ń bá a lọ tí ó sì ye ìyípadà orúkọ rẹ̀ nípa yíyí orúkọ rẹ̀ padà.

Nigbawo iṣẹlẹ
Aarin Oṣu Kẹrin 2026 Àwọn ìdìpọ̀ àkọ́kọ́ farahàn lábẹ́ àkójọpọ̀ olùtẹ̀wé àtilẹ̀wá: TS-utility façade, environment àti git-config exfiltration.
Ibẹrẹ Oṣu Karun ọdun 2026 Àwòrán ìwádìí Hypervisor àti kernel-escape tí a tẹ̀ jáde.
Aarin-si-opin oṣu Karun ọdun 2026 Kòkòrò ìkọ̀wé SC3 cross-repo farahàn lẹ́gbẹ̀ẹ́ Shopify tí a gbé kalẹ̀ àti google-labs-jules[bot] ìfarahàn. SC4 ṣe àgbékalẹ̀ àwọn ẹ̀rọ ìfọ̀rọ̀wérọ̀ AES àti àwọn ẹ̀rọ ìfọ̀rọ̀wérọ̀ tí a fi ẹnu bo.
Ipari Oṣu Karun ọdun 2026 npm yọ àkójọ ìtẹ̀jáde àtilẹ̀wá kúrò; orúkọ àwọn pákẹ́ẹ̀tì náà yóò di àwọn àyè ààbò tí ó ṣofo.
Ọ̀sẹ̀ kan náà Olùṣiṣẹ́ náà yí lọ sí ibi tí ó jọra tí ó sì jọra, ó sì tún ṣe àtúntẹ̀ kokoro náà, pẹ̀lú ìyàtọ̀ ètò ìṣàyẹ̀wò àti ẹ̀rọ.

Iṣilọ ni apakan ti awọn olugbeja yẹ ki o joko pẹlu. Yiyọ kuro ninu scope akọkọ ko pari ipolongo naa tabi ko paapaa fa fifalẹ rẹ. Oluṣiṣẹ naa ti ṣe agbekalẹ scope parallel kan ti orukọ rẹ yatọ si atilẹba nipasẹ ohun kikọ kan, o si tẹsiwaju lati tẹjade laarin ọsẹ kan naa. Lakoko kikọ yii, scope tuntun naa àwọn ts-form-utils (àwọn ẹ̀yà 1.0.0 sí 1.1.0), ts-ise-lint (1.0.0 àti 1.1.0), àti àwọn tí ó dúró fúnra wọn olùrànlọ́wọ́ ts-enum (1.0.0) ṣì ṣeé fi sori ẹrọ.

Awọn afihan ti Ibajẹ

Gbogbo awọn afihan ni isalẹ ni a jẹrisi lodi si orisun package.

iru Atọka awọn akọsilẹ
Nẹ́tíwọ́ọ̀kì (C2) aaronstack[.]com/jules-collect Ipin gbigba kan ṣoṣo kọja gbogbo iran; gba awọn ohun elo telemetry JSON ati awọn ege tarball ibi ipamọ base64-gzip.
Nẹ́ẹ̀tìwọ́ọ̀kì (aṣojú SSRF) http://git@192.168.0.1:8080 Iwaju fun ami apẹẹrẹ git ti a fi oju-iwe ti o ga julọ ti a lo lati de awọn ibi ipamọ ti agbari afojusun.
Nẹ́tíwọ́ọ̀kì (àwọsánmà) metadata.google.internal/computeMetadata/v1
kubernetes.default.svc
storage.googleapis.com/storage/v1/b
A lo o nikan nipasẹ iyatọ eto-ẹrọ itupalẹ fun ole awọn ami ati iwadii ọkọ ofurufu iṣakoso Kubernetes.
Identity google-labs-jules[bot]
161369871+google-labs-jules[bot]@users.noreply.github.com
Funni commit ìdámọ̀ òǹkọ̀wé náà ti gbé e sí àwọn ẹ̀ka pàtàkì tí àwọn olùfaragbá ń jìjà.
faili lib/.perf.dat AES-256-CBC-encrypted payload blob; IV ti a fipamọ sinu awọn baiti 16 akọkọ ati a tun kọ bọtini naa ni agbara ni index.js.
faili SECURITY-POC.md Ti fi silẹ ati committi pada si ibi ipamọ awọn olufaragba pẹlu ifiranṣẹ naa chore: update dependency cache.
faili scripts/postinstall.sh Ti ṣe ẹnu ọ̀nà sí $MALYSIS_ANALYSIS_ID; ṣàfihàn ìyàtọ̀ ìṣàyẹ̀wò-ẹ̀rọ-ìfọkànsí.
Agbegbe os.hostname() sọwedowo fun devbox / ubuntu-fc-uvm Agbára ìdènà àyíká Sandbox àti AI-aṣojú kí a tó lè ṣe àtúnṣe àti láti mú kí ó ṣiṣẹ́.
Agbegbe .jules/ ati /app/.jules ìwé àkójọ ìwé kà Àfojúsùn tó ṣe kedere nípa àwọn àyíká ibi iṣẹ́ aṣojú AI.
Agbegbe sc1-, sc3-, sc4-, s0-vmm-recon Àwọn àmì ìpele telemetry tí olùṣiṣẹ́ ṣe àgbékalẹ̀ wúlò fún wíwá àti ọdẹ.
Àfojúsùn ìkùukùu rare-signer-437603-p9
malysis-* àwọn àbámọ̀ bọ́ọ̀kì
Àwọn ìdámọ̀ iṣẹ́ GCP tí a fi kọdáàdì sí àti àwọn àpẹẹrẹ ìṣàyẹ̀wò-àpótí tí a fi sínú ẹ̀yà ìṣàyẹ̀wò-ẹ̀rọ.
Apẹrẹ package oju apa package TS-utility ti ko ni aaye ibi ipamọ Àwòrán ìpolówó tó dúró ṣinṣin: àwọn ìdìpọ̀ ìlò TypeScript èké pẹ̀lú àwọn ẹrù ìpalára tí a fi sínú rẹ̀ postinstall hooks tàbí tí a fi kún index.js.
àwọn irinṣẹ́ ìwádìí-àkójọpọ̀-ẹ̀rọ-sca-tools
Ṣe àfiyèsí, ṣe àtúnṣe, kí o sì dáàbò bo àwọn ewu sọ́fítíwè rẹ
Gba Akaunti Ọfẹ rẹ.
Ko si kaadi kirẹditi ti o nilo.

Ṣe aabo fun idagbasoke ati ifijiṣẹ sọfitiwia rẹ

pẹlu Xygeni Product Suite