Οι ερευνητές ασφαλείας ανακάλυψαν μια επίθεση npm timing που αποκαλύπτει τα ονόματα των ιδιωτικών πακέτων, έτσι ώστε οι απειλητικοί φορείς να μπορούν να απελευθερώσουν κακόβουλους κλώνους δημόσια για να εξαπατήσουν τους προγραμματιστές να τους χρησιμοποιήσουν.
Δείτε επίσης: Το Android διαρρέει traffic ακόμα και όταν είναι ενεργοποιημένο το “Always-on VPN”
Η επίθεση βασίζεται σε μια μικρή χρονική διαφορά στην επιστροφή ενός σφάλματος “404 Not Found” κατά την αναζήτηση ενός ιδιωτικού σε σύγκριση με ένα ανύπαρκτο πακέτο στο repository.
Ενώ η διαφορά χρόνου απόκρισης είναι μόνο μερικές εκατοντάδες χιλιοστά του δευτερολέπτου, είναι αρκετά για να καθοριστεί εάν υπάρχει ένα ιδιωτικό πακέτο για την εκτέλεση επιθέσεων package impersonation.
Ανακαλύψτε τον Μικροσκοπικό Εξωπλανήτη κοντά στο Άστρο του Μπαρναρντ
Το ρομπότ AV1 βοηθά άρρωστα παιδιά να μην χάνουν μαθήματα
Τυφώνας Milton: Αναβάλλεται η εκτόξευση του Europa Clipper
Οι οργανισμοί δημιουργούν ιδιωτικά πακέτα για εσωτερικά projects και ορισμένα προϊόντα software για να ελαχιστοποιήσουν τον κίνδυνο να πέσουν οι ομάδες development τους σε επιθέσεις typosquatting και να κρατήσουν μυστικό τον κώδικα και τις λειτουργίες τους.
Η διατήρηση ιδιωτικών πακέτων είναι ζωτικής σημασίας για τους οργανισμούς που τα χρησιμοποιούν. Διαφορετικά, οι εισβολείς μπορούν να δημιουργήσουν κλώνους ή πακέτα typosquatted με τα οποία οι χάκερ μπορούν να εξαπατήσουν τους υπαλλήλους των οργανισμών ώστε να τα κατεβάσουν και να τα χρησιμοποιήσουν σε software projects.
Δείτε επίσης: Σφάλμα VMware vCenter Server που αποκαλύφθηκε πέρυσι δεν έχει διορθωθεί ακόμα
Εάν οι προγραμματιστές και οι εσωτερικοί ελεγκτές λογισμικού δεν ανακαλύψουν το compromise, τα προϊόντα θα μπορούσαν να φτάσουν στους τελικούς χρήστες, επιτυγχάνοντας compromise στην αλυσίδα εφοδιασμού.
Σε μια έκθεση της ερευνητικής ομάδας απειλών της Aqua Security, η οποία μοιράστηκε τα ευρήματά της με την BleepingComputer πριν από τη δημοσίευση, οι επιτιθέμενοι εστιάζουν όλο και περισσότερο στις επιθέσεις της αλυσίδας εφοδιασμού, τροφοδοτώντας μια αύξηση 300% στις σχετικές δραστηριότητες το 2021.
Λεπτομέρειες επίθεσης timing
Το npm περιλαμβάνει ένα registry API που επιτρέπει στους χρήστες να κατεβάζουν υπάρχοντα πακέτα, να ελέγχουν την ύπαρξη πακέτων και να λαμβάνουν πληροφορίες για όλα τα πακέτα σε ένα συγκεκριμένο πεδίο.
Όταν χρησιμοποιείτε το npm registry για τη λήψη ενός πακέτου που δεν υπάρχει ή έχει οριστεί ως ιδιωτικό, ο ιστότοπος θα επιστρέψει έναν κωδικό σφάλματος HTTP 404, υποδεικνύοντας ότι το πακέτο δεν βρέθηκε.
Η Aqua Security ανακάλυψε την επίθεση npm timing χρησιμοποιώντας αυτό το API για να ελέγξει την ύπαρξη ιδιωτικών πακέτων που δημιούργησαν στο npm και συνέκρινε τον χρόνο απόκρισης των σφαλμάτων 404 HTTP έναντι των ελέγχων API για ανύπαρκτα πακέτα.
Οι ερευνητές πραγματοποίησαν τη δοκιμή τους ελέγχοντας την ύπαρξη ενός ονόματος πακέτου πέντε φορές. Ανακάλυψαν ότι υπάρχει μια μετρήσιμη διαφορά στον μέσο χρόνο που απαιτείται για να ανταποκριθεί το npm στο αίτημα, επιτρέποντάς τους να διακρίνουν εάν ένα πακέτο είναι ιδιωτικό ή ανύπαρκτο.
Δείτε επίσης: Νέα καμπάνια phishing COVID-19 στις ΗΠΑ καταχράται τα Google Forms
Πιο συγκεκριμένα, ο μέσος χρόνος απόκρισης όταν υπάρχει το ιδιωτικό πακέτο είναι 648 χιλιοστά του δευτερολέπτου, ενώ ο μέσος χρόνος όταν δεν υπάρχει πέφτει στα μόλις 101 χιλιοστά του δευτερολέπτου.
Οι ερευνητές υποθέτουν ότι αυτό οφείλεται στον μηχανισμό προσωρινής αποθήκευσης και στην αρχιτεκτονική του API του npm, το οποίο εισάγει αυτή τη δυνατότητα αποκάλυψης πληροφοριών.
Ένας χάκερ μπορεί να δοκιμάσει μια “τυφλή” επίθεση dictionary ή να αναζητήσει μοτίβα naming και συνδυασμούς στα δημόσια πακέτα του στοχευόμενου οργανισμού για να εξαγάγει πιθανά ονόματα ιδιωτικών πακέτων.
Επιπλέον, οι διαδικτυακές πληροφορίες περιέχουν ιστορικές πληροφορίες πακέτων, ώστε οι εισβολείς να μπορούν να τις χρησιμοποιήσουν για να προσδιορίσουν ποια δημόσια πακέτα ενδέχεται να έχουν μετατραπεί σε ιδιωτικά αργότερα.
Στην τελευταία περίπτωση, ένας πιθανό compromise με ένα πακέτο κλώνων θα μπορούσε να είναι πολύ κρυφό, καθώς ένα παλιό αντίγραφο ενός πακέτου που ήταν δημόσιο μπορεί να εξακολουθεί να διατηρεί αρκετή λειτουργικότητα για να λειτουργεί όπως προβλέπεται στο προϊόν λογισμικού που το χρησιμοποιεί.
Το GitHub δεν θα διορθώσει το πρόβλημα
Η Aqua Security αποκάλυψε το σφάλμα στο GitHub στις 8 Μαρτίου 2022, αλλά ενημερώθηκε στις 25 Μαρτίου ότι δεν θα διορθωθεί λόγω αρχιτεκτονικών περιορισμών.
“Λόγω αυτών των αρχιτεκτονικών περιορισμών, δεν μπορούμε να αποτρέψουμε τις επιθέσεις timing από το να προσδιορίσουν εάν υπάρχει ένα συγκεκριμένο ιδιωτικό πακέτο στο npm”, δήλωσε το GitHub στο Aqua Security.
Οι ερευνητές λένε ότι οι οργανισμοί μπορούν να λάβουν προληπτικά μέτρα: συχνή αναζήτηση npm για ύποπτα πακέτα που κάνουν spoof τα ιδιωτικά πακέτα τους με διπλότυπα ή παρόμοια ονόματα.
Επιπλέον, οι οργανισμοί μπορούν να δημιουργήσουν δημόσια πακέτα που κάνουν spoof τα ιδιωτικά τους πακέτα ως placeholders, καθώς το npm δεν επιτρέπει τη μεταφόρτωση πακέτων με το ίδιο όνομα σε δημόσιους χώρους αποθήκευσης.
Πηγή πληροφοριών: bleepingcomputer.com