Το νέο εργαλείο Python ελέγχει τα πακέτα NPM για προφανή προβλήματα σύγχυσης
Related Posts
Ένας ερευνητής ασφάλειας και ένας διαχειριστής συστήματος έχει αναπτύξει ένα εργαλείο που μπορεί να βοηθήσει τους χρήστες να ελέγξουν για προφανείς αναντιστοιχίες σε πακέτα από το μητρώο λογισμικού NPM JavaScript.
Την περασμένη εβδομάδα, ένας πρώην διευθυντής μηχανικής στο GitHub και στο NPM, ο Darcy Clarke, προειδοποίησε για προβλήματα «προφανούς σύγχυσης» που θα μπορούσαν να δημιουργήσουν τον κίνδυνο απόκρυψης κακόβουλου λογισμικού σε εξαρτήσεις ή εκτέλεσης σεναρίων κατά την εγκατάσταση.
Η “Προφανής σύγχυση” αναφέρεται σε ένα ζήτημα ασφαλείας στο NPM (Node Package Manager), έναν διαχειριστή πακέτων για τη γλώσσα προγραμματισμού JavaScript και το προεπιλεγμένο για το περιβάλλον Node.js.
Το πρόβλημα είναι με τις ασυνεπείς πληροφορίες μεταξύ των δεδομένων δήλωσης ενός πακέτου όπως εμφανίζονται στο μητρώο NPM και των δεδομένων που υπάρχουν στο αρχείο ‘package.json’ του δημοσιευμένου πακέτου.
Ένας κακόβουλος παράγοντας θα μπορούσε να χειραγωγήσει τα δεδομένα δήλωσης ενός νέου πακέτου, εξαλείφοντας ορισμένα σενάρια ή εξαρτήσεις, ώστε να μην εμφανίζονται στο μητρώο NPM.
Ωστόσο, αυτά τα σενάρια ή οι εξαρτήσεις θα εξακολουθούν να υπάρχουν στο αρχείο package.json και θα εκτελούνται κατά την εγκατάσταση του πακέτου, χωρίς να το γνωρίζει ο χρήστης.
Αυτό το πρόβλημα εκθέτει δυνητικά τους προγραμματιστές σε κινδύνους όπως δηλητηρίαση προσωρινής μνήμης, εγκατάσταση άγνωστων εξαρτήσεων, εκτέλεση άγνωστων σεναρίων και πιθανώς ακόμη και επιθέσεις υποβάθμισης.
Δεδομένου ότι το GitHub δεν έχει ακόμη αντιμετωπίσει το πρόβλημα και δεν είναι σαφές τι σχεδιάζει να κάνει η πλατφόρμα, ο Clarke πρότεινε στους συντηρητές πακέτων να αφαιρέσουν την εξάρτηση από τα δεδομένα δήλωσης και να χρησιμοποιήσουν έναν διακομιστή μεσολάβησης μητρώου για να πραγματοποιήσουν ελέγχους συνέπειας δεδομένων.
Έλεγχος φανερής σύγχυσης
Μέχρι να εφαρμοστεί μια λύση, sysadmin
Felix Pankratz
έχει κυκλοφορήσει α
Εργαλείο που βασίζεται σε Python
που μπορεί να βοηθήσει τους προγραμματιστές λογισμικού να ελέγξουν τα πακέτα NPM για ασυνέπειες.
Για να χρησιμοποιήσετε το εργαλείο, εγκαταστήστε πρώτα τον διαχειριστή πακέτων PIP Python με “pip install -r απαιτήσεις.txt”.
Για να επιθεωρήσετε ένα μεμονωμένο πακέτο, περάστε το όνομα του πακέτου στο σενάριο ως πρώτο όρισμα. Για παράδειγμα:
$ ./npm-manifest-check.py darcyclarke-manifest-pkg
Η έξοδος θα επισημάνει τυχόν αναντιστοιχίες στην έκδοση, τις εξαρτήσεις, τα σενάρια και το όνομα του πακέτου μεταξύ του μανιφέστου και του πραγματικού αρχείου package.json.

Δοκιμασμένη συσκευασία
(BleepingComputer)
Για ένα πακέτο χωρίς αναντιστοιχίες, η έξοδος θα πρέπει να μοιάζει με αυτό:
$ ./npm-manifest-check.py color
No mismatch detected for color.
Για να επιθεωρήσουν πολλά πακέτα, οι προγραμματιστές μπορούν να τα προσθέσουν σε ένα «πακέτα». list» (ένα πακέτο ανά γραμμή) και χρησιμοποιήστε το σενάριο περιτυλίγματος «check_packages.sh» για να τα ελέγξετε. Το εργαλείο θα αναφέρει τυχόν αναντιστοιχίες που βρέθηκαν σε καθένα από τα επιλεγμένα πακέτα.
Για να κατανοήσετε όλες τις πτυχές της χρήσης του εργαλείου Pankratz, ελέγξτε την εντολή βοήθειας με:
./npm-manifest-check.py -h
Η έκδηλη σύγχυση δεν είναι ένα ευρέως διαδεδομένο ή κρίσιμο πρόβλημα στην κοινότητα NPM αυτή τη στιγμή, αλλά η παράβλεψή της δεν είναι ο ασφαλής τρόπος, καθώς οι παράγοντες της απειλής θα μπορούσαν να αρχίσουν να τη χρησιμοποιούν για επιθέσεις στην αλυσίδα εφοδιασμού.


