Eksperimenteer met die skep van 'n NPM-pakket wat afhanklik is van alle pakkette in die bewaarplek

Een van die ontwikkelaars van JavaScript-pakkette het geëksperimenteer met die skep en plaas in die NPM-bewaarplek die "alles"-pakket, wat alle bestaande pakkette in die bewaarplek met afhanklikhede dek. Om hierdie kenmerk te implementeer, het die "alles"-pakket direkte afhanklikhede met vyf "@everything-registry/chunk-N"-pakkette, wat op hul beurt afhanklikhede het van meer as 3000 "sub-chunk-N"-pakkette, wat elk bind aan 800 bestaande pakkette in die bewaarplek.

Die plasing van "alles" in NPM het twee interessante gevolge gehad. Eerstens het die "alles"-pakket 'n soort hulpmiddel geword om DoS-aanvalle uit te voer, aangesien 'n poging om dit te installeer lei tot die aflaai van miljoene pakkette wat in NPM gehuisves word en die beskikbare skyfspasie uitput of die uitvoering van bouprosesse stop. Volgens NPM-statistieke is die pakket sowat 250 keer afgelaai, maar niemand doen die moeite om dit as 'n afhanklikheid by 'n ander pakket te voeg nadat die ontwikkelaar se rekening gekap is om sabotasie te pleeg nie. Daarbenewens is sommige dienste en gereedskap wat nuwe pakkette monitor en kontroleer wat deur NPM aangebied word, onbewustelik aan aanvalle blootgestel.

Tweedens, die publisering van die "alles"-pakket het effektief die vermoë geblokkeer om enige pakkette in NPM te verwyder wat in sy lys van afhanklikhede beland het. 'n Pakket van NPM kan slegs deur die outeur verwyder word as dit nie reeds in die afhanklikhede van ander pakkette gebruik word nie, maar na die publikasie van "alles" het die afhanklikhede geblyk alle pakkette in die bewaarplek te dek. Dit is opmerklik dat die verwydering van die "alles"-pakket self ook geblokkeer is, aangesien 9 jaar gelede 'n toetspakket "alles-anders" in die bewaarplek geplaas is, wat die string "alles" in die lys van afhanklikhede ingesluit het. Dus, na publikasie, was die "alles" pakket uiteindelik afhanklik van 'n ander pakket.

Bron: opennet.ru

Voeg 'n opmerking