Πειραματιστείτε με τη δημιουργία ενός πακέτου NPM που εξαρτάται από όλα τα πακέτα του αποθετηρίου

Ένας από τους προγραμματιστές των πακέτων JavaScript πειραματίστηκε με τη δημιουργία και την τοποθέτηση στο αποθετήριο NPM του πακέτου "ό,τι" το οποίο καλύπτει όλα τα υπάρχοντα πακέτα στο αποθετήριο με εξαρτήσεις. Για την υλοποίηση αυτής της δυνατότητας, το πακέτο "ό,τι" έχει άμεσες εξαρτήσεις με πέντε πακέτα "@everything-registry/chunk-N", τα οποία με τη σειρά τους έχουν εξαρτήσεις από περισσότερα από 3000 πακέτα "sub-chunk-N", καθένα από τα οποία συνδέεται με 800 υπάρχοντα πακέτα στο αποθετήριο.

Η τοποθέτηση των "όλων" στο NPM είχε δύο ενδιαφέροντα αποτελέσματα. Πρώτον, το πακέτο «όλα» έχει γίνει ένα είδος εργαλείου για την εκτέλεση επιθέσεων DoS, αφού μια προσπάθεια εγκατάστασής του οδηγεί στη λήψη εκατομμυρίων πακέτων που φιλοξενούνται στο NPM και στην εξάντληση του διαθέσιμου χώρου στο δίσκο ή στη διακοπή της εκτέλεσης των διαδικασιών κατασκευής. Σύμφωνα με τα στατιστικά στοιχεία του NPM, το πακέτο κατεβάστηκε περίπου 250 φορές, αλλά κανείς δεν μπαίνει στον κόπο να το προσθέσει ως εξάρτηση σε άλλο πακέτο, αφού ο λογαριασμός του προγραμματιστή παραβιάστηκε για να διαπράξει δολιοφθορά. Επιπλέον, ορισμένες υπηρεσίες και εργαλεία που παρακολουθούν και ελέγχουν νέα πακέτα που φιλοξενούνται από το NPM εκτέθηκαν άθελά τους σε επίθεση.

Δεύτερον, η δημοσίευση του πακέτου "όλα" εμπόδισε ουσιαστικά τη δυνατότητα κατάργησης οποιωνδήποτε πακέτων στο NPM που κατέληξαν στη λίστα των εξαρτήσεων του. Ένα πακέτο από το NPM μπορεί να αφαιρεθεί από τον συντάκτη μόνο εάν δεν χρησιμοποιείται ήδη στις εξαρτήσεις άλλων πακέτων, αλλά μετά τη δημοσίευση των "όλων" οι εξαρτήσεις αποδείχθηκαν ότι κάλυπταν όλα τα πακέτα στο αποθετήριο. Αξιοσημείωτο είναι ότι μπλοκαρίστηκε και η αφαίρεση του ίδιου του πακέτου «όλα», αφού πριν από 9 χρόνια αναρτήθηκε στο αποθετήριο ένα δοκιμαστικό πακέτο «όλα τα άλλα», το οποίο περιλάμβανε τη συμβολοσειρά «όλα» στη λίστα των εξαρτήσεων. Έτσι, μετά τη δημοσίευση, το πακέτο «όλα» κατέληξε να εξαρτάται από άλλο πακέτο.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο