Խոցելիություն, որը թույլ է տվել թարմացում թողարկել NPM պահեստի ցանկացած փաթեթի համար

GitHub-ը բացահայտել է երկու միջադեպ իր NPM փաթեթի պահեստային ենթակառուցվածքում: Նոյեմբերի 2-ին երրորդ կողմի անվտանգության հետազոտողները (Kajetan Grzybowski և Maciej Piechota), որպես Bug Bounty ծրագրի մի մաս, զեկուցեցին NPM պահոցում խոցելիության առկայության մասին, որը թույլ է տալիս հրապարակել ցանկացած փաթեթի նոր տարբերակը՝ օգտագործելով ձեր հաշիվը, որը իրավասու չէ կատարել նման թարմացումներ:

Խոցելիությունը առաջացել է NPM-ին ուղղված հարցումները մշակող միկրոծառայությունների կոդում թույլտվության սխալ ստուգումների պատճառով: Թույլտվության ծառայությունը փաթեթի թույլտվության ստուգումներ է իրականացրել հարցումում փոխանցված տվյալների հիման վրա, սակայն մեկ այլ ծառայություն, որը վերբեռնել է թարմացումը պահոց, որոշել է, որ փաթեթը հրապարակվի՝ հիմնվելով վերբեռնված փաթեթի մետատվյալների բովանդակության վրա: Այսպիսով, հարձակվողը կարող է պահանջել հրապարակել իր փաթեթի թարմացումը, որին նա հասանելի է, բայց փաթեթի մեջ նշել մեկ այլ փաթեթի մասին տեղեկատվություն, որն ի վերջո կթարմացվի:

Խնդիրը շտկվել է խոցելիության մասին հաղորդվելուց 6 ժամ անց, սակայն խոցելիությունը NPM-ում եղել է ավելի երկար, քան հեռաչափության մատյանները ծածկում են: GitHub-ը պնդում է, որ 2020 թվականի սեպտեմբերից այս խոցելիության օգտագործմամբ գրոհների հետքեր չեն եղել, սակայն երաշխիք չկա, որ խնդիրը նախկինում չի շահագործվել։

Երկրորդ դեպքը տեղի է ունեցել հոկտեմբերի 26-ին։ Replicate.npmjs.com ծառայության տվյալների բազայի հետ տեխնիկական աշխատանքի ընթացքում պարզվել է արտաքին հարցումներին հասանելի տվյալների բազայում գաղտնի տվյալների առկայություն՝ բացահայտելով փոփոխությունների մատյանում նշված ներքին փաթեթների անվանումների մասին տեղեկություններ։ Նման անունների մասին տեղեկատվությունը կարող է օգտագործվել ներքին նախագծերի վրա կախվածության գրոհներ իրականացնելու համար (փետրվարին նմանատիպ հարձակումը թույլ է տվել կոդը կատարել PayPal, Microsoft, Apple, Netflix, Uber և 30 այլ ընկերությունների սերվերների վրա):

Բացի այդ, խոշոր նախագծերի պահոցների առևանգման և վնասակար կոդի առաջխաղացման դեպքերի աճի պատճառով՝ ծրագրավորողների հաշիվների վտանգի միջոցով, GitHub-ը որոշել է ներմուծել պարտադիր երկգործոն նույնականացում: Փոփոխությունն ուժի մեջ կմտնի 2022 թվականի առաջին եռամսյակից և կտարածվի ամենահայտնի ցանկում ներառված փաթեթների սպասարկողների և ադմինիստրատորների վրա։ Բացի այդ, հաղորդվում է ենթակառուցվածքի արդիականացման մասին, որի շրջանակներում կներդրվի փաթեթների նոր տարբերակների ավտոմատ մոնիտորինգ և վերլուծություն՝ վնասակար փոփոխությունների վաղ հայտնաբերման համար։

Հիշենք, որ 2020 թվականին կատարված ուսումնասիրության համաձայն, փաթեթի սպասարկողների միայն 9.27%-ն է օգտագործում երկգործոն նույնականացում՝ մուտքը պաշտպանելու համար, իսկ 13.37% դեպքերում, երբ նոր հաշիվներ գրանցելիս, ծրագրավորողները փորձել են նորից օգտագործել վտանգված գաղտնաբառերը, որոնք հայտնվել են գաղտնաբառի հայտնի արտահոսք: Գաղտնաբառերի անվտանգության ստուգման ժամանակ NPM հաշիվների 12%-ը (փաթեթների 13%-ը) մուտք է գործել կանխատեսելի և չնչին գաղտնաբառերի օգտագործման պատճառով, ինչպիսին է «123456»: Խնդրահարույցների թվում էին 4 օգտվողի հաշիվներ Թոփ 20 ամենահայտնի փաթեթներից, 13 հաշիվներ փաթեթներով, որոնք ներբեռնվել են ամսական ավելի քան 50 միլիոն անգամ, 40-ը՝ ամսական ավելի քան 10 միլիոն ներբեռնումներով և 282-ը՝ ամսական 1 միլիոնից ավելի ներբեռնումներով: Հաշվի առնելով կախվածությունների շղթայի երկայնքով մոդուլների բեռնումը, անվստահելի հաշիվների խախտումը կարող է ազդել NPM-ի բոլոր մոդուլների մինչև 52%-ի վրա:

Source: opennet.ru

Добавить комментарий