En av utvecklarna av JavaScript-paket genomförde ett experiment med att skapa och publicera ett paket i NPM-repositoriet som heter "everything", vilket inkluderar beroenden till alla existerande paket i repositoriet. För att möjliggöra detta paket Àr "everything" direkt beroende av fem paket "@everything-registry/chunk-N", som i sin tur Àr bundna till över 3000 paket "sub-chunk-N", dÀr varje paket har bindningar till 800 existerande paket i repositoriet.
Publiceringen av "everything" i NPM ledde till tvÄ intressanta effekter. För det första blev paketet "everything" ett slags verktyg för att genomföra DoS-attacker, dÄ installationen av det leder till nedladdning av miljontals paket hostade pÄ NPM och kan resultera i uttömning av tillgÀngligt lagringsutrymme eller stopp av byggprocesser. Statistik visar att NPM-paketet har laddats ner cirka 250 gÄnger, men ingen hindrar att det lÀggs till som ett beroende i ett annat paket efter att en utvecklarkonto har hackats för att utföra en attack. Dessutom blev vissa tjÀnster och verktyg för övervakning och kontroll av nya paket som publiceras i NPM, ofrivilligt utsatta för attacken.
För det andra blockerade publiceringen av paketet "everything" faktiskt möjligheten att ta bort nÄgra paket i NPM som blivit listade som dess beroenden. Ett paket i NPM kan endast tas bort av författaren om det inte anvÀnds i beroenden av andra paket, men efter publiceringen av "everything" inkluderades alla paket i repositoriet som beroenden. AnmÀrkningsvÀrt Àr att Àven borttagning av sjÀlva paketet "everything" ocksÄ blev blockerad, eftersom ett testpaket "everything-else" publicerades i repositoriet för 9 Är sedan, dÀr "everything" listades bland beroenden. DÀrmed hamnade paketet "everything" i beroenden hos ett annat paket efter publiceringen.
KĂ€lla: opennet.ru
