Mastodon
Connect with us

Open Source

Κίνδυνοι στην αλυσίδα προμηθειών λογισμικού από επίθεση στο NuGet

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

Published

on

Η αυξανόμενη απειλή για το ανοικτό λογισμικό

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

Η επίθεση στο Nethereum και οι επιπτώσεις της

Ερευνητές ασφαλείας από τη Socket ανακάλυψαν πρόσφατα μια ζωντανή επίθεση “homoglyph typosquat” στο NuGet που αντέγραψε το έργο Nethereum. Το Nethereum είναι η πρότυπη βιβλιοθήκη .NET για το Ethereum, καθιστώντας το ιδανικό στόχο για επιθέσεις που στοχεύουν σε κλοπή κρυπτονομισμάτων ή την παραβίαση εφαρμογών blockchain.

Η επίπτωση μιας τέτοιας παραβίασης στις επιχειρήσεις μπορεί να είναι καταστροφική. Ο κακόβουλος κώδικας ήταν σχεδιασμένος να στέλνει ευαίσθητα δεδομένα μέσω HTTPS POST, όπως μνημονικά, ιδιωτικά κλειδιά, JSON αποθηκευτηρίων ή υπογεγραμμένα δεδομένα συναλλαγών. Για οποιαδήποτε επιχείρηση στον τομέα του FinTech, της ψηφιακής ταυτότητας ή του Web3, η απώλεια αυτών των δεδομένων θα ήταν μια μεγάλη καταστροφή, οδηγώντας σε οικονομικές απώλειες και ζημία στην εμπιστοσύνη των πελατών.

Η πολυεπίπεδη στρατηγική της επίθεσης

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

Πρόκληση 1: Εξαπάτηση με ομόγραφα

Ο επιτιθέμενος κυκλοφόρησε ένα πακέτο με όνομα Nеtherеum.All. Αρχικά, φαίνεται ακριβώς όπως το πραγματικό έργο. Το τέχνασμα ήταν απλό αλλά αποτελεσματικό: αντικατέστησε το λατινικό ‘e’ με το κυριλλικό ‘е’ για να περάσει από την επιφανειακή επιθεώρηση.

Αυτή η επίθεση στο NuGet αναδεικνύει ένα βασικό ζήτημα με τη διακυβέρνηση. Σε αντίθεση με πολλά άλλα μητρώα, οι κανόνες ταυτοποίησης του NuGet δεν περιορίζουν τα ονόματα σε ASCII, αφήνοντας χώρο για ομοιόμορφα Unicode. Μητρώα όπως το PyPI και το npm, από την άλλη, έχουν αυστηρότερους κανόνες που πιθανώς θα είχαν εμποδίσει αυτή την συγκεκριμένη επίθεση στην αλυσίδα προμηθειών ανοικτού λογισμικού. Αυτή η διαφορά σημαίνει ότι τα σχέδια άμυνας δεν μπορούν να είναι ίδια για όλους· πρέπει να προσαρμόζονται στους συγκεκριμένους κινδύνους κάθε συστήματος.

Πρόκληση 2: Πλαστή εμπιστοσύνη

Η αλλαγή του ονόματος δεν ήταν αρκετή. Ο επιτιθέμενος έπρεπε να κάνει το ψεύτικο πακέτο να φαίνεται δημοφιλές. Το κακόβουλο πακέτο εκτοξεύθηκε μέσα σε λίγες ημέρες από τη δημοσίευση, με πάνω από 11,6 εκατομμύρια λήψεις.

Αυτό δείχνει έντονα αυτοματοποιημένη αύξηση λήψεων. Με προγραμματισμένες λήψεις από διαφορετικούς cloud hosts και αλλαγή διευθύνσεων IP, ο επιτιθέμενος προσδίδει μια ψευδή αίσθηση απόδειξης όταν οι προγραμματιστές κοιτάζουν τους αριθμούς. Αυτό είναι πολύ αποτελεσματικό, καθώς οι ομάδες ανάπτυξης συχνά ελέγχουν γρήγορα τους αριθμούς λήψης για να δουν αν ένα πακέτο είναι αξιόπιστο.

Πρόκληση 3: Το κρυφό φορτίο

Το πιο δύσκολο κομμάτι για την άμυνα ήταν ο σχεδιασμός του φορτίου. Το κακόβουλο λογισμικό δεν ήταν ένας προφανής script. Αντίθετα, ήταν μια μικρή ρουτίνα XOR που έκρυβε ένα κωδικοποιημένο C2.

Όταν ένας προγραμματιστής εγκαθιστούσε το κακόβουλο πακέτο από το NuGet, αυτό επίσης τραβούσε πραγματικές εξαρτήσεις όπως Nethereum.Hex και Nethereum.Signer. Αυτό εξασφάλιζε ότι η εφαρμογή θα συνέτασσε και θα εκτελούσε τις αναμενόμενες λειτουργίες Ethereum. Ο κακόβουλος κώδικας παρέμενε κρυμμένος μέχρι να χρησιμοποιηθεί μια συγκεκριμένη μέθοδος, η Shuffle. Αυτή η μέθοδος τότε αποκωδικοποιούσε μέσω XOR το καμουφλαρισμένο φορτίο και το έστελνε μέσω HTTPS POST για να κλέψει μυστικά στον έλεγχο και την εντολή του επιτιθέμενου.

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

Άμεσες ενέργειες για την ενίσχυση της άμυνας

Αν και η ομάδα ασφαλείας του NuGet αφαίρεσε γρήγορα το πακέτο Nеtherеum.All μετά την αναφορά του, η επίθεση είχε διάρκεια παραμονής τεσσάρων ημερών μεταξύ της δημοσίευσης και της αφαίρεσης. Αυτός ο χρόνος είναι υπεραρκετός για να προκαλέσει ζημιά. Σημαντικό είναι ότι η αφαίρεση δεν καθαρίζει τα περιβάλλοντα· οι εκτεθειμένες πληροφορίες πρέπει να θεωρούνται ως παραβιασμένες και να περιστρέφονται.

Ακολουθεί μια λίστα πρακτικών ενεργειών για τη βελτίωση της άμυνας της αλυσίδας προμηθειών λογισμικού:

  • Έλεγχος ταυτότητας εκδότη: Μην βασίζεστε μόνο στους αριθμούς λήψεων ή τα ονόματα πακέτων. Βεβαιωθείτε ότι οι ομάδες ανάπτυξης επαληθεύουν την ταυτότητα του εκδότη πριν χρησιμοποιήσουν μια νέα εξάρτηση. Είναι ο εκδότης γνωστή οργάνωση; Είναι ο λογαριασμός νέος; Αυτό το απλό βήμα είναι μια καλή πρώτη γραμμή άμυνας.
  • Σάρωση για συμπεριφορά, όχι μόνο υπογραφές: Αυτή η επίθεση δεν θα ανιχνευόταν από εργαλεία που αναζητούν μόνο γνωστά αδύνατα σημεία. Οι επιχειρήσεις πρέπει να σαρώνουν τις αλλαγές εξαρτήσεων πριν από τη συγχώνευση και να ελέγχουν για ύποπτες συμπεριφορές. Τα εργαλεία ασφαλείας πρέπει να μπορούν να ειδοποιούν για ομόγραφα, ξαφνικές αυξήσεις λήψεων και μικρές ρουτίνες αποκωδικοποίησης και εξαγωγής.
  • Παρακολούθηση εκροής δικτύου: Το φορτίο σχεδιάστηκε για να κλέβει δεδομένα. Είναι σημαντικό να υπάρχουν ισχυρές πολιτικές για την παρακολούθηση της ανώμαλης εκροής δικτύου από εργαλεία ανάπτυξης και σταθμούς εργασίας προγραμματιστών. Ένα εργαλείο ανάπτυξης δεν πρέπει ποτέ να επικοινωνεί με έναν άγνωστο τομέα.
  • Χρήση μοντέλου μηδενικής εμπιστοσύνης για εξαρτήσεις: Αντιμετωπίστε κάθε νέο ή ενημερωμένο πακέτο ως μη αξιόπιστο. Η ασφάλεια πρέπει να ενισχύσει την υγιεινή των εξαρτήσεων από προεπιλογή, μπλοκάροντας επικίνδυνες συμπεριφορές όπως σενάρια κατά την εγκατάσταση ή απροσδόκητες κλήσεις δικτύου πριν εκτελεστούν σε περιβάλλον CI/CD ή στον υπολογιστή ενός προγραμματιστή.

Καθώς οι επιχειρήσεις βασίζονται ολοένα και περισσότερο σε πλατφόρμες cloud από τη Microsoft, τη Google και την AWS, οι προγραμματιστές πρέπει να λαμβάνουν κάθε πιθανό μέτρο για να ασφαλίσουν όλα τα στοιχεία της αλυσίδας προμηθειών ανοικτού λογισμικού — συμπεριλαμβανομένων εκείνων που αποκτώνται από διαχειριστές πακέτων όπως το NuGet — για να προστατευθούν από αυτές τις όλο και πιο συχνές επιθέσεις.

Η ευρύτερη εικόνα

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

Advertisement