Preizkusite z ustvarjanjem paketa NPM, ki je odvisen od vseh paketov v repozitoriju

Eden od razvijalcev paketov JavaScript je eksperimentiral z ustvarjanjem in umestitvijo v repozitorij NPM paketa »vse«, ki zajema vse obstoječe pakete v repozitoriju z odvisnostmi. Za izvedbo te funkcije ima paket »vse« neposredno odvisnost od petih paketov »@everything-registry/chunk-N«, ti pa so odvisni od več kot 3000 paketov »sub-chunk-N«, od katerih se vsak veže na 800 obstoječih paketov v repozitoriju.

Umestitev »vsega« v NPM je imela dva zanimiva učinka. Prvič, paket “vse” je postal nekakšno orodje za izvajanje napadov DoS, saj poskus njegove namestitve vodi do prenosa milijonov paketov, ki gostujejo v NPM, in izčrpanja razpoložljivega prostora na disku ali ustavitve izvajanja gradbenih procesov. Po statističnih podatkih NPM je bil paket prenesen približno 250-krat, vendar se nihče ne trudi, da bi ga dodal kot odvisnost drugemu paketu, potem ko je bil račun razvijalca vlomljen zaradi sabotaže. Poleg tega so bile nekatere storitve in orodja, ki spremljajo in preverjajo nove pakete, ki jih gosti NPM, nehote izpostavljene napadom.

Drugič, objava paketa »vse« je dejansko blokirala možnost odstranitve vseh paketov v NPM, ki so se znašli na njegovem seznamu odvisnosti. Paket iz NPM lahko avtor odstrani le, če še ni uporabljen v odvisnostih drugih paketov, vendar se je po objavi »vsega« izkazalo, da odvisnosti pokrivajo vse pakete v repozitoriju. Omeniti velja, da je bila blokirana tudi odstranitev samega paketa »vse«, saj je bil pred 9 leti v skladišču objavljen testni paket »vse ostalo«, ki je na seznamu odvisnosti vključeval niz »vse«. Tako je po objavi paket »vse« postal odvisen od drugega paketa.

Vir: opennet.ru

Dodaj komentar