- Maraming bersyon ng @7nohe/openapi-react-query-codegen sa npm ang nakompromiso., na nag-e-embed ng sopistikadong malware payload na umaabuso sa mga workflow na nakabatay sa TanStack Query.
- Gumamit ang pag-atake ng binding.gyp sandbox escape at mga preinstall script. para magpatakbo ng multi-layered JavaScript stealer habang nag-i-install ng npm, kahit na walang mga tahasang lifecycle hook.
- Ang payload ay nakakuha ng malawak na hanay ng mga kredensyal ng developer at cloud (GitHub, npm, AWS, Azure, GCP, Vault, Kubernetes at marami pang iba) at inilabas ang mga ito sa mga pampublikong repositoryo ng GitHub.
- Inabuso ng worm ang mga ninakaw na token upang makahawa ng karagdagang npm, PyPI, RubyGems packages at GitHub repo, na nagbibigay-diin sa mas malawak na panganib ng supply-chain kaugnay ng sikat na paggamit ng TanStack Query npm.
Noong huling bahagi ng Agosto 2026, natuklasan ng mga mananaliksik sa seguridad ang isang naka-target na pag-atake sa supply-chain na naka-link sa TanStack Query npm ecosystem sa pamamagitan ng isang sikat na OpenAPI code generator. Ang insidente ay nakasentro sa pakete @7nohe/openapi-react-query-codegen, isang tool na awtomatikong bumubuo ng mga type-safe hook para sa TanStack Query nang direkta mula sa mga schema ng OpenAPI, at nakakakita na ng mahigit 150,000 lingguhang pag-download sa npm.
Sa halip na habulin mismo ang mga pangunahing library ng TanStack Query, nakompromiso ng mga attacker ang nakapalibot na tooling na inaasahan ng maraming team upang makagawa ng mga TanStack Query hook , na naglalagay ng isang kumplikadong malware payload sa maraming release ng generator. Dahil ang mga hook na ito ay direktang nakakabit sa mga production React at TypeScript codebase, ang epekto ay umaabot nang higit pa sa isang package, na nakakaapekto sa anumang CI pipeline o developer machine na nag-install ng mga nahawaang bersyon.
Paano inabuso ng pag-atake ang isang TanStack Query code generator sa npm
Ang apektadong aklatan, @7nohe/openapi-react-query-codegen, ay malawakang ginagamit upang mag-scaffold ng mga hook layer ng TanStack Query mula sa mga kontrata ng OpenAPI, na nagliligtas sa mga koponan mula sa paulit-ulit na lohika ng pagkuha na isinusulat sa kamay. Sa loob ng humigit-kumulang 20 minuto, isang attacker ang nag-push ng sampung malisyosong bersyon ng package na ito sa npm registry, na lahat ng mga ito ay may mga wastong patunay ng pinagmulan na ginawa sa pamamagitan ng GitHub Actions.
Ang mga pagpapatunay na iyon, na karaniwang isang malakas na senyales ng integridad, ay nawalan ng kahulugan dahil ang mismong daloy ng trabaho ng GitHub Actions ng proyekto ay nakompromiso . Sa pamamagitan ng pagsasamantala sa isang kahinaan sa daloy ng trabahong iyon, nagkaroon ng kakayahang magpadala ng mga trojanized na build ang threat actor habang bumubuo pa rin ng cryptographic na ebidensya na nagmula ang mga ito sa "opisyal" na pipeline. Tila kinuha na rin ang kaukulang repositoryo ng GitHub sa parehong hakbang, na nagbigay sa attacker ng ganap na kontrol sa proseso ng paglabas.
Ang kampanya ay sumasalamin sa mga naunang insidente ng supply-chain na nauugnay sa npm ngunit nagdaragdag ng kakaibang twist: partikular nitong tinatarget ang interseksyon ng OpenAPI tooling at paggamit ng TanStack QueryDahil ang generator ay naglalabas ng React code na nakadepende sa @tanstack/react-query, ang anumang organisasyong nag-wire nito sa kanilang automated API client generation ay nanganganib na makuha ang malware sa mga build agent, CI runner, o developer laptop.
Nabanggit din ng mga imbestigador na ang branding ng malware—na tinatawag ang sarili nitong “ Trinitite: Sponsored by Preview 2 Effects ”—ay sumasalamin sa istilo ng mga nakaraang operasyon na nauugnay sa TeamPCP, bagama't nananatiling hindi malinaw kung ito ba ay gawa ng mga mangopya, isang splinter group, o isang hindi kaugnay na aktor na humiram ng estetika.
Pagtakas sa sandbox ng Binding.gyp: paglulunsad ng malware habang nag-i-install ng npm
Isa sa mga hindi pangkaraniwang teknikal na pagpipilian sa TanStack Query–adjacent attack na ito ay ang pang-aabuso sa binding.gyp bilang isang vector ng pagpapatupad habang nag-i-install ng npmSa ilalim ng normal na mga pangyayari, binding.gyp Inilalarawan kung paano i-compile ang mga katutubong Node.js addon. Kapag nakatagpo ang npm ng ganitong file, tinatawag nito ang node-gyp, na siya namang sinusuri ang conditions patlang gamit ang Python.
Ang mga malisyosong bersyon ng @7nohe/openapi-react-query-codegen pagsamantalahan ang pag-uugaling ito sa pamamagitan ng paglalagay ng isang Pagtakas sa sandbox ng Python sa conditions harangan angSa halip na maglaman ng hindi nakakapinsalang build configuration, nilalakad ng file ang internal class hierarchy ng Python upang maabot ang catch_warnings klase, lumilipat sa __builtins__, mga inaangkat os, at sa wakas ay tumawag os.system para isagawa ang isang JavaScript payload gamit ang Node.
Kapag natanggal na ang obfuscation, ang kondisyon ay magiging sa isang utos lamang: node 3FWCvzduYZg.js awtomatikong isinasagawa habang ini-install. Ang natitirang bahagi ng binding.gyp ang nilalaman ay epektibong isang panakip lamang: ang idineklarang pangalan ng target ay walang kahulugan, ang uri ay hex-encoded none, at walang nangyayaring tunay na katutubong compilation.
Hindi lahat ng kontaminadong paglabas ay umaasa lamang sa trick na ito. Dalawang prerelease tag na ginamit nang kumbensyonal preinstall mga script sa halip, isa na tumatawag ng isang lokal na file nu.js at isa pang nagda-download ng Bun runtime sa pamamagitan ng wget pinadaloy sa tubo bash bago simulan ang isang script na walang-awang pinangalanan is_it_this_simple.jsDinoble ang mga sumunod na bersyon, na pinagsasama ang binding.gyp pagsamantalahan nang may tahasang "preinstall": "node 3FWCvzduYZg.js" pagpasok sa package.json para mapakinabangan nang husto ang tsansa na tumakbo ang payload.
Isang multi-layered JavaScript payload na ginawa para maiwasan ang mga sandbox
Sa gitna ng nakompromisong TanStack Query generator ay matatagpuan ang 3FWCvzduYZg.js, isang file na may iisang linya na may bigat na humigit-kumulang 5.4 MB, nakalagay sa root ng npm package. Ang script na ito ay lubhang napapalibutan ng mga nakatagong impormasyon, na gumagamit ng maraming yugto ng pag-encrypt upang mapabagal ang inspeksyon at upang hadlangan ang mga static analysis tool.
Ang pinakalabas na patong ay isang higanteng integer array na na-decrypt sa pamamagitan ng XOR gamit ang isang nakapirming key, na nagpapakita ng code na tahimik na nagda-download ng Bun runtime papunta sa isang pansamantalang direktoryo (sa ilalim ng mga pangalang tulad ng trinnyyyy-XXXXX sa system temp folder). Pagkatapos ay ginagamit ang Bun upang isagawa ang susunod na naka-encrypt na segment, na iniimbak bilang data na protektado ng AES-128-GCM na naka-embed sa loob ng script.
Nang ganap na ma-decrypt at ma-deobfuscate, natuklasan ng mga analyst ang isang panloob na payload na humigit-kumulang 800 KB ng JavaScript na gumaganap bilang isang magnanakaw ng kredensyal, self-spreading worm, at mapanirang utility . Ang panloob na script na ito ay naglalapat ng isang custom shuffled-table cipher na nakapatong sa mga kilalang transform ng obfuscator.io, na muling nagpapahiwatig na ang mga may-akda ay partikular na naglalayong labanan ang automated reverse engineering.
Bago gumawa ng anumang tunay na pinsala, ang malware ay nagsasagawa ng isang serye ng mga pagsusuri sa kapaligiran na idinisenyo upang maiwasan ang mga mananaliksik sa seguridad at mga awtomatikong scannerTahimik itong lumalabas kung makakakita ito ng mga lokal na sistema sa Russia, mga karaniwang tool ng EDR mula sa CrowdStrike, SentinelOne, o Carbon Black, mga kilalang direktoryo ng sandbox na ginagamit ng mga produkto ng pag-scan ng supply-chain, mga pekeng sikretong prefix (tulad ng AKIAFAKE o mga decoy npm token), o mga pangalan ng organisasyon ng GitHub na nauugnay sa mga demo sa pananaliksik sa seguridad. Hinahanap din nito ang presensya ng StepSecurity harden-runner tool, at umaatras kung makita nito ang hardened CI configuration na iyon.
Ang sinusubukang nakawin ng malware mula sa mga gumagamit ng TanStack Query at sa iba pa
Kapag natugunan na ang mga kondisyon ng pagpapatupad, magsisimula ang payload sa sistematikong pagkolekta ng malawak na hanay ng mga kredensyal na karaniwang makikita sa mga modernong daloy ng trabaho na nakabatay sa JavaScript at TanStack Query . Ang pokus ay hindi sa mismong front-end framework, kundi sa cloud at developer infrastructure na karaniwang kinakausap ng mga kliyente ng TanStack Query.
Ang pag-access sa GitHub ay isang pangunahing target. Ang malware mga paghahanap para sa parehong klasikong personal access token at mas bagong pinong mga token sa mga environment variable at lokasyon ng filesystem. Sa mga GitHub Actions runner, sinusubukan nitong kumuha ng OIDC token gamit ang standard ACTIONS_ID_TOKEN_REQUEST_TOKEN at kaugnay na URL, na ginagamit ang parehong mekanismo na ginagamit ng mga lehitimong daloy ng trabaho para sa mga panandaliang kredensyal sa cloud.
Ang mga rehistro ng pakete ay isa pang mahalagang pinagmumulan ng datos. Mababasa sa script mga file ng configuration ng npm tulad ng ~/.npmrc, pag-scan para sa mga bearer token at pag-validate sa mga ito laban sa npm registry's whoami endpointNaglalapat ito ng katulad na lohika para sa PyPI ng Python (naghahanap ng mga token na nagsisimula sa pypi-AgEIcHlwaS5vcmcCJ) at RubyGems (naghahanap ng rubygems_ mga token), na nagbibigay sa mga umaatake ng potensyal na access sa isang malawak na bakas ng paa sa iba't ibang ecosystem.
Mas malawak pa ang pagkuha ng kredensyal sa cloud. Sinusuri ng malware Mga variable ng kapaligiran at mga config file na nauugnay sa AWS, ang serbisyo ng metadata ng instance ng EC2, at mga endpoint ng metadata ng ECS, Gamit sts:GetCallerIdentity tumatawag upang beripikahin na ang anumang natuklasang kredensyal ay balido bago i-exfiltrate ang mga ito. Inuulit nito ang pattern para sa Azure (mga client ID, mga sikreto, mga pinamamahalaang pagkakakilanlan, at maging ang Azure Key Vault) at para sa Google Cloud, checking service account na JSON, mga metadata server, at Secret Manager kapag mayroon na itong magagamit na token.
Higit pa sa mga registry ng cloud at package, sinusuri ng script ang mga lokal na disk para sa mahigit 150 iba't ibang mga pattern ng glob, kabilang ang mga pribadong key ng SSH, mga config ng Docker, .env mga file, mga Git credential store, mga crypto wallet directory, mga messaging client tulad ng Signal o Telegram Desktop, mga VPN configuration, at maging ang mga configuration file na naka-link sa mga AI tool tulad ng Claude. Ang lawak na ito ay sumasalamin sa pag-unawa sa kung paano karaniwang binubuo at ini-deploy ang mga TanStack Query-backed app: kadalasan sa mga kapaligiran kung saan ang isang makina o CI job ay may malawak na hanay ng mga credential para sa mga repository, registry, at cloud provider.
Pag-exfiltration sa pamamagitan ng mga repo ng GitHub at pagpapalaganap na parang bulate
Kapag nakolekta na ang datos, ang malware ay gumagamit ng kakaibang paraan ng exfiltration. Sa halip na mag-post sa isang tradisyonal na command-and-control server, gumagamit ito ng mga GitHub repository bilang mga pampubliko at naka-encrypt na drop box . Hindi lamang ito sumasama sa normal na trapiko ng developer, lalo na sa mga organisasyong puno ng TanStack Query na patuloy na nakikipag-ugnayan sa GitHub, kundi ginagawang mas kumplikado rin ang pagtanggal.
Una, hinahanap ng script ang pampublikong kasaysayan ng commit ng GitHub para sa mga mensaheng tumutugma sa isang partikular na pattern na nag-e-encode ng isang naka-encrypt na token sa loob ng teksto ng mensahe ng commit. Pagkatapos ay idi-decrypt nito ang token na iyon upang mabawi ang isang kredensyal ng GitHub, na ginagamit nito upang lumikha ng isang bagong repository para sa bawat biktima . Nangangahulugan ito na ang ninakaw na data mula sa isang makina ay napupunta sa ilalim ng isang ganap na naiiba at nakompromiso nang account, na lalong nagpapagulo sa attribution.
Ang bawat imbakan ng exfiltration ay pinangalanan ng pagsasama-sama ng mga random na pangalan ng karakter ng Touhou Project na may panlapi na numero (Halimbawa, cirno-marisa-74291), at ang paglalarawan nito ay nakatakda sa sariling tagline ng malware, “Trinitite: Sponsored by Preview 2 Effects.” Sa loob ng mga repo na ito, ang script ay nagko-commit ng mga JSON file na pinangalanang tulad ng doubletrinnys-{counter}-{timestamp}.json sa loob a results/ folder.
Ang layout ng JSON ay simple ngunit maingat na naka-encrypt: mayroon itong envelope naglalaman ng karamihan ng mga ninakaw na kredensyal at isang key field na may session key na naka-encrypt sa pamamagitan ng pampublikong RSA key ng attacker. Tinitiyak nito na kahit na teknikal na pampubliko ang mga file, tanging ang isang taong may hawak ng kaukulang pribadong susi ang makakabasa ng mga nilalaman, na nag-iiwan sa mga kaswal na tagamasid at karamihan sa mga automated crawler na hindi makita kung ano ang ninakaw.
Kasabay nito, ang malware ay gumaganap bilang isang bulate. Kapag mayroon itong wastong npm, PyPI, o RubyGems tokens, ito ay Inililista ang bawat pakete na pagmamay-ari ng nakompromisong tagapangalaga at nagpa-publish ng mga bago at nahawaang bersyonAng pattern ng impeksyon ay sumusunod sa parehong pamamaraan na ginamit sa orihinal na TanStack Query code generator compromise: pag-inject ng isang malisyosong binding.gyp, dumadaan 3FWCvzduYZg.js, at pagtulak sa package gamit ang ninakaw na publish token. Inaabuso rin nito ang mga ninakaw na GitHub token para dumaan sa mga accessible na repository, na nagdaragdag ng mga backdoored configuration file sa ilalim ng .vscode, .claude, .github/workflows, at mga katulad na direktoryo, lahat sa ilalim ng mga hindi nakakapinsalang mensahe ng commit tulad ng "chore: update dependencies".
Ang mala-uod na pag-uugaling ito ay lubos na nagpapalakas sa radius ng pagsabog. Ang isang organisasyon na gumagamit ng TanStack Query at @7nohe/openapi-react-query-codegen sa CI chain nito ay maaaring hindi sinasadyang maghasik ng malware sa dose-dosenang mga internal na pakete at repositoryo kung ang isang nakompromisong developer o build agent ay maglalathala ng mga bagong release habang nahawaan.
Mga indikasyon ng kompromiso para sa mga gumagamit ng TanStack Query npm
Para sa mga pangkat na umaasa sa TanStack Query at kaugnay na npm tooling, ilang konkretong Ang mga tagapagpahiwatig ng kompromiso (IOC) ay nailathala upang makatulong na matukoy ang pagkakalantadAng mga sumusunod na bersyon ng @7nohe/openapi-react-query-codegen ay nakumpirmang naglalaman ng kargamento ng Trinitite at dapat ituring na hindi mapagkakatiwalaan:
- 0.5.4 at 0.5.5
- 1.6.3 at 1.6.4
- 2.2.1 at 2.2.2
- 3.0.3 at 3.0.4
- Mga Prerelease 0.0.0-365d4eb738d3146583431948d3ba6e27a32556be at 0.0.0-ec7876d6c917dad516ba69bbfafc948b834bf0ab
Anumang anyo ng isang malaki, iisang linyang JavaScript file na pinangalanang 3FWCvzduYZg.js Sa root directory ng isang npm package, mayroong isang malakas na pulang bandila. Maraming SHA-256 hash ng file na iyon ang naidokumento, at maaaring ihambing ng mga administrador ang mga ito sa mga archive ng mga naka-install na pakete o mga naka-cache na tarball sa mga internal na registry upang matukoy ang mga kilalang-sirang kopya.
Sa mga nahawaang sistema, ang mga pansamantalang direktoryo ay pinangalanan gamit ang isang trinnyyyy- Ang prefix na sinusundan ng anim na random na alphanumeric character sa OS temp folder ay maaari ring magpahiwatig ng nakaraang pagpapatupad. Ginagamit ang mga direktoryong ito kapag pag-download at pag-stage ng Bun runtime na kinakailangan ng inner payload.
Higit pa sa partikular na generator package, dapat suriin ng mga organisasyon ang npm audit data, mga internal package mirror, at mga CI log para sa hindi inaasahan binding.gyp mga file o biglaang paglitaw ng preinstall Hooks sa mga pakete na dating hindi umaasa sa mga native addon o lifecycle script. Sa konteksto ng TanStack Query, karaniwang nangangahulugan ito ng masusing pagtingin sa anumang code-generation o OpenAPI integration tooling na nakakonekta sa React, Vue, o iba pang frontend.
Panghuli, ang aktibidad ng GitHub ay sulit na suriin. Mga repositoryo na may mga deskripsyon na tumutugma sa "Trinitite: Sponsored by Preview 2 Effects", o may results/doubletrinnys-*.json mga file at mga mensahe ng commit tulad ng "meow meow meow", dapat imbestigahan bilang mga potensyal na endpoint ng exfiltration na nauugnay sa nakompromisong paggamit ng npm ng TanStack Query.
Ang magagawa ngayon ng mga pangkat na maraming tanong tungkol sa TanStack Query
Para sa karamihan ng mga organisasyon, ang unang hakbang ay ang imbentaryo kung saan at paano ginagamit ang TanStack Query at ang mga nakapalibot na npm tooling nitoDahil ang nakompromisong pakete ay bumubuo ng mga hook na partikular para sa @tanstack/react-query, may posibilidad itong lumitaw sa mga proyektong may malakas na pagta-type at awtomatikong mga pipeline ng pagbuo ng kliyente ng OpenAPI, na kadalasang direktang nakakonekta sa CI.
Dapat beripikahin ng mga pangkat kung mayroon man sa mga nakalistang malisyosong bersyon ng @7nohe/openapi-react-query-codegen ay kailanman naroroon sa package-lock.json, pnpm-lock.yaml, O yarn.lock mga file, o hinila papunta sa mga dependency tree sa pamamagitan ng mga transitive dependencies. Kahit na hindi na naka-install ang package, ang dating paggamit sa mga build agent ay maaaring mangailangan ng mas malalim na imbestigasyon.
Kung saan pinaghihinalaan ang kompromiso, dapat na tumuon ang isang kasabay na pagsisikap sa umiikot na mga token at kredensyal na kinukuha ng malwareKasama rito ang mga personal access token ng GitHub, mga npm publish token, mga cloud access key, at anumang pangmatagalang sikretong nakaimbak sa mga environment variable o plaintext config file sa mga CI runner. Karaniwang naglo-log ang mga cloud provider sts:GetCallerIdentity at mga katulad na tawag, na makakatulong na paliitin ang panahon ng pagkakalantad.
Ang mga tool sa seguridad ng supply-chain na dalubhasa sa pag-scan ng malware para sa mga npm package ay makakatulong na matuklasan ang mga impeksyong hindi nagagamit ng mga tradisyonal na vulnerability scanner. Inuuri na ng ilang platform ang kampanyang ito bilang isang kritikal, 100/100 na isyu ng malware na may kalubhaan at nagbibigay ng gabi-gabing rescan o on-demand na pagsusuri para sa mga repository na umaasa sa TanStack Query at mga kaugnay na dependency.
Sa hinaharap, ang mga organisasyong lubos na umaasa sa TanStack Query, @tanstack/react-query, O @tanstack/vue-query maaaring gusto ng mga nasa produksyon na palakasin ang mga guardrail sa paligid ng pag-install ng pakete. Maaaring kasama rito ang mga proxy registry na humaharang sa mga kilalang-masamang bersyon, mga tool na humaharang sa mga utos tulad ng npm install or pnpm add at mga pakete ng cross-check laban sa mga feed ng threat intelligence, at mas mahigpit na paggamit ng pinagmulan at pag-verify ng lagda—na may paalala na ang mga nakompromisong CI pipeline ay maaari pa ring makagawa ng mga "wastong" pagpapatunay, gaya ng nakikita rito.
Habang lalong nagiging pamantayan ang mga frontend stack sa mga library tulad ng TanStack Query para sa pagkuha at pag-cache ng data, malamang na patuloy na susuriin ng mga attacker ang nakapalibot na ecosystem ng mga generator, CLI, at plugin na inilathala sa npm . Binibigyang-diin ng insidenteng ito kung paano ang isang tila makitid na utility package—isa na naglalabas lamang ng mga TanStack Query hook mula sa isang OpenAPI file—ay maaaring maging isang high-impact entry point sa mga build system, monorepos, at cloud infrastructure kapag hindi nabantayan.
Ang pagkakatuklas sa kampanya ng mga Trinitita laban sa @7nohe/openapi-react-query-codegen itinatampok kung paano Ang mga sikat na npm package na nakatali sa paggamit ng TanStack Query ay maaaring tahimik na maging mga supply-chain attack vector kapag nakompromiso ang kanilang mga daloy ng trabaho sa paglabas. Sa pamamagitan ng pag-abuso binding.gyp, mga na-obfuscate na JavaScript loader, at GitHub-based exfiltration, nagawang itago ng mga attacker ang isang malawakang magnanakaw ng kredensyal sa loob ng isang tool na itinuturing ng maraming team bilang routine plumbing. Para sa mga organisasyong umaasa sa TanStack Query sa React at iba pang frontend, ang pagpapahigpit ng npm hygiene, pagsubaybay para sa mga kahina-hinalang lifecycle script, at pagpapatigas ng mga CI pipeline sa paligid ng OpenAPI at query-codegen tooling ay hindi na opsyonal na mga extra kundi bahagi na ng core risk model.