OpenSSF-ը (Open Source Security Foundation), որը ձևավորվել է Linux Foundation-ի կողմից և ուղղված է բաց կոդով ծրագրային ապահովման անվտանգության բարելավմանը, ներկայացրել է Package Analysis բաց նախագիծը, որը մշակում է փաթեթներում վնասակար կոդի առկայության վերլուծության համակարգ: Ծրագրի կոդը գրված է Go-ում և տարածվում է Apache 2.0 լիցենզիայի ներքո: Առաջարկվող գործիքների օգտագործմամբ NPM և PyPI պահեստների նախնական սկանավորումը թույլ տվեց մեզ բացահայտել ավելի քան 200 նախկինում չհայտնաբերված վնասակար փաթեթներ:
Հայտնաբերված խնդրահարույց փաթեթների մեծ մասը շահարկում է անունների խաչմերուկը նախագծերի ներքին ոչ հրապարակային կախվածությունների հետ (կախվածության շփոթության գրոհ) կամ օգտագործում է typosquatting մեթոդներ (նշանակում է անուններ, որոնք նման են հանրաճանաչ գրադարանների անուններին), ինչպես նաև կանչում են սկրիպտներ, որոնք մուտք են գործում արտաքին հոսթինգներ ընթացքում: տեղադրման գործընթացը: Ըստ Package Analysis-ի մշակողների, հայտնաբերված խնդրահարույց փաթեթների մեծ մասը, ամենայն հավանականությամբ, ստեղծվել են անվտանգության հետազոտողների կողմից, ովքեր մասնակցում են bug bounty ծրագրերին, քանի որ ուղարկված տվյալները սահմանափակվում են օգտագործողի և համակարգի անունով, և գործողությունները կատարվում են բացահայտ, առանց փորձերի: թաքցնել իրենց պահվածքը.
Վնասակար գործողություններով փաթեթները ներառում են.
- PyPI փաթեթ discordcmd, որը գրանցում է ոչ տիպիկ հարցումների ուղարկումը raw.githubusercontent.com, Discord API և ipinfo.io հասցեներին: Նշված փաթեթը ներբեռնել է ետնադռան կոդը GitHub-ից և տեղադրել այն Discord Windows-ի հաճախորդների գրացուցակում, որից հետո սկսել է ֆայլային համակարգում Discord նշանների որոնման և հարձակվողների կողմից վերահսկվող արտաքին Discord սերվերին ուղարկելու գործընթացը:
- Colorsss NPM փաթեթը նաև փորձել է դիսկորդ հաշիվից նշաններ ուղարկել արտաքին սերվեր:
- NPM փաթեթ @roku-web-core/ajax - տեղադրման գործընթացում այն ուղարկեց տվյալներ համակարգի մասին և գործարկեց մշակիչ (հակադարձ կեղև), որն ընդունում էր արտաքին կապերը և գործարկում հրամանները:
- PyPI փաթեթ գաղտնի երեք - գործարկել է հակադարձ կեղև հատուկ մոդուլ ներմուծելիս:
- NPM փաթեթ random-vouchercode-generator - գրադարանը ներմուծելուց հետո այն հարցում է ուղարկել արտաքին սերվեր, որը վերադարձրել է հրամանը և այն ժամանակը, երբ այն պետք է գործարկվի:
Փաթեթների վերլուծության աշխատանքը հանգում է կոդերի փաթեթների վերլուծությանը ելակետային կոդում՝ ցանցային կապեր հաստատելու, ֆայլեր մուտք գործելու և հրամաններ գործարկելու համար: Բացի այդ, փաթեթների վիճակի փոփոխությունները վերահսկվում են՝ ի սկզբանե անվնաս ծրագրաշարի թողարկումներից մեկում վնասակար ներդիրների ավելացումը որոշելու համար: Պահեստներում նոր փաթեթների տեսքը վերահսկելու և նախկինում տեղադրված փաթեթներում փոփոխություններ կատարելու համար օգտագործվում է Package Feeds գործիքակազմը, որը միավորում է աշխատանքը NPM, PyPI, Go, RubyGems, Packagist, NuGet և Crate պահեստների հետ:
Փաթեթի վերլուծությունը ներառում է երեք հիմնական բաղադրիչ, որոնք կարող են օգտագործվել ինչպես համատեղ, այնպես էլ առանձին.
- Փաթեթների վերլուծության աշխատանքների մեկնարկի ժամանակացույց՝ հիմնված Փաթեթների հոսքերի տվյալների վրա:
- Անալիզատոր, որն ուղղակիորեն ուսումնասիրում է փաթեթը և գնահատում դրա վարքագիծը՝ օգտագործելով ստատիկ վերլուծություն և դինամիկ հետագծման տեխնիկա: Փորձարկումն իրականացվում է մեկուսացված միջավայրում։
- Բեռնիչ, որը թեստի արդյունքները տեղադրում է BigQuery պահեստում:
Source: opennet.ru