Eksperimentirajte sa stvaranjem NPM paketa koji ovisi o svim paketima u repozitoriju

Jedan od programera JavaScript paketa eksperimentirao je sa stvaranjem i postavljanjem u NPM repozitorij paketa “sve”, koji pokriva sve postojeće pakete u repozitoriju sa ovisnostima. Za implementaciju ove značajke, paket “sve” ima izravne ovisnosti s pet paketa “@everything-registry/chunk-N”, koji zauzvrat imaju ovisnosti o više od 3000 paketa “sub-chunk-N”, od kojih se svaki veže na 800 postojećih paketa u repozitoriju.

Smještanje "svega" u NPM imalo je dva zanimljiva učinka. Prvo, paket “sve” postao je svojevrsni alat za izvođenje DoS napada, budući da pokušaj njegove instalacije dovodi do preuzimanja milijuna paketa hostiranih u NPM-u i iscrpljivanja dostupnog prostora na disku ili zaustavljanja izvršavanja procesa izgradnje. Prema statistici NPM-a, paket je preuzet oko 250 puta, ali nitko se ne trudi dodati ga kao ovisnost drugom paketu nakon što je račun programera hakiran radi sabotaže. Osim toga, neki servisi i alati koji prate i provjeravaju nove pakete koje hostira NPM nesvjesno su bili izloženi napadu.

Drugo, objavljivanje paketa “sve” učinkovito je blokiralo mogućnost uklanjanja svih paketa u NPM-u koji su završili na njegovom popisu ovisnosti. Paket iz NPM-a autor može ukloniti samo ako se već ne koristi u ovisnostima drugih paketa, ali se nakon objave “svega” pokazalo da ovisnosti pokrivaju sve pakete u repozitoriju. Važno je napomenuti da je blokirano i samo uklanjanje paketa "sve", budući da je prije 9 godina testni paket "sve ostalo" objavljen u repozitoriju, koji je uključivao niz "sve" na popisu ovisnosti. Tako je nakon objave paket "sve" postao ovisan o drugom paketu.

Izvor: opennet.ru

Dodajte komentar