Ένα θέμα ευπάθειας που επέτρεψε την κυκλοφορία μιας ενημέρωσης για οποιοδήποτε πακέτο στο αποθετήριο NPM

Το GitHub έχει αποκαλύψει δύο περιστατικά στην υποδομή του αποθετηρίου πακέτων NPM. Στις 2 Νοεμβρίου, τρίτοι ερευνητές ασφαλείας (Kajetan Grzybowski και Maciej Piechota), ως μέρος του προγράμματος Bug Bounty, ανέφεραν την παρουσία μιας ευπάθειας στο αποθετήριο NPM που σας επιτρέπει να δημοσιεύσετε μια νέα έκδοση οποιουδήποτε πακέτου χρησιμοποιώντας τον λογαριασμό σας, η οποία δεν είναι εξουσιοδοτημένη να εκτελεί τέτοιες ενημερώσεις.

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

Το ζήτημα επιδιορθώθηκε 6 ώρες μετά την αναφορά της ευπάθειας, αλλά η ευπάθεια ήταν παρούσα στο NPM περισσότερο από ό,τι καλύπτουν τα αρχεία καταγραφής τηλεμετρίας. Το GitHub ισχυρίζεται ότι δεν υπάρχουν ίχνη επιθέσεων που χρησιμοποιούν αυτήν την ευπάθεια από τον Σεπτέμβριο του 2020, αλλά δεν υπάρχει καμία εγγύηση ότι το πρόβλημα δεν έχει αξιοποιηθεί στο παρελθόν.

Το δεύτερο περιστατικό σημειώθηκε στις 26 Οκτωβρίου. Κατά τη διάρκεια τεχνικής εργασίας με τη βάση δεδομένων της υπηρεσίας replicate.npmjs.com, αποκαλύφθηκε η παρουσία εμπιστευτικών δεδομένων στη βάση δεδομένων που είναι προσβάσιμα σε εξωτερικά αιτήματα, αποκαλύπτοντας πληροφορίες σχετικά με τα ονόματα των εσωτερικών πακέτων που αναφέρονταν στο αρχείο καταγραφής αλλαγών. Οι πληροφορίες σχετικά με τέτοια ονόματα μπορούν να χρησιμοποιηθούν για την πραγματοποίηση επιθέσεων εξάρτησης σε εσωτερικά έργα (τον Φεβρουάριο, μια παρόμοια επίθεση επέτρεψε την εκτέλεση κώδικα στους διακομιστές των PayPal, Microsoft, Apple, Netflix, Uber και 30 άλλων εταιρειών).

Επιπλέον, λόγω του αυξανόμενου αριθμού περιπτώσεων πειρατείας αποθετηρίων μεγάλων έργων και προώθησης κακόβουλου κώδικα μέσω λογαριασμών προγραμματιστών σε κίνδυνο, το GitHub αποφάσισε να εισαγάγει υποχρεωτικό έλεγχο ταυτότητας δύο παραγόντων. Η αλλαγή θα τεθεί σε ισχύ το πρώτο τρίμηνο του 2022 και θα ισχύει για τους συντηρητές και τους διαχειριστές πακέτων που περιλαμβάνονται στην πιο δημοφιλή λίστα. Επιπλέον, αναφέρεται ο εκσυγχρονισμός της υποδομής, στον οποίο θα εισαχθεί αυτοματοποιημένη παρακολούθηση και ανάλυση νέων εκδόσεων πακέτων για τον έγκαιρο εντοπισμό κακόβουλων αλλαγών.

Ας θυμηθούμε ότι, σύμφωνα με μια μελέτη που διεξήχθη το 2020, μόνο το 9.27% των συντηρητών πακέτων χρησιμοποιεί έλεγχο ταυτότητας δύο παραγόντων για την προστασία της πρόσβασης και στο 13.37% των περιπτώσεων, κατά την εγγραφή νέων λογαριασμών, οι προγραμματιστές προσπάθησαν να επαναχρησιμοποιήσουν παραβιασμένους κωδικούς πρόσβασης που εμφανίζονταν στο γνωστές διαρροές κωδικού πρόσβασης. Κατά τη διάρκεια ενός ελέγχου ασφαλείας κωδικού πρόσβασης, έγινε πρόσβαση στο 12% των λογαριασμών NPM (13% των πακέτων) λόγω της χρήσης προβλέψιμων και ασήμαντων κωδικών πρόσβασης όπως "123456". Μεταξύ των προβληματικών ήταν 4 λογαριασμοί χρηστών από τα Top 20 πιο δημοφιλή πακέτα, 13 λογαριασμοί με πακέτα που λήφθηκαν περισσότερες από 50 εκατομμύρια φορές το μήνα, 40 με περισσότερες από 10 εκατομμύρια λήψεις το μήνα και 282 με περισσότερες από 1 εκατομμύριο λήψεις το μήνα. Λαμβάνοντας υπόψη τη φόρτωση των λειτουργικών μονάδων κατά μήκος μιας αλυσίδας εξαρτήσεων, ο παραβιασμός των μη αξιόπιστων λογαριασμών θα μπορούσε να επηρεάσει έως και το 52% όλων των λειτουργικών μονάδων στο NPM.

Πηγή: opennet.ru

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