Το ‘ό,τι’ εμποδίζει τους προγραμματιστές να αφαιρέσουν τα δικά τους πακέτα npm



Κατά τη διάρκεια των εορτών, το μητρώο πακέτων npm πλημμύρισε με περισσότερα από 3.000 πακέτα, συμπεριλαμβανομένου ενός που ονομάζεται “όλα” και άλλα ονόμασαν μια παραλλαγή της λέξης.


πακέτο ονομάζεται πολύ εύστοχα, καθώς η λήψη του “όλα” θα αρχίσει σταδιακά

κάθε πακέτο npm

που έχει δημοσιευτεί ποτέ στο μητρώο npmjs.com στον υπολογιστή σας, με αποτέλεσμα να εξαντληθεί ο αποθηκευτικός χώρος. Όμως, αυτή είναι μόνο η κορυφή του παγόβουνου.

Αν ρωτάτε, “Αλλά ποιος θα εγκαταστήσει τα “όλα”;—αυτό αγνοεί μια μεγαλύτερη παρενέργεια του πακέτου.

Αφού αυτά τα 3.000+ πακέτα τα καταφέρνουν

περιλαμβάνω

κάθε πακέτο npm στο μητρώο npmjs.com ως εξάρτησή τους, οι συντάκτες πακέτων npm που έχουν ποτέ δημοσιεύσει στο μητρώο npm δεν θα μπορούν πλέον να αφαιρέσουν τα πακέτα τους κατά βούληση, λόγω της πολιτικής του npm.


τα παντα

σας εμποδίζει να καταργήσετε τη δημοσίευση των πακέτων σας

Αυτό που μπορεί να ξεκίνησε ως μια απλή φάρσα, κατέληξε να έχει μεγαλύτερο αντίκτυπο για όλους τους συγγραφείς σε όλο το οικοσύστημα npm.

Εγκατάσταση

τα παντα

θα μπορούσε απλώς να είχε προκαλέσει τον υπολογιστή σας να μην έχει αποθηκευτικό χώρο και να επιβραδύνει, αλλά η απλή ύπαρξη του πακέτου στο npmjs.com αποτρέπει τους δημιουργούς, που δεν σχετίζονται με αυτό το πακέτο, να καταργήσουν τη δημοσίευση των πακέτων τους από το μεγαλύτερο μητρώο λογισμικού JavaScript στον κόσμο.

Το πακέτο “όλα” έχει μόλις 5 υποπακέτα, δημοσιευμένα με το πεδίο “@everything-registry”, που αναφέρονται ως εξαρτήματά του, παρατήρησε η BleepingComputer.

Κλήση πακέτου npm "τα παντα" προσπαθεί να εγκαταστήσει κάθε πακέτο στο μητρώο npm

Το “Everything” και οι πολλές εξαρτήσεις του ανακτούν κάθε πακέτο npm από το μητρώο


(BleepingComputer)

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

Κάθε ένα από αυτά τα υποπακέτα (ή “κομμάτια” όπως τα αποκαλεί ο συγγραφέας), περιλαμβάνει τελικά έργα περίπου 800 npm ως εξάρτησή τους.

3000+ πακέτα που αντλούν τα πάντα από το μητρώο npmjs.com

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


Follow TechWar.gr on Google News