Փորձեք ստեղծել NPM փաթեթ, որը կախված է պահոցի բոլոր փաթեթներից

JavaScript փաթեթների մշակողներից մեկը փորձարկեց ստեղծելով և NPM պահոցում տեղադրելով «ամեն ինչ» փաթեթը, որը ծածկում է պահեստում առկա բոլոր փաթեթները կախվածություններով: Այս ֆունկցիան իրականացնելու համար «ամեն ինչ» փաթեթն ունի ուղիղ կախվածություն հինգ «@everything-registry/chunk-N» փաթեթներով, որոնք իրենց հերթին կախվածություն ունեն ավելի քան 3000 «sub-chunk-N» փաթեթներից, որոնցից յուրաքանչյուրը կապված է Պահեստում առկա 800 փաթեթ:

«Ամեն ինչ» NPM-ում տեղադրելը երկու հետաքրքիր ազդեցություն ունեցավ. Նախ, «ամեն ինչ» փաթեթը դարձել է DoS հարձակումներ իրականացնելու մի տեսակ գործիք, քանի որ այն տեղադրելու փորձը հանգեցնում է NPM-ում տեղակայված միլիոնավոր փաթեթների ներբեռնմանը և սկավառակի առկա տարածքի սպառմանը կամ կառուցման գործընթացների կատարմանը դադարեցմանը: Ըստ NPM վիճակագրության, փաթեթը ներբեռնվել է մոտ 250 անգամ, բայց ոչ ոք չի անհանգստանում այն ​​որպես կախվածություն ավելացնել մեկ այլ փաթեթի վրա այն բանից հետո, երբ ծրագրավորողի հաշիվը կոտրվել է դիվերսիա կատարելու համար: Բացի այդ, որոշ ծառայություններ և գործիքներ, որոնք վերահսկում և ստուգում են NPM-ի կողմից տեղակայված նոր փաթեթները, ակամա ենթարկվել են հարձակման:

Երկրորդ, «ամեն ինչ» փաթեթի հրապարակումը փաստացի արգելափակեց NPM-ում ցանկացած փաթեթ հեռացնելու հնարավորությունը, որոնք հայտնվել էին նրա կախվածությունների ցանկում: NPM-ից փաթեթը կարող է հեռացվել հեղինակի կողմից միայն այն դեպքում, եթե այն արդեն չի օգտագործվում այլ փաթեթների կախվածության մեջ, բայց «ամեն ինչի» հրապարակումից հետո պարզվեց, որ կախվածությունը ծածկում է պահեստի բոլոր փաթեթները: Հատկանշական է, որ ինքնին «ամեն ինչ» փաթեթի հեռացումը նույնպես արգելափակվել է, քանի որ 9 տարի առաջ պահոցում տեղադրվել է «ամեն ինչ-այլ» թեստային փաթեթ, որը կախվածության ցանկում ներառել է «ամեն ինչ» տողը։ Այսպիսով, հրապարակումից հետո «ամեն ինչ» փաթեթը կախվածության մեջ հայտնվեց մեկ այլ փաթեթից։

Source: opennet.ru

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