
SafeDep-ը գաղտնագրված բեռնիչ է գտել npm-ի mathmain գրադարանում
SafeDep-ի հետազոտողները npm-ի mathmain փաթեթում գաղտնագրված կոդի բեռնիչ են հայտնաբերել։ Այն գաղտնաբառը վերցնում է լուծիչին փոխանցված տվյալներից և կարող է գրել ու գործարկել ֆայլը։
Անվտանգության SafeDep ընկերության հետազոտողները գաղտնագրված կոդի բեռնիչ են հայտնաբերել mathmain npm փաթեթում, որը ներկայանում է որպես մաթեմատիկական գրադարան։ Բեռնիչը գաղտնաբառը վերցնում է գրադարանի մատրիցային լուծիչին փոխանցված տվյալներից․ ճիշտ մուտքային տվյալների դեպքում այն կարող է վերծանել ֆայլը և գործարկել դրա կոդը։ Վերլուծությունը հրապարակվել է սեպտեմբերի 17-ին․ գաղտնագրված բուն կոդը վերծանել չհաջողվեց։
Թաքնված կանչ լուծիչի ներսում
Ուսումնասիրությունը սկսվել է նրանից, որ mathmain-ը նման էր տարածված mathjs գրադարանի վերանվանված ու կոդը թաքցված պատճենի։ Հուշումը CommonJS տարբերակում lusolve()-ի վերջում ավելացված կանչն էր․ արդյունքը հաշվարկելուց հետո լուծիչը ստորին եռանկյուն մատրիցի տվյալները փոխանցում է removeSolveValidation()-ին և վերադարձված արժեքը այլևս չի օգտագործվում։
Այդ կանչը տանում է դեպի isGraph()՝ lib/cjs/utils/is.js ֆայլում։ isGraph()-ը մուտքը դարձնում է JSON տող և օգտագործում այն որպես գաղտնաբառ, base64 բլոկից վերծանում է ֆայլի անունը և գտնված ուղին գաղտնաբառի հետ փոխանցում event() ֆունկցիային, որի արդյունքն անցնում է require()-ին։
scrypt, AES-GCM և գրառում սկավառակի վրա
lib/cjs/utils/event.js-ի ռուտինները scrypt-ով ստանում են 256 բիթանոց բանալի և վերծանում AES-GCM-ով․ յուրաքանչյուր բլոկ ունի 16 բայթ աղ, 12 բայթ սկզբնական վեկտոր, 16 բայթ նույնականացման թեգ և գաղտնագրված տեքստ՝ base64 տեսքով։
Օժանդակ ֆունկցիան վերծանված բայթերը գրում է սկավառակի վրա և վերադարձնում ուղին, որն էլ հետո բեռնվում է, ուստի կոդը գործարկվում է գործընթացի իրավունքներով։ Քանի որ գրելուց առաջ անվանից հանվում է enc_ նախածանցը, այդպիսի նախածանց չունեցող բեռը վերագրում է իր իսկ գաղտնագրված ֆայլը։ lib/cjs/utils/-ի երեք ֆայլ JavaScript-ի փոխարեն base64 տվյալներ են պարունակում՝ graph.js (20 918 բայթ), fraction.js (9 084) և bignumber/type.js (1 179 416)։
Եվս երկու փաթեթ՝ առանց գործարկիչի
Ռեեստրում որոնումը գտավ mathsbase և math-universe փաթեթները, որոնք հինգ տարբերակի ընթացքում կիսում են բեռնիչի ֆայլերը, գործարկիչ կոդը և լուծիչի փոփոխությունները։ [email protected]-ը հրապարակվել է 2026 թվականի օգոստոսի 27-ին, [email protected]-ը՝ սեպտեմբերի 17-ին․ npm-ը լռելյայն դեռ տալիս էր առանց բեռնիչի [email protected]-ն։
Երկու փաթեթների նշած GitHub պահոցներում ուսումնասիրված commit-ներում այդ ավելացված կանչը չկա, ուստի հրապարակային կոդը չի բացատրում թողարկված build-ը։ Հետազոտողները ստուգել են 16 922 հնարավոր գաղտնաբառ գաղտնագրված ֆայլի անվան դեմ և ևս 533՝ հինգ տարբեր բլոկների դեմ, սակայն ոչ մեկը չի անցել նույնականացման ստուգումը։ Աշխատանքային վարկածն այն է, որ փաթեթները ապագա հարձակման բեռ են պահում, որը կմատուցի առանձին փաթեթ․ այդպիսին դեռ չի գտնվել, և տվյալների գողությունը կամ սերվերի հետ կապը դեռ ապացուցված չէ։
SiTech — AI-ով հզորացված վեբ մշակում
Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։