TL; DR
Treuliodd un gweithredwr npm chwe wythnos yn cyhoeddi pecynnau "cyfleustodau" TypeScript ffug fel ts-form-utils, ts-project-lint, a ts-enum-helper.
Er bod y pecynnau'n datgelu cynorthwywyr dilysu bach sy'n edrych yn gyfreithlon, mae'r llwyth tâl go iawn yn gweithredu ar y gosodiad neu'r gofyniad cyntaf ac yn perfformio olion bysedd gwesteiwr, darganfod sefydliad GitHub, clonio ystorfa, ac all-hidlo cod ffynhonnell.
Mae'r meddalwedd faleisus yn targedu sefydliadau GitHub gwerth uchel yn benodol, gan gynnwys nifer o Shopify ystorfeydd, yna'n archifo ac yn allhidlo coed ffynhonnell y gellir eu cyrraedd i bwynt terfynol casgliad canolog.
Fel rhan o'r llif gwaith cyfaddawdu, y llwyth tâl commitffeil sa yn ôl i ystorfeydd dioddefwyr wrth efelychu hunaniaeth codio ymreolaethol Google google-labs-jules[bot].
Fe wnaethon ni olrhain yr ymgyrch — wedi'i enwi JulesJacker — ar draws cwmpasau cyhoeddwyr lluosog ac o leiaf bum cenhedlaeth llwyth tâl, gan gynnwys amrywiadau wedi'u hamgryptio ac sy'n ymwybodol o flwch tywod.
Mae'r amrywiad diweddaraf yn targedu seilwaith dadansoddi meddalwedd faleisus yn benodol: mae'n actifadu y tu mewn i amgylcheddau dadansoddi yn unig, yn dwyn tocynnau cyfrif gwasanaeth metadata cwmwl, ac yn archwilio awyrennau rheoli Kubernetes a bwcedi storio cwmwl.
Y prif IOC a rennir ar draws pob cenhedlaeth llwyth tâl yw'r pwynt terfyn casglu aaronstack[.]com/jules-collect.
Difrifoldeb: critigol.
Yr Ymosodiad: Sut Mae'n Gweithio
Mae pob pecyn JulesJacker yn dilyn yr un templed. pecyn.json yn hysbysebu cynorthwyydd TypeScript diniwed gyda thrwydded MIT a dim storfa ffynhonnell gysylltiedig. Y mynegai.js yn allforio llond llaw o swyddogaethau go iawn, gweithredol — regexes e-bost, mapiau enum, tablau rheolau lint — fel bod datblygwr sy'n mewnforio'r pecyn mewn gwirionedd yn gweld ymddygiad credadwy. Mae'r maleis yn byw mewn man arall: mewn a ôl-osod bachyn, neu mewn bloc ar waelod mynegai.js sy'n gweithredu'r foment y mae angen y modiwl.
Mae'r llwythi tâl wedi esblygu trwy gamau mewnol wedi'u rhifo'n glir (mae'r gweithredwr yn labelu ei ddigwyddiadau telemetreg ei hun) sc1-, sc3-, sc4-, ac yn y blaen), a gwylio'r esblygiad hwnnw yw'r ffordd gliriaf o ddeall yr ymgyrch.
Cenhedlaeth 1–2: rhagchwilio a lladrad git-config
Roedd y pecynnau cynharaf yn lladron gwybodaeth syml. Wrth eu gosod, fe wnaethon nhw gasglu newidynnau amgylcheddol, ffeil cynnal CLI GitHub, a'r cyfluniad git byd-eang (ffurfweddiad git –byd-eang –rhestr, git o bell -v), yna POSTIO'r bwndel i derfynbwynt y casgliad. Sefydlodd hyn lofnod y gweithredwr: stori eglurhaol “cyfleustodau dilysu ffurflenni TypeScript”, goleudy allanol i un parth, a blas am gymwysterau datblygwr yn hytrach na data defnyddwyr.
Cenhedlaeth 3: chwiliedyddion dianc hypervisor a chnewyllyn
Roedd un fersiwn yng nghanol yr ymgyrch yn troi'n gryf i ymosodiadau seilwaith. Yn lle dwyn cyfluniad, fe redodd chwiliad harnais rhagchwilio AF_VSOCK socedi, rhanbarthau virtio MMIO, /datblygwr/cof, a baneri caledu cnewyllyn, a hyd yn oed ymgais i ddamwain cnewyllyn a sbardunwyd gan sysrq — ymddygiad sy'n gysylltiedig ag ymdrechion i dorri allan o beiriant neu gynhwysydd rhithwir. Y tagiau telemetreg (s0-vmm-recon, s1-vmm-vsock-ffwff, s2-vmm-mmio, s3-cernel-probe) gwnaeth y bwriad yn glir. Roedd yr amrywiad hwn wedi'i anelu'n amlwg at amgylcheddau blwch tywod cwmwl a rhedegwr di-weinydd — y math o VM dros dro sy'n adeiladu ac yn profi cod di-ymddiried.
Cenhedlaeth 3 (SC3): y mwydyn ysgrifennu traws-repo
Daeth canolbwynt disgyrchiant yr ymgyrch yn lleidr repo hunan-ymlediadol. Ar y gosodiad, mae'r llwyth tâl yn rhedeg dilyniant amseredig pum cam:
- Cam 0 (~100 ms): olrhain olion bysedd y gwesteiwr — enw'r gwesteiwr, gwybodaeth am y defnyddiwr, hunaniaeth git.
- Cam 1 (~3 eiliad): pennu i ba sefydliad y mae'r dioddefwr yn perthyn drwy archwilio git o bell -v, yna chwiliwch am god caled CYFUNIAD_ORG mynediad i'r tabl a'r repositori prawf gyda git ls-remote — wedi'i gyfeirio trwy ddirprwy SSRF a reolir gan ymosodwr yn http://git@192.168.0.1:8080.
- Cam 2 (~10 eiliad): git clone pob storfa y gellir ei chyrraedd yn y rhestr dargedau, tarball a gzipio'r goeden, ei hamgodio â base64, a'i hallhidlo â chunks.
- Cam 3 (~45 eiliad): y “prawf mynediad” — clonio repo ysgrifenadwy, gollwng ffeil o'r enw SECURITY-POC.md, a commit gyda'r awdur wedi'i osod i google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> a'r neges chore: update dependency cache, yna gwthio i brif gangen y dioddefwr.
Nid yw'r rhestr dargedau wedi'i chodio'n galed yn generig. Mae'n rhestru mwy na thri deg Shopify ystorfeydd yn ôl enw — Shopify/shopify, Shopify/hunaniaeth, Shopify/bilio, Shopify/vault, Shopify/cyfrinachau, Shopify/seilwaith, Shopify/.github, a llawer mwy — ochr yn ochr â sefydliad prawf, AaronStackBarnes, y mae'n ymddangos bod y gweithredwr yn ei reoli ac yn ei ddefnyddio fel y targed ysgrifennu.
Cenhedlaeth 4 (SC4): wedi'i amgryptio a'i giatio
Mae'r amrywiad diweddaraf sy'n wynebu datblygwyr yn ychwanegu dwy haen o osgoi ar ben y mwydyn SC3.
Yn gyntaf, nid yw'r llwyth tâl yn cael ei gludo fel testun plaen mwyach. Mae'r rhesymeg go iawn mewn blob wedi'i amgryptio ag AES-256-CBC, lib/.perf.dat, gyda'r IV yn ei un ar bymtheg beit cyntaf. Y llwythwr yn mynegai.js yn ail-greu'r allwedd dadgryptio o ddarnau llinyn cyfun, yn dadgryptio'r blob, ac yn ei redeg gyda Swyddogaeth newydd()Mae hyd yn oed enwau'r modiwlau wedi'u rhannu i osgoi sganwyr statig — gofyn am('crypt' + 'o'), gofyn am('f' + 's').
Yn ail, mae'n cael ei gatio gan y gwesteiwr. Dim ond pan fydd un amrywiad yn dadgryptio ac yn rhedeg os.hostname() yn hafal blwch datblygu or ubuntu-fc-uvm (diofyn microVM Firecracker) neu'n cynnwys yr is-linyn blwch datblyguGatiau eraill ar bresenoldeb a .jules/ cyfeiriadur gweithio:
Mewn geiriau eraill, mae llwyth tâl SC4 wedi'i gynllunio i aros yn segur ar liniadur datblygwr cyffredin a deffro dim ond y tu mewn i'r asiant AI awtomataidd a amgylcheddau blwch tywod mae'r gweithredwr mewn gwirionedd eisiau cyfaddawdu.
Troi’r Labordy Ymlaen: yr Amrywiad Dadansoddi-Seilwaith
Y pecyn mwyaf newydd yn yr ymgyrch, cynorthwyydd-ts-enum, nid yw'n ymosod ar ddatblygwyr na Shopify o gwbl. Ei postinstall.sh yn agor gyda giât sy'n datgelu'r gêm:
Nid yw'r sgript yn gwneud dim oni bai bod newidyn amgylcheddol penodol i blatfform dadansoddi meddalwedd faleisus wedi'i osod. Pan fydd, mae'r llwyth tâl yn gwybod ei fod yn rhedeg y tu mewn i'r blwch tywod sy'n bodoli i ffrwydro ac astudio pecynnau yn union fel hwn - ac mae'n gwrth-ymosod.
Yn gyntaf mae'n tynnu'r tocyn OAuth cyfrif gwasanaeth GCP o weinydd metadata'r achos ac yn ei all-hidlo. Yna, gan ddefnyddio'r tocyn hwnnw, mae'n ysgubo'r Plân rheoli Kubernetes cyraeddadwy yn kubernetes.default.svc:
- yn rhestru RhwymiadauRôlCluster, RôlCluster, a Nodau;
- yn archwilio podiau, cyfrinachau, a mapiau ffurfweddu ar draws system-ciwb, diofyn, ciwb-cyhoeddus, prydles nod-kube, a'r gofod enwau dadansoddi;
- yn cyhoeddi galwadau SelfSubjectAccessReview i fapio'n union beth y caniateir i'r hunaniaeth sydd wedi'i dwyn ei wneud.
Yn olaf, mae'n gorfodi enwau bwcedi Google Cloud Storage yn greulon ac wedi'u hadeiladu o ID prosiect GCP wedi'i godio'n galed (prin-lofnodwr-437603-p9) a rhif y prosiect, gan ddyfalu cyfuniadau fel *-adeiladau, *-arteffactau, ac amryw malysis- rhagddodiaid (canlyniadau-malysis, pecynnau-malysis, sganiau-malysis). Mae pob cod a chorff ymateb yn cael ei gofnodi a'i bostio yn ôl i'r un jules-casgliad diweddbwynt.
Dyma'r achos prin o lwyth tâl cadwyn gyflenwi wedi'i adeiladu'n benodol i ymosod ar seilwaith yr amddiffynwyr eu hunain. Mae'r stori eglurhaol ar draws yr ymgyrch gyfan - y mae darnau ohoni'n ymddangos y tu mewn i'r llwythi tâl fel sylwadau sy'n fframio'r ymddygiad fel "PoC Ymchwil Diogelwch ... ysgrifennu traws-repo trwy docyn dirprwy git wedi'i or-sgopio" - yr un hunan-gyfiawnhad, boed y targed amser rhedeg yn monorepo Shopify neu'n weinydd metadata'r clwstwr dadansoddi.
Amserlen a Mudo'r Cwmpas
Nid yw JulesJacker yn weithrediad un-ergyd. Mae'n weithrediad parhaus a oroesodd ddileu cofrestrfa trwy newid ei enw yn unig.
| Pryd | Digwyddiad |
|---|---|
| Canol Ebrill 2026 | Mae'r pecynnau cyntaf yn ymddangos o dan gwmpas gwreiddiol y cyhoeddwr: ffasâd TS-utility, amgylchedd ac exfiltration git-config. |
| Dechrau Mai 2026 | Cyhoeddwyd amrywiad rhagchwilio hypervisor ac cnewyllyn-dianc. |
| Canol i ddiwedd mis Mai 2026 | Mae mwydyn ysgrifennu traws-repo SC3 yn ymddangos ochr yn ochr â llwythi tâl sy'n cael eu targedu gan Shopify a google-labs-jules[bot] dynwared. Mae SC4 yn cyflwyno llwythwyr wedi'u hamgryptio gan AES a'u rheoli gan y gwesteiwr. |
| Diwedd mis Mai 2026 | Mae npm yn dileu cwmpas gwreiddiol y cyhoeddwr; mae enwau pecynnau'n datrys i fod yn llefydd gwag sy'n dal diogelwch. |
| Yr un wythnos | Mae'r gweithredwr yn mudo i gwmpas bron yn union yr un fath ac yn ailgyhoeddi'r mwydyn, gan gynnwys yr amrywiad seilwaith-dadansoddi. |
Y mudo yw'r rhan y dylai amddiffynwyr ei hystyried. Ni wnaeth tynnu'r cwmpas cyntaf i lawr ddod â'r ymgyrch i ben nac ei harafu hyd yn oed. Roedd y gweithredwr eisoes wedi llwyfannu cwmpas cyfochrog y mae ei enw'n wahanol i'r gwreiddiol gan un cymeriad, ac yn parhau i gyhoeddi o fewn yr un wythnos. Hyd at ysgrifennu hwn, mae'r cwmpas newydd ts-form-utils (fersiynau 1.0.0 hyd at 1.1.0), ei ts-prosiect-lint (1.0.0 ac 1.1.0), a'r un annibynnol cynorthwyydd-ts-enum (1.0.0) yn parhau i fod yn osodadwy.
Dangosyddion Cyfaddawd
Cadarnhawyd yr holl ddangosyddion isod yn erbyn ffynhonnell y pecyn.
| math | Dangosydd | Nodiadau |
|---|---|---|
| Rhwydwaith (C2) | aaronstack[.]com/jules-collect | Un pwynt terfynol casgliad ar draws pob cenhedlaeth; yn derbyn telemetreg JSON a darnau tarball ystorfa base64-gzip. |
| Rhwydwaith (dirprwy SSRF) | http://git@192.168.0.1:8080 | Blaen ar gyfer tocyn dirprwy git gor-gwmpas a ddefnyddir i gyrraedd ystorfeydd sefydliad targed. |
| Rhwydwaith (cwmwl) | metadata.google.internal/computeMetadata/v1kubernetes.default.svcstorage.googleapis.com/storage/v1/b | Fe'i defnyddir gan yr amrywiad seilwaith-dadansoddi yn unig ar gyfer lladrad tocynnau a rhagchwilio awyren reoli Kubernetes. |
| Hunaniaeth | google-labs-jules[bot]161369871+google-labs-jules[bot]@users.noreply.github.com | Gofannu commit hunaniaeth awdur wedi'i gwthio i ganghennau prif linell y dioddefwr. |
| Ffeil | lib/.perf.dat | Blob llwyth tâl wedi'i amgryptio ag AES-256-CBC; IV wedi'i storio yn y 16 beit cyntaf ac allwedd wedi'i hail-greu'n ddeinamig yn index.js. |
| Ffeil | SECURITY-POC.md | Wedi'i ollwng a commitwedi'i anfon yn ôl i ystorfeydd dioddefwyr gyda'r neges chore: update dependency cache. |
| Ffeil | scripts/postinstall.sh | Wedi'i giatio ymlaen $MALYSIS_ANALYSIS_ID; yn nodi'r amrywiad sy'n targedu seilwaith-dadansoddi. |
| Ymddygiadol | os.hostname() gwiriadau ar gyfer devbox / ubuntu-fc-uvm | Gatio amgylchedd blwch tywod ac asiant AI cyn dadgryptio a gweithredu'r llwyth tâl. |
| Ymddygiadol | .jules/ ac /app/.jules darlleniadau cyfeiriadur | Targedu amgylcheddau gweithle asiantau AI yn benodol. |
| Ymddygiadol | sc1-, sc3-, sc4-, s0-vmm-recon | Labeli cam telemetreg a ddiffiniwyd gan weithredwr sy'n ddefnyddiol ar gyfer canfod a hela. |
| Targed cwmwl | rare-signer-437603-p9malysis-* dyfaliadau bwced | Dynodwyr prosiect GCP wedi'u codio'n galed a phatrymau rhestru bwcedi storio wedi'u hymgorffori yn yr amrywiad seilwaith dadansoddi. |
| Siâp y pecyn | Ffasâd pecyn cyfleustodau TS heb faes ystorfa | Templed ymgyrch gyson: pecynnau cyfleustodau TypeScript ffug gyda llwythi tâl maleisus wedi'u hymgorffori ynddynt postinstall hooks neu wedi'i atodi at index.js. |




