Eksperimenter med å lage en NPM-pakke som er avhengig av alle pakkene i depotet

En av utviklerne av JavaScript-pakker eksperimenterte med å lage og plassere "alt"-pakken i NPM-depotet, som dekker alle eksisterende pakker i depotet med avhengigheter. For å implementere denne funksjonen har "alt"-pakken direkte avhengigheter med fem "@everything-registry/chunk-N"-pakker, som igjen har avhengigheter til mer enn 3000 "sub-chunk-N"-pakker, som hver binder seg til 800 eksisterende pakker i depotet.

Å plassere «alt» i NPM hadde to interessante effekter. For det første har "alt"-pakken blitt et slags verktøy for å utføre DoS-angrep, siden et forsøk på å installere den fører til nedlasting av millioner av pakker hostet i NPM og tømmer ut tilgjengelig diskplass eller stopper utførelsen av byggeprosesser. Ifølge NPM-statistikken ble pakken lastet ned omtrent 250 ganger, men ingen gidder å legge den til som en avhengighet til en annen pakke etter at utviklerens konto ble hacket for å begå sabotasje. I tillegg ble noen tjenester og verktøy som overvåker og sjekker nye pakker hostet av NPM, uforvarende utsatt for angrep.

For det andre blokkerte publisering av "alt"-pakken muligheten til å fjerne alle pakker i NPM som havnet på listen over avhengigheter. En pakke fra NPM kan fjernes av forfatteren bare hvis den ikke allerede er brukt i avhengighetene til andre pakker, men etter publiseringen av "alt" viste avhengighetene seg å dekke alle pakkene i depotet. Det er bemerkelsesverdig at fjerningen av selve "alt"-pakken også ble blokkert, siden det for 9 år siden ble lagt ut en testpakke "alt-annet" i depotet, som inkluderte strengen "alt" i listen over avhengigheter. Etter publisering endte dermed "alt"-pakken opp med å være avhengig av en annen pakke.

Kilde: opennet.ru

Legg til en kommentar