Κατά τη διάρκεια των εορτών, το μητρώο πακέτων npm πλημμύρισε με περισσότερα από 3.000 πακέτα, συμπεριλαμβανομένου ενός που ονομάζεται “όλα” και άλλα ονόμασαν μια παραλλαγή της λέξης.
Το
πακέτο ονομάζεται πολύ εύστοχα, καθώς η λήψη του “όλα” θα αρχίσει σταδιακά
κάθε πακέτο npm
που έχει δημοσιευτεί ποτέ στο μητρώο npmjs.com στον υπολογιστή σας, με αποτέλεσμα να εξαντληθεί ο αποθηκευτικός χώρος. Όμως, αυτή είναι μόνο η κορυφή του παγόβουνου.
Αν ρωτάτε, “Αλλά ποιος θα εγκαταστήσει τα “όλα”;—αυτό αγνοεί μια μεγαλύτερη παρενέργεια του πακέτου.
Αφού αυτά τα 3.000+ πακέτα τα καταφέρνουν
περιλαμβάνω
κάθε πακέτο npm στο μητρώο npmjs.com ως εξάρτησή τους, οι συντάκτες πακέτων npm που έχουν ποτέ δημοσιεύσει στο μητρώο npm δεν θα μπορούν πλέον να αφαιρέσουν τα πακέτα τους κατά βούληση, λόγω της πολιτικής του npm.
τα παντα
σας εμποδίζει να καταργήσετε τη δημοσίευση των πακέτων σας
Αυτό που μπορεί να ξεκίνησε ως μια απλή φάρσα, κατέληξε να έχει μεγαλύτερο αντίκτυπο για όλους τους συγγραφείς σε όλο το οικοσύστημα npm.
Εγκατάσταση
τα παντα
θα μπορούσε απλώς να είχε προκαλέσει τον υπολογιστή σας να μην έχει αποθηκευτικό χώρο και να επιβραδύνει, αλλά η απλή ύπαρξη του πακέτου στο npmjs.com αποτρέπει τους δημιουργούς, που δεν σχετίζονται με αυτό το πακέτο, να καταργήσουν τη δημοσίευση των πακέτων τους από το μεγαλύτερο μητρώο λογισμικού JavaScript στον κόσμο.
Το πακέτο “όλα” έχει μόλις 5 υποπακέτα, δημοσιευμένα με το πεδίο “@everything-registry”, που αναφέρονται ως εξαρτήματά του, παρατήρησε η BleepingComputer.

Το “Everything” και οι πολλές εξαρτήσεις του ανακτούν κάθε πακέτο npm από το μητρώο
(BleepingComputer)
Αυτά τα 5 πακέτα, ωστόσο, καταφέρνουν σταδιακά να τραβήξουν κάθε πακέτο που υπάρχει σε ολόκληρο το μητρώο ως εξάρτηση. Για παράδειγμα, το “Everything” τραβάει το “@everything-registry/chunk-2”, το οποίο μπορεί να επιχειρήσει περαιτέρω να τραβήξει πολλά άλλα πακέτα από τον ίδιο συγγραφέα, όπως το “@everything-registry/sub-chunk-1623.”
Κάθε ένα από αυτά τα υποπακέτα (ή “κομμάτια” όπως τα αποκαλεί ο συγγραφέας), περιλαμβάνει τελικά έργα περίπου 800 npm ως εξάρτησή τους.

3000+ πακέτα που αντλούν τα πάντα από το μητρώο npmjs.com
Λαμβάνοντας υπόψη ότι ο συγγραφέας του “όλων” έχει δημοσιεύσει 3.000 συν τέτοια πακέτα (κομμάτια), το καθένα με εκατοντάδες εξαρτήσεις, ένα μόνο
“npm εγκατάσταση όλων”.
Η εντολή θα αρχίσει να επιλύει, αυτό που αναφέρεται ως μεταβατικές εξαρτήσεις και θα καταλήξει να κατεβάζει εκατομμύρια πακέτα.
gdi2290
aka
PatrickJS
ποιος βρίσκεται πίσω από αυτή τη φάρσα
ζήτησε συγγνώμη
για “οποιεσδήποτε δυσκολίες έχει προκαλέσει αυτό το πακέτο” και επικοινώνησε με τους διαχειριστές του npm για να διορθώσει το πρόβλημα.

ο συγγραφέας ζητά συγγνώμη
(Checkmarx)
“Φανταστείτε ότι κάνατε ένα πείραμα, δημοσιεύσατε ένα πακέτο στο NPM και τώρα θέλετε να καταργήσετε το πακέτο NPM. Δεν μπορείτε να το κάνετε εάν το χρησιμοποιούν άλλα πακέτα.”
γράφει
Jossef Harush,
Επικεφαλής
της
Ασφάλεια
ς Εφοδιαστικής Αλυσίδας Λογισμικού στο Checkmarx στο blog της εταιρείας.
Ο Harush, ο οποίος ονόμασε αυτήν την καμπάνια “κόλαση της εξάρτησης”, δηλώνει περαιτέρω, “Το πρόβλημα είναι, αφού τα “όλα” στηρίζονται σε κάθε πακέτο (συμπεριλαμβανομένου του δικού σας), το πακέτο σας κολλάει και υπάρχει κάποιο άγνωστο πακέτο που σας εμποδίζει να το αφαιρέσετε.”
Ο ερευνητής έκανε συγκρίσεις μεταξύ του «όλα» και του πακέτου «καν
ένας
-αριστερός-πίσω».
δημοσιεύθηκε τον Ιανουάριο του 2023
που προσπάθησε να κάνει το ίδιο κόλπο.
Ακολουθεί αλλαγή πολιτικής npm
αριστερό μαξιλάρι
περιστατικό
Σε αντίθεση με ορισμένα μητρώα λογισμικού ανοιχτού κώδικα όπως το Maven Central, τα οποία είναι
αμετάβλητος
και γενικά εμποδίζουν τους συντάκτες να αφαιρέσουν τα δημοσιευμένα στοιχεία τους, το npm και το PyPI παραδοσιακά επιτρέπουν στους
προγραμματιστές
να διαγράφουν ή να «αναφέρουν» τις εκδόσεις τους κατά βούληση.
Μετά από ένα περιστατικό του 2016 όμως, αυτό συνεπαγόταν
Ο συντάκτης του αριστερού μαξιλαριού αφαιρεί το πακέτο npm του
σε ένδειξη διαμαρτυρίας, και σπάζοντας μεγάλο μέρος του διαδικτύου, το npm τα κατάφερε
πιο δύσκολο
για τους συντάκτες να καταργήσουν τη δημοσίευση των πακέτων.
Μια τέτοια αλλαγή πολιτικής εμπλέκεται
επιτρέποντας στους συγγραφείς να καταργήσουν τη δημοσίευση
πακέτα μόνο εάν κανένα άλλο πακέτο στο μητρώο npm δεν εξαρτάται από αυτό.
Κατά ειρωνικό τρόπο, αυτή η πολιτική άφησε επίσης τον PatrickJS, τον συγγραφέα του “ό,τι” δεν μπορεί να αφαιρέσει εύκολα τα πακέτα φάρσας του, δεδομένης της εκτενώς μεγάλης αλυσίδας εξάρτησης που έχει δημιουργήσει.
Η BleepingComputer παρατήρησε, από σήμερα το πρωί, ενώ τα “όλα” συνεχίζουν να υπάρχουν στο μητρώο, τα χιλιάδες πακέτα εμβέλειας “@everything-registry” που χρησιμοποιούνται από αυτήν έχουν πλέον γίνει ιδιωτικά, επιλύοντας ενδεχομένως το πρόβλημα.
VIA:
bleepingcomputer.com

