ՋուլսՋեքեր. կեղծ npm որդը նմանակում է Ջուլսի արհեստական ​​ինտելեկտին

JulesJacker. կեղծ PoC npm որդ, որը նմանակում է Google-ի Ջուլսի գործակալին և միացնում է այն վերլուծող Sandbox-ը։

TL. DR

Միակ npm օպերատորը վեց շաբաթ անցկացրեց կեղծ TypeScript «օգտակար» փաթեթներ հրապարակելով, ինչպիսիք են՝ ts-form-utils, ts-project-lint, եւ ts-enum-helper.

Մինչդեռ փաթեթները բացահայտում են փոքր, օրինական տեսքով վավերացման օգնականներ, իրական բեռնվածությունը կատարվում է տեղադրման կամ առաջին պահանջի ժամանակ և կատարում է հոսթի մատնահետք, GitHub կազմակերպության հայտնաբերում, պահոցների կլոնավորում և սկզբնական կոդի արտանետում։

Վնասակար ծրագիրը հատկապես թիրախավորում է բարձր արժեք ունեցող GitHub կազմակերպությունները, այդ թվում՝ բազմաթիվ… Shopify պահոցներ, այնուհետև արխիվացնում և արտաֆիլտրում է հասանելի աղբյուրի ծառերը կենտրոնացված հավաքածուի վերջնակետ։

Որպես փոխզիջման աշխատանքային հոսքի մաս, օգտակար բեռը commitsa ֆայլը վերադարձնել զոհերի պահոցներ՝ Google-ի ինքնավար կոդավորման ինքնությունը կրկնօրինակելով։ google-labs-jules[bot].

Մենք հետևեցինք արշավին՝ անվանակոչված Ջուլս Ջեքեր — բազմաթիվ հրատարակիչների շրջանակում և առնվազն հինգ օգտակար բեռնվածության սերունդներում, ներառյալ կոդավորված և sandbox-aware տարբերակները։

Ամենանոր տարբերակը հատկապես թիրախավորում է վնասակար ծրագրերի վերլուծության ենթակառուցվածքները. այն ակտիվանում է միայն վերլուծական միջավայրերի ներսում, գողանում է ամպային մետատվյալների ծառայության-հաշվի տոկեններ և զոնդավորում է Kubernetes-ի կառավարման հարթությունները և ամպային պահեստավորման դույլերը։

Բոլոր օգտակար բեռի սերունդների համար օգտագործվող հիմնական IOC-ն հավաքման վերջնակետն է։ aaronstack[.]com/jules-collect.

Լրջությունը՝ կրիտիկական։

Հարձակումը. Ինչպես է այն գործում

JulesJacker-ի յուրաքանչյուր փաթեթ հետևում է նույն ձևանմուշին։ package.json գովազդում է MIT լիցենզիայով և առանց հղումներով աղբյուրի պահոցով բարեհամբույր TypeScript օգնական։ index.js արտահանում է մի քանի իրական, աշխատող ֆունկցիաներ՝ էլ. փոստի կանոնավոր ֆունկցիաներ, համարակալման քարտեզներ, lint կանոնների աղյուսակներ, որպեսզի փաթեթը ներմուծող մշակողը տեսնի հավանական վարքագիծ։ Չարամտությունը այլուր է՝ հետինստալյացիա կեռիկ կամ ներքևի մասում գտնվող բլոկի մեջ index.js որը կատարվում է այն պահին, երբ մոդուլը անհրաժեշտ է դառնում։

Բեռները զարգացել են հստակ համարակալված ներքին փուլերով (օպերատորը նշում է իր սեփական հեռաչափման իրադարձությունները) sc1-, sc3-, sc4-և այլն), և այդ էվոլյուցիան դիտելը արշավը հասկանալու ամենահստակ միջոցն է։

 Սերունդ 1–2. հետախուզություն և git-config-ի գողություն

Առաջին փաթեթները պարզ ինֆոգողներ էին։ Տեղադրման ժամանակ դրանք հավաքում էին միջավայրի փոփոխականներ, GitHub CLI hosts ֆայլը և գլոբալ git կոնֆիգուրացիան (git config –global –list, git remote -v), ապա փաթեթը POST ուղարկեց հավաքածուի վերջնակետին: Սա հաստատեց օպերատորի ստորագրությունը՝ «TypeScript ձևի վավերացման օգտակար գործիքներ» շապիկի պատմություն, մեկ տիրույթի համար ելքային ազդանշան և սպառողական տվյալների փոխարեն մշակողի հավատարմագրերի նկատմամբ նախասիրություն:

3-րդ սերունդ՝ հիպերվիզոր և միջուկից դուրս գալու զոնդեր

Միջին արշավի մեկ տարբերակ կտրուկ անցավ ենթակառուցվածքային հարձակումների։ Կարգավորումներ գողանալու փոխարեն, այն գործարկեց հետախուզական լարերի զոնդավորման համակարգ։ AF_VSOCK վարդակներ, վիրտիո MMIO շրջաններ, /dev/mem, և միջուկի կոշտացման դրոշներ, և նույնիսկ sysrq-ի կողմից ակտիվացված միջուկի խափանումների փորձեր՝ վարքագիծ, որը կապված է վիրտուալ մեքենայից կամ կոնտեյներից դուրս գալու փորձերի հետ։ Հեռաչափման թեգերը (s0-vmm-հետախուզում, s1-vmm-vsock-fuzz, s2-vmm-mmio, s3-kernel-probe) մտադրությունը հստակեցրեց։ Այս տարբերակը հստակորեն նպատակ ուներ ամպային-ավազային և սերվերազուրկ-վազող միջավայրեր — այնպիսի ժամանակավոր վիրտուալ մեքենա, որը կառուցում և փորձարկում է անվստահելի կոդ։

3-րդ սերունդ (SC3). խաչաձև պահեստավորման գրելու որդ

Արշավի ծանրության կենտրոնը վերածվեց ինքնաբազմացող պահեստի գողի։ Տեղադրման ժամանակ օգտակար բեռը կատարում է հինգ փուլից բաղկացած ժամանակային հաջորդականություն.

  • Բեմական 0 (~100 մվ): հոսթի մատնահետք — հոսթի անունը, օգտատիրոջ տվյալները, git նույնականացումը։
  • Բեմական 1 (~3 վ): ստուգելով, թե որ կազմակերպությանն է պատկանում զոհը git remote -v, ապա փնտրեք կոշտ կոդավորված ORG_CONFIG աղյուսակի և փորձարկման պահոցի մուտքի հնարավորություն git ls-remote — ուղղորդվում է հարձակվողի կողմից վերահսկվող SSRF պրոքսիի միջոցով՝ http://git@192.168.0.1:8080.
  • Բեմական 2 (~10 վրկ): git clone թիրախային ցանկի յուրաքանչյուր հասանելի պահոց, tarball և gzip ֆայլով ծածկեք ծառը, base64-ով կոդավորեք այն և chunk-exfiltrate արեք։
  • Բեմական 3 (~45 վ): «մուտքի ապացույց»՝ կլոնավորել գրելու ենթակա պահոցը, գցել SECURITY-POC.md անունով ֆայլը և commit այն՝ հեղինակի google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> հասցեով և հետևյալ հաղորդագրությամբ՝ թարմացնել կախվածության քեշը, ապա ուղարկել զոհի գլխավոր ճյուղ։

Կոշտ կոդավորված թիրախների ցանկը ընդհանուր չէ։ Այն թվարկում է ավելի քան երեսուն Shopify պահոցներ անունով — Shopify/shopify, Shopify/ինքնություն, Shopify/հաշվարկ, Shopify/vault, Shopify/գաղտնիքներ, Շոփիֆ/ենթակառուցվածք, Shopify/.githubև շատ ավելին՝ փորձարկման կազմակերպության հետ մեկտեղ, Աարոն Սթեք Բարնս, որը, կարծես, օպերատորը վերահսկում է և օգտագործում է որպես գրման թիրախ։

4-րդ սերունդ (SC4): կոդավորված և դարպասներով պաշտպանված

Ամենանոր մշակողների համար նախատեսված տարբերակը SC3 որդից բացի ավելացնում է խուսափողականության երկու շերտ։

Նախ, օգտակար բեռնվածությունը այլևս չի առաքվում որպես պարզ տեքստ։ Իրական տրամաբանությունը գտնվում է AES-256-CBC կոդավորված բլոկում, lib/.perf.dat, որտեղ IV-ը գտնվում է իր առաջին տասնվեց բայթերում։ Բեռնիչը index.js վերակառուցում է վերծանման բանալին միացված տողային բեկորներից, վերծանում է blob-ը և գործարկում այն նոր ֆունկցիա()Նույնիսկ մոդուլների անունները բաժանված են՝ ստատիկ սկաներներից խուսափելու համար — պահանջել('գաղտնագիր' + 'o'), պահանջել('f' + 's').

Երկրորդ, այն host-gate-ով է։ Մեկ տարբերակը վերծանվում և աշխատում է միայն այն ժամանակ, երբ os.hostname() հավասար է devbox or ubuntu-fc-uvm (Firecracker microVM լռելյայն) կամ պարունակում է ենթատող devboxՄեկ այլ դարպաս՝ ա-ի առկայության վրա .ջուլս/ աշխատանքային տեղեկատու՝

Այլ կերպ ասած, SC4-ի օգտակար բեռնվածությունը նախատեսված է սովորական մշակողի նոութբուքի վրա անգործուն մնալու և արթնանալու միայն ավտոմատացված արհեստական ​​բանականության գործակալի ներսում։ Sandbox միջավայրեր օպերատորն իրականում ցանկանում է փոխզիջման գնալ։

Լաբորատորիայի միացումը. վերլուծության-ենթակառուցվածքի տարբերակը

Քարոզարշավի ամենանորարարական փաթեթը, ts-enum-օգնական, ընդհանրապես չի հարձակվում մշակողների կամ Shopify-ի վրա։ Դա postinstall.sh բացվում է դարպասով, որը բացահայտում է խաղը։

Սկրիպտը ոչինչ չի անում, եթե վնասակար ծրագրերի վերլուծության հարթակին հատուկ միջավայրի փոփոխական չի սահմանվում։ Երբ այն սահմանվում է, օգտակար բեռնվածությունը գիտի, որ այն աշխատում է հենց այս մեկի նման փաթեթները պայթեցնելու և ուսումնասիրելու համար գոյություն ունեցող «sandbox»-ի ներսում, և այն հակագրոհ է իրականացնում։

Այն նախ մետատվյալների սերվերից հանում է GCP ծառայության հաշվի OAuth տոկենը և դուրս է մղում այն։ Այնուհետև, օգտագործելով այդ տոկենը, այն մաքրում է Կուբեռնետեսի կառավարման ինքնաթիռ հասանելի է kubernetes.default.svc:

  • թվարկում է ClusterRoleBindings-ը, ClusterRoles-ը և Nodes-ը։
  • զոնդերի պոդեր, գաղտնիքներ և կոնֆիգուրացիայի քարտեզներ ամբողջ տարածքում կուբե-համակարգ, անհոգություն, kube-public, kube-node-leaseև վերլուծության անվանատարածքը։
  • խնդիրներ, որոնք առաջանում են SelfSubjectAccessReview կանչերի ժամանակ՝ գողացված ինքնությանը թույլատրված գործողությունները ճշգրիտ պատկերացնելու համար։

Վերջապես, այն կոպիտ կերպով կիրառում է Google Cloud Storage-ի դույլերի անունները, որոնք կառուցվել են կոշտ կոդավորված GCP նախագծի ID-ից (հազվագյուտ-ստորագրող-437603-p9) և նախագծի համարը՝ գուշակելով այնպիսի համակցություններ, ինչպիսիք են՝ *-կառուցումներ, *-արտեֆակտներեւ մի քանիսը մալիզ- նախածանցներ (մալիզ-արդյունքներ, malysis-փաթեթներ, մալիզ-սկանավորումներ)։ Յուրաքանչյուր պատասխանի կոդ և տեքստ գրանցվում և POST-ով ուղարկվում է նույն հասցեին։ Ջուլս-քոլեքթ վերջնակետ.

Սա մատակարարման շղթայի բեռնվածության հազվագյուտ դեպք է, որը հատուկ կառուցված է պաշտպանների սեփական ենթակառուցվածքների վրա հարձակվելու համար: Ամբողջ արշավի գլխավոր պատմությունը, որի հատվածները հայտնվում են բեռների ներսում որպես մեկնաբանություններ, որոնք վարքագիծը ներկայացնում են որպես «Անվտանգության հետազոտությունների PoC ... խաչաձև պահոցում գրառում՝ գերծանրաբեռնված git պրոքսի տոկենի միջոցով», նույն ինքնահիմնավորումն է, անկախ նրանից, թե կատարման թիրախը Shopify մոնոռեպո է, թե վերլուծական կլաստերի մետատվյալների սերվերը:

Ժամանակացույց և շրջանակի միգրացիա

JulesJacker-ը միանվագ գործողություն չէ։ Այն շարունակական գործողություն է, որը գոյատևեց գրանցամատյանի փակումից հետո՝ պարզապես փոխելով իր անունը։

Երբ իրադարձություն
2026 թվականի ապրիլի կեսերին Առաջին փաթեթները հայտնվում են սկզբնական հրատարակչի շրջանակում՝ TS-utility facade, environment և git-config exfiltration։
2026 թվականի մայիսի սկզբին Հրապարակվել են հիպերվիզորը և միջուկից դուրս գալու հետախուզման տարբերակը։
2026 թվականի մայիսի կեսերից մինչև վերջ SC3 խաչաձև պահոցներում գրելու որդը հայտնվում է Shopify-ի համար նախատեսված բեռների հետ միասին և google-labs-jules[bot] կեղծում։ SC4-ը ներկայացնում է AES-կոդավորված և հոսթ-գեյթով կառավարվող բեռնիչներ։
2026 թվականի մայիսի վերջին npm-ը հեռացնում է հրատարակչի սկզբնական շրջանակը, փաթեթների անունները դատարկում են անվտանգության պահպանման տեղապահները։
Նույն շաբաթ Օպերատորը տեղափոխվում է գրեթե նույնական տեսք ունեցող տիրույթ և վերահրապարակում է որդը, ներառյալ վերլուծական ենթակառուցվածքի տարբերակը։

Միգրացիան այն մասն է, որի հետ պաշտպանները պետք է համաձայնվեն։ Առաջին նշանոցի հեռացումը ո՛չ ավարտեց, ո՛չ էլ նույնիսկ դանդաղեցրեց արշավը։ Օպերատորն արդեն բեմադրել էր զուգահեռ նշանոց, որի անունը տարբերվում էր բնօրինակից մեկ նիշով, և շարունակել էր հրապարակել նույն շաբաթվա ընթացքում։ Այս գրառման պահին նոր նշանոցի ts-form-utils (տարբերակներ 1.0.0-ից մինչև 1.1.0), դրա ts-project-lint (1.0.0 և 1.1.0), և առանձին տարբերակը ts-enum-օգնական (1.0.0) մնում են տեղադրելի։

Փոխզիջման ցուցանիշներ

Ստորև նշված բոլոր ցուցանիշները հաստատվել են փաթեթի աղբյուրի համեմատ։

Տիպ Ցուցիչ Նշումներ
Ցանց (C2) aaronstack[.]com/jules-collect Յուրաքանչյուր սերնդի համար միասնական հավաքածուի վերջնակետ; ստանում է JSON հեռաչափություն և base64-gzip պահոցի tarball կտորներ։
Ցանց (SSRF պրոքսի) http://git@192.168.0.1:8080 Առջևի մասում գերծանրաբեռնված git proxy տոկենի համար է, որն օգտագործվում է թիրախային կազմակերպության պահոցներին հասնելու համար։
Ցանց (ամպային) metadata.google.internal/computeMetadata/v1
kubernetes.default.svc
storage.googleapis.com/storage/v1/b
Օգտագործվում է միայն վերլուծության-ենթակառուցվածքի տարբերակի կողմից՝ տոկենների գողության և Kubernetes-ի կառավարման հարթության հետախուզման համար։
Ինքնություն google-labs-jules[bot]
161369871+google-labs-jules[bot]@users.noreply.github.com
Դարբնոցային commit հեղինակի ինքնությունը մղվել է զոհի հիմնական ճյուղեր։
Ֆայլ lib/.perf.dat AES-256-CBC-ով կոդավորված բեռի բլոկ; IV-ը պահվում է առաջին 16 բայթերում և բանալին վերակառուցվում է դինամիկ կերպով index.js.
Ֆայլ SECURITY-POC.md Գցվեց և commitվերադարձվել է զոհերի պահոցներ՝ հաղորդագրությամբ chore: update dependency cache.
Ֆայլ scripts/postinstall.sh Մուտքը փակ է $MALYSIS_ANALYSIS_ID; նույնականացնում է վերլուծության-ենթակառուցվածքի թիրախավորման տարբերակը։
Վախեցնող os.hostname() չեկեր devbox / ubuntu-fc-uvm Sandbox-ի և AI-agent միջավայրի դարպասավորում՝ օգտակար բեռի վերծանումից և կատարումից առաջ։
Վախեցնող .jules/ և /app/.jules տեղեկատուի ընթերցումներ Արհեստական ​​բանականության գործակալի աշխատանքային միջավայրի բացահայտ թիրախավորում։
Վախեցնող sc1-, sc3-, sc4-, s0-vmm-recon Օպերատորի կողմից սահմանված հեռաչափման փուլի պիտակներ, որոնք օգտակար են հայտնաբերման և որսի համար։
Ամպի թիրախ rare-signer-437603-p9
malysis-* գուշակություններ
Վերլուծության ենթակառուցվածքի տարբերակում ներդրված կոշտ կոդավորված GCP նախագծի նույնականացուցիչներ և պահեստային դույլերի թվարկման ձևանմուշներ։
Փաթեթի ձևը TS-օգտակար փաթեթի ճակատային մաս՝ առանց պահեստային դաշտի Համապատասխան արշավի ձևանմուշ. կեղծ TypeScript օգտակար փաթեթներ՝ ներդրված վնասակար բեռներով։ postinstall hooks կամ կցված է index.js.
sca-tools-software-composition-analysis-tools
Առաջնահերթություն տվեք, շտկեք և պաշտպանեք ձեր ծրագրային ռիսկերը
Ստացեք ձեր անվճար հաշիվը։
Ոչ մի վարկային քարտ չի պահանջվում:

Ապահովեք ձեր ծրագրային ապահովման մշակումը և մատակարարումը

Xygeni Product Suite-ի հետ