Üks JavaScripti pakettide arendajatest viis läbi eksperiment, luues ja avaldades NPM hoidlas paketi "everything", mis hõlmab sõltuvusi kõigist olemasolevatest pakettidest hoidlas. Selle võimaluse rakendamiseks on pakett "everything" seotud otseviidatud sõltuvustega viie paketi "@everything-registry/chunk-N" kaudu, mis omakorda on seotud rohkem kui 3000 pakettiga "sub-chunk-N", millest igaühes on seotud 800 olemasolevat paketti hoidlas.
"Everything" avaldamine NPM-is tõi kaasa kaks huvitavat efekti. Esiteks muutus pakett "everything" tõeliseks tööriistaks DoS-rünnakute teostamiseks, kuna selle installimise katse toob kaasa miljonite NPM-is avaldatud pakettide allalaadimise, mis viib olemasoleva kõvakettaruumi ammendumiseni või koostamisprotsesside peatamiseni. Statistika kohaselt on NPM-paketti alla laaditud umbes 250 korda, kuid keegi ei takista selle lisamist teiste pakettide sõltuvustesse pärast arendaja konto häkkimist rünnaku sooritamiseks. Lisaks said mõttetult rünnaku ohvriks mõned teenused ja tööriistad, mis teostavad NPM-is uute pakettide jälgimist ja kontrollimist.
Teiseks, paketi "everything" avaldamine tõkestas tegelikult kõikide NPM-i pakettide kustutamise, mis olid selle sõltuvuste loendis. NPM-i paketti saab autori poolt kustutada ainult siis, kui seda ei kasutata teiste pakettide sõltuvustes, kuid pärast "everything" avaldamist olid kõik pakettide sõltuvused hõlmatud. Huvitav on see, et ka paketi "everything" enda kustutamine osutus takistamatuks, kuna 9 aastat tagasi avaldati hoidlas testpakett "everything-else", milles oli loetletud "everything" sõltuvuste loendis. Seega, pärast avaldamist leidis pakett "everything" end teise paketi sõltuvustest.
Allikas: opennet.ru
