Esperimento per la creazione di un pacchetto NPM dipendente da tutti i pacchetti nel repository

Uno degli sviluppatori di pacchetti JavaScript ha condotto un esperimento per creare e pubblicare nel repository NPM un pacchetto "everything", che copre tutte le dipendenze di tutti i pacchetti esistenti nel repository. Per realizzare questa possibilità, il pacchetto "everything" è collegato tramite dipendenze dirette a cinque pacchetti "@everything-registry/chunk-N", che a loro volta si collegano tramite dipendenze a oltre 3000 pacchetti "sub-chunk-N", ognuno dei quali è collegato a 800 pacchetti esistenti nel repository.

La pubblicazione di "everything" su NPM ha portato a due effetti interessanti. In primo luogo, il pacchetto "everything" è diventato un vero e proprio strumento per eseguire attacchi DoS, poiché il tentativo di installarlo comporta il caricamento di milioni di pacchetti ospitati su NPM, esaurendo lo spazio su disco disponibile o fermando l'esecuzione dei processi di compilazione. Secondo le statistiche, il pacchetto NPM è stato scaricato circa 250 volte, ma nessuno impedisce di aggiungerlo come dipendenza a un altro pacchetto dopo che l'account dello sviluppatore è stato compromesso per eseguire una divergenza. Inoltre, alcune piattaforme e strumenti che monitorano e verificano i nuovi pacchetti pubblicati su NPM sono stati involontariamente colpiti dall'attacco.

In secondo luogo, la pubblicazione del pacchetto "everything" ha di fatto bloccato la possibilità di rimuovere qualsiasi pacchetto in NPM che si trovasse nell'elenco delle sue dipendenze. Un pacchetto su NPM può essere rimosso dall'autore solo se non è già utilizzato nelle dipendenze di altri pacchetti, ma dopo la pubblicazione di "everything", tutte le dipendenze hanno coperto tutti i pacchetti nel repository. È interessante notare che la rimozione dello stesso pacchetto "everything" è stata anch'essa bloccata, poiché 9 anni fa è stato pubblicato un pacchetto di test "everything-else", in cui era presente la stringa "everything" nell'elenco delle dipendenze. Così, il pacchetto "everything" dopo la pubblicazione si è trovato come dipendenza di un altro pacchetto.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster