Një nga zhvilluesit e paketave JavaScript realizoi një eksperiment për të krijuar dhe publikuar në repozitorin një paketë NPM 'everything', e cila mbulon si varësi të gjitha paketat ekzistuese në repozitor. Për të realizuar një mundësi të tillë, paketa 'everything' lidhet me varësi të drejtpërdrejta me pesë paketa '@everything-registry/chunk-N', të cilat nga ana e tyre lidhen me më shumë se 3000 paketa 'sub-chunk-N', në secilën prej të cilave bëhet lidhja me 800 paketat ekzistuese në repozitor.
Vendosja e «everything» në NPM ka sjellë dy efekte interesante. E para, paketa «everything» është bërë një mjet për sulme DoS, pasi përpjekja për ta instaluar e çon në shkarkimin e miliona paketimeve të vendosura në NPM dhe shterimin e hapësirës diskore ekzistuese ose ndalimin e proceseve të ndërtimit. Sipas statistikave, paketa NPM është shkarkuar rreth 250 herë, por askush nuk pengon shtimin e saj si varësi në një paketë tjetër pas hakerimit të llogarisë së zhvilluesit për të kryer një divershon. Për më tepër, ndodhur pa dashje, disa shërbime dhe mjete që kryejnë monitorimin dhe kontrollin e paketimeve të reja të vendosura në NPM kanë qenë të ekspozuara ndaj këtij sulmi.
Së dyti, publikimi i paketës «everything» në fakt e bllokoi mundësinë e fshirjes së çdo pakete në NPM, që ndodhej në listën e varësive të saj. Një paketë në NPM mund të fshihet nga autori vetëm nëse nuk po përdoret në varësitë e paketave të tjera, por pas publikimit të «everything», varësitë përfshinë të gjitha paketat në depo. Vlen të përmendet se fshirja e vetë paketës «everything» gjithashtu rezultoi e bllokuar, pasi 9 vjet më parë në depo u publikua një paketë testuese «everything-else», në të cilën ishte specifikuar rreshti «everything» në listën e varësive. Pra, paketa «everything» pas publikimit përfundoi në varësitë e një pakete tjetër.
Burimi: opennet.ru
