Eksperimentirajte sa kreiranjem NPM paketa koji zavisi od svih paketa u spremištu

Jedan od programera JavaScript paketa eksperimentisao je sa kreiranjem i postavljanjem u NPM repozitorijum paketa „sve“, koji pokriva sve postojeće pakete u spremištu sa zavisnostima. Za implementaciju ove funkcije, paket "sve" ima direktne zavisnosti sa pet "@everything-registry/chunk-N" paketa, koji zauzvrat imaju zavisnosti od više od 3000 "sub-chunk-N" paketa, od kojih se svaki vezuje za 800 postojećih paketa u spremištu.

Stavljanje "svega" u NPM imalo je dva zanimljiva efekta. Prvo, paket „sve“ je postao svojevrsni alat za izvođenje DoS napada, jer pokušaj njegove instalacije dovodi do preuzimanja miliona paketa koji se nalaze u NPM-u i iscrpljivanja raspoloživog prostora na disku ili zaustavljanja izvođenja procesa izgradnje. Prema statistici NPM-a, paket je preuzet oko 250 puta, ali niko se ne trudi da ga doda kao zavisnost od drugog paketa nakon što je račun programera hakiran radi sabotaže. Osim toga, neki servisi i alati koji prate i provjeravaju nove pakete koje hostuje NPM bili su nesvjesno izloženi napadu.

Drugo, objavljivanje paketa "sve" je efektivno blokiralo mogućnost uklanjanja svih paketa u NPM-u koji su završili na njegovoj listi zavisnosti. Paket iz NPM-a autor može ukloniti samo ako se već ne koristi u zavisnostima drugih paketa, ali nakon objavljivanja „svega“ ispostavilo se da zavisnosti pokrivaju sve pakete u spremištu. Važno je napomenuti da je blokirano i uklanjanje samog paketa “sve”, budući da je prije 9 godina u spremište postavljen testni paket “sve-ostalo” koji je uključivao string “sve” u listu ovisnosti. Tako je, nakon objavljivanja, paket „sve“ na kraju zavisio od drugog paketa.

izvor: opennet.ru

Dodajte komentar