Κακόβουλα πακέτα ανοιχτού κώδικα: Το πρόβλημα

Κακόβουλα πακέτα ανοιχτού κώδικα: Το πρόβλημα

Αυτό είναι το πρώτο επεισόδιο μιας σειράς άρθρων σχετικά με το πιο διαδεδομένο είδος επιθέσεων στην εφοδιαστική αλυσίδα λογισμικού: αυτές που (κατα)χρησιμοποιούν ένα δημόσιο μητρώο στοιχείων λογισμικού, που προορίζονται για έργα ανοιχτού κώδικα για να ανεβάσετε αντικείμενα που θα μπορούσαν να κοινοποιηθούν σε άλλους χρήστες. Όταν οι κακοί χρήστες δημοσιεύουν κακόβουλο λογισμικό εκεί, χρησιμοποιώντας το μητρώο ως όχημα για τη διανομή κακόβουλου λογισμικού, έχουμε μια επίθεση στην εφοδιαστική αλυσίδα όταν οι οργανισμοί-θύματα εγκαθιστούν ή εκτελούν το μολυσμένο στοιχείο λογισμικού. 

Για να απλοποιήσουμε τη συζήτηση, θα μιλήσουμε για πακέτα λογισμικού:, στοιχεία σε συσκευασμένη μορφή που παράγονται από τρίτους. Αυτό περιλαμβάνει όχι μόνο στοιχεία που χρησιμοποιούνται από διαχειριστές πακέτων όπως το NPM ή το Poetry, αλλά και στοιχεία του λειτουργικού συστήματος συμπεριλαμβανομένων βιβλιοθηκών και εκτελέσιμων δυαδικών αρχείων, εικόνες κοντέινερ, και εικονικές μηχανές, ή επεκτάσεις εργαλείων για εργαλεία ανάπτυξης, κατασκευής και εγκατάστασης. Έχουμε δει κακόβουλα πακέτα παντού. Οι κυβερνοεγκληματίες δεν ενοχλούνται: είναι ενθουσιασμένοι με τις εναλλακτικές λύσεις που παρέχονται από τις σύγχρονες υποδομές λογισμικού και χρησιμοποιούν το μητρώο και το εργαλείο που ταιριάζει καλύτερα στον σκοπό τους. Λάβετε λοιπόν υπόψη ότι τα πακέτα λογισμικού είναι συντομογραφία για εικόνες κοντέινερ, δυαδικά πακέτα, αποθετήρια ανοιχτού κώδικα και επεκτάσεις ή πρόσθετα κάθε είδους (IDE, CI/CD συστήματα, εργαλεία κατασκευής). Όλα δέχονται συστηματικά επιθέσεις.

Η σειρά θα έχει 5 επεισόδια:

  • Ποιο είναι το πρόβλημα με τα πακέτα ανοιχτού κώδικα; Αυτό είναι το θέμα αυτής της ανάρτησης. Γιατί οι εγκληματίες κάθε είδους δημοσιεύουν κακόβουλα πακέτα; Γιατί θα πρέπει να ανησυχώ;
  • Ανατομία των κακόβουλων πακέτων: Ποιες είναι οι τάσεις; Σε αυτό το επεισόδιο, εστιάζουμε στην απειλή που παρακολουθούμε με το σύστημα MEW μας, μέρα με τη μέρα. Με μεγάλο θόρυβο υποβάθρου λόγω μεγάλου αριθμού κακόβουλων πακέτων που χρησιμοποιούν typosquatting ή σύγχυση εξαρτήσεων, ένα μικρότερο ποσοστό επιθέσεων είναι πολύ πιο ύπουλο και ενέχει μεγαλύτερο κίνδυνο. Πώς έχει αλλάξει η συμπεριφορά των κακών παραγόντων σχετικά με τα λειτουργικά συστήματα στο πρόσφατο παρελθόν; Ποιοι είναι οι αριθμοί; Ποιες είναι οι τακτικές, οι τεχνικές και οι διαδικασίες που χρησιμοποιούνται και οι επιβλαβείς ενέργειες που παρατηρούνται;
  • Προστασία από κακόβουλα πακέτα ανοιχτού κώδικα: Τι λειτουργεί (δεν λειτουργεί)Οι περισσότεροι επαγγελματίες που γνωρίζουν την ασφάλεια έχουν ιδέες για το πώς να αντιμετωπίσουν αυτήν την απειλή. Έχουμε ακούσει διευθυντές ασφαλείας να λένε χωρίς δισταγμό ότι SCA Τα εργαλεία σας ενημερώνουν ήδη πότε μια έκδοση πακέτου είναι κακόβουλο λογισμικό. Ή ότι εξαρτώνται από γνωστά, υψηλά αξιολογημένα στοιχεία λογισμικού, όπου οποιοδήποτε κακόβουλο λογισμικό θα ανιχνεύεται και θα αφαιρείται άμεσα. Ότι χρησιμοποιούν ανοιχτές δευτερεύουσες εκδόσεις/εκδόσεις ενημέρωσης κώδικα για την αυτόματη λήψη διορθώσεων ευπαθειών και αυτός είναι ο σωστός, συνιστώμενος τρόπος για να μειωθεί ο κίνδυνος από τις εξαρτήσεις ανοιχτού κώδικα, ακολουθώντας την αρχή «ενημέρωση νωρίς, ενημέρωση κώδικα συχνά». Σε αυτό το επεισόδιο, θα εξετάσουμε γιατί αυτές οι ιδέες είναι λανθασμένες και πώς τέτοιες παρανοήσεις συμβάλλουν στη δημοτικότητα αυτού του μηχανισμού επίθεσης και σε έναν συντριπτικό κίνδυνο που αντιμετωπίζουν οι οργανισμοί. Θα καταλήξουμε με το τι λειτουργεί και ποιο είναι η προσπάθεια και οι πόροι που εμπλέκονται.
  • Κακόβουλα πακέτα ανοιχτού κώδικα: Η προσέγγιση XygeniΣε αυτό το επεισόδιο, παρουσιάζουμε ποια είναι η στρατηγική που ακολουθούμε στην Xygeni για το σύστημα έγκαιρης προειδοποίησης κακόβουλου λογισμικού (MEW). Πώς λειτουργεί αυτό το σύστημα πολλαπλών σταδίων σε πραγματικό χρόνο όταν δημοσιεύεται μια νέα έκδοση πακέτου, πώς συλλέγονται στοιχεία από διαφορετικές πηγές, πώς γίνεται η διαλογή, ποια κριτήρια ταξινόμησης ακολουθούμε και γιατί χρειάζεται ακόμη κάποια χειροκίνητη ανάλυση για να επιβεβαιωθεί η φύση ενός υποψήφιου κακόβουλου πακέτου; Πώς η ανατροφοδότηση από τις εσωτερικές ομάδες και τις ομάδες μητρώου μας βοηθά το σύστημα να μαθαίνει από προηγούμενα στοιχεία που συλλέχθηκαν για να μειώσει στο ελάχιστο τα ψευδώς θετικά. Και θα εξηγήσουμε πώς βοηθάμε το NPM, το GitHub, το PyPI και άλλες βασικές υποδομές στα οικοσυστήματα ανοιχτού κώδικα να μειώσουν τον χρόνο παραμονής.
  • Εκμετάλλευση Ανοικτού Κώδικα: Τι να Περιμένετε από τους ΚακούςΗ σειρά ολοκληρώνεται εστιάζοντας στις νεότερες ενέργειες που υιοθετούν οι αντίπαλοι για να κάνουν τις επιθέσεις πιο μυστικές, πιο δύσκολο να εντοπιστούν, πιο στοχευμένες σε συγκεκριμένους κλάδους και να αποκομίσουν μεγαλύτερο όφελος από αυτήν την κατηγορία επιθέσεων. Θα πραγματοποιηθούν επιθέσεις ransomware χρησιμοποιώντας αυτό το όχημα; Πώς αξιοποιούν οι κακοί τα εργαλεία τεχνητής νοημοσύνης για να παραδώσουν πιο εξελιγμένα κακόβουλα πακέτα; Κινδυνεύουν τα κορυφαία δημοφιλή έργα; Αυτό γίνεται για να δοθεί στους αναγνώστες μια αίσθηση σχετικά με αυτόν τον αγώνα εξοπλισμών και τι να περιμένουν βραχυπρόθεσμα (δεύτερο εξάμηνο του 2024) και μεσοπρόθεσμα (2025). Θα μάθουμε πώς επιθέσεις όπως η πρόσφατη... XZ-Utils Backdoor, ή η επίθεση που ασκείται από τους κατοίκους της γης ηλεκτρονιοδομητής τον Μάρτιο του 2024 δείχνουν ότι πρέπει να παραμένουμε σε εγρήγορση για το πώς εξελίσσονται οι αντίπαλοι. 

Ας ξεκινήσουμε με το πρώτο επεισόδιο: Τι συμβαίνει με τα κακόβουλα πακέτα ανοιχτού κώδικα;

Ποιο είναι το πρόβλημα με τα πακέτα ανοιχτού κώδικα;

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

Δημοσίευση κακόβουλων στοιχείων σε δημόσια μητρώα (επιθέσεις που βασίζονται σε εξαρτήσεις) είναι ένας ασύμμετρος ανταρτοπόλεμος που χρησιμοποιούν οι απειλητικοί φορείς για τη διανομή κακόβουλου λογισμικού, αξιοποιώντας την εμπιστοσύνη που δείχνουν οι οργανισμοί σε στοιχεία ανοιχτού κώδικα που προέρχονται από άγνωστους προγραμματιστές (θυμηθείτε το κόμικ εξάρτησης xkcd?). Επειδή εμπιστεύεστε τα πακέτα και δεν σας πειράζει να ελέγχετε χειροκίνητα τα περιεχόμενα των πακέτων και τις εξαρτήσεις τους, αυτές οι επιθέσεις είναι εξαιρετικά αποτελεσματικές. Και η ασυμμετρία προκύπτει επειδή μπορούν να αυτοματοποιηθούν σε μεγάλο βαθμό και οι κακόβουλοι δεν χρειάζεται να αλληλεπιδρούν απευθείας με το θύμα. Απλώς ανεβάζουν το πακέτο στο δημόσιο μητρώο και το αφήνουν να φύγει.

Κακόβουλα πακέτα αυξήθηκε κατά 6 φορές το 2022και συνέχισε να αυξάνεται κατά 2.5 φορές το 2023. Πέρυσι εντοπίστηκαν 245,000 κακόβουλα πακέτα, ένας αριθμός που υπερδιπλασιάζει τον συνολικό αριθμό από τα προηγούμενα χρόνια μαζί. Πρόκειται για εκθετική αύξηση! Από τις εκατοντάδες αφαιρέσεις πακέτων ως επιβεβαιωμένο κακόβουλο λογισμικό κατά τη διάρκεια του 2021 και τις χιλιάδες κατά τη διάρκεια του 2022, είδαμε πολύ περισσότερο «θόρυβο» στο παρασκήνιο κατά τη διάρκεια του 2023, με παρόμοιο ρυθμό για φέτος. Και κρυμμένο σε αυτό το παρασκήνιο που προκλήθηκε από απλούς κυβερνοεγκληματίες που ακολουθούσαν την «οδό της ελάχιστης αντίστασης», μια μειοψηφία επιθέσεων υψηλού προφίλ έφτασε στα πρωτοσέλιδα ακόμη και στα γενικά μέσα ενημέρωσης.

Γιατί αυτό είναι ένα πρόβλημα τέτοιου μεγέθους; Υπάρχει ένα υπερβολική εμπιστοσύνη σε όλη την αλυσίδα. Το λογισμικό ανοιχτού κώδικα διανέμεται με τον πηγαίο κώδικά του και κυκλοφορεί με μια δεδομένη άδεια. Ναι, ο καθένας μπορεί να ελέγξει τον πηγαίο κώδικα. Αλλά ποιος το κάνει γενικά; Ποιος, αφού ελέγξει ότι το λογισμικό δεν έχει κακόβουλο λογισμικό, δημιουργεί το λογισμικό από τους πηγαίους; Ποιος, πριν περάσει το συσκευασμένο στοιχείο (γνωστό και ως πακέτο) κατάντη στον διαχειριστή πακέτων ή στο εργαλείο δημιουργίας, διασφαλίζει ότι το πακέτο δεν είναι γεμάτο με κακόβουλο λογισμικό και αντιστοιχεί στον υποτιθέμενο πηγαίο κώδικα από τον οποίο θα έπρεπε να προέρχεται;

Γιατί η υποδομή επιτρέπει τόσο εύκολες επιθέσεις;

Μητρώα πακέτων είναι ανοιχτά, συχνά απαιτώντας ελάχιστη επαλήθευση της ταυτότητας του εκδότη. «Όποιος είναι ευπρόσδεκτος να δημοσιεύσει το λογισμικό του εδώ!» Ο πήχης για τους εισβολείς είναι χαμηλός: χρησιμοποιούν διευθύνσεις email μιας χρήσης και λογαριασμούς GitHubgithub μιας χρήσης για να δημιουργήσουν εκατοντάδες κακόβουλα πακέτα σε σύντομες, τύπου phishing, καμπάνιες. Μόνο για στοχευμένες απαιτείται μεγαλύτερη πολυπλοκότητα: Είδαμε ακόμη και τη δημιουργία ενός αξιόπιστου αποθετηρίου πηγαίου κώδικα GitHub με πολλά αστέρια και commitαπό πολλαπλούς ψεύτικους συντελεστές και άλλες μετρήσεις δημοτικότητας και συντήρησης. Λήψη παρατηρητές των αστεριών και φήμη από ψεύτικες συνεισφορές δεν είναι δύσκολο να αυτοματοποιηθεί. Είδαμε καταχρήσεις σε υποδομές ανοιχτού λογισμικού κάθε είδους, όχι μόνο σε κακόβουλο λογισμικό, όπως το περιστατικό πρωτοκόλλου τσαγιού.

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

Οι εξαρτήσεις είναι ένθετες και σχηματίζουν ένα γράφημα. Σε ορισμένα οικοσυστήματα όπως το Node (JavaScript), οι εξαρτήσεις μικρού μεγέθους συσσωρεύονται σε εκατοντάδες ή χιλιάδες. Ένα πράγμα είναι να έχω αυστηρό έλεγχο στις άμεσες εξαρτήσεις που δηλώνονται από τα έργα λογισμικού μου, αλλά μεταβατικές εξαρτήσεις είναι πιο δύσκολο να ελεγχθούν. Το λογισμικό ανοιχτού κώδικα ακολουθούσε την αρχή «οι φίλοι των φίλων μου είναι φίλοι μου». Η αδελφοσύνη είναι ο κανόνας στην άγρια ​​Άπω Ανατολή! Οι απειλητικοί παράγοντες το γνωρίζουν αυτό και κρύβουν βαθιά την κακόβουλη συμπεριφορά σε σκοτεινές εξαρτήσεις που συχνά είναι άγνωστες. Αυτή ήταν η περίπτωση με το ροή συμβάντων περιστατικό που στόχευε την Πορτοφόλι αντιγραφής

Έτσι λειτουργούσε το λογισμικό ανοιχτού κώδικα από την έναρξή του. Δεν θα αλλάξει πολύ. Ορισμένα μητρώα πακέτων απαιτούν στην καλύτερη περίπτωση έλεγχο ταυτότητας δύο παραγόντων και συχνά μόνο για τα πιο δημοφιλή πακέτα. Ορισμένα μητρώα παρέχουν πεδία εφαρμογής, έναν χώρο ονομάτων που ανήκει σε έναν ελεγμένο οργανισμό, αλλά τραγικά άλλα δεν το υποστηρίζουν (PyPI) ή το καθιστούν προαιρετικό (NPM).  Είναι ενδιαφέρον να σημειωθεί ότι ακόμη και ένα απλό σχέδιο διαλογής (βάσει του ελέγχου του αποθετηρίου/οργανισμού DNS ή GitHub που ταιριάζει με το αναγνωριστικό ομάδας) και κάνοντας Υποχρεωτικές υπογραφές PGP για όλα τα τεχνουργήματα εκτός από τα checksums, αφαιρεί το μεγαλύτερο μέρος του "θορύβου", τα κακόβουλα πακέτα που μοιάζουν με typosquatting και περιορίζει μεγάλο μέρος των σύγχυση εξάρτησηςΟι εξελιγμένες επιθέσεις είναι δυνατές αλλά πολύ πιο δύσκολες, με μόνο λίγες σαν το com.github.codingandcoding:maven-compiler-plugin γνωστό για το Maven Central. Και δεν ακολουθούν όλα τα μητρώα maven τις ίδιες πρακτικές!

Τα στοιχεία ελέγχου ασφαλείας στους διαχειριστές πακέτων ενδέχεται να επιβαρύνουν αλλά δεν εμποδίζουν τις επιθέσεις εξαρτήσεων. Το πρόβλημα με τον έλεγχο ταυτότητας πολλαπλών παραγόντων είναι ότι για τον αυτοματισμό, δημιουργούνται παράγωγα διαπιστευτήρια όπως διακριτικά πρόσβασης ή κλειδιά APIapi για λογαριασμούς που θα χρησιμοποιηθούν σε κλήσεις APIapi που πραγματοποιούνται από σενάρια αυτοματισμού, χωρίς κανένας διαδραστικός χρήστης υποστήριξης να παρέχει έναν δεύτερο παράγοντα. Το MFA είναι καλό για την προστασία των λογαριασμών χρηστών από διαρροές κωδικών πρόσβασης, αλλά τα διακριτικά πρόσβασης ή τα κλειδιά APIapi που δημιουργούνται πρέπει να προστατεύονται όσο είναι ενεργά, διαφορετικά ο κάτοχός τους θα πλαστογραφηθεί από τους εχθρούς. Ένα μεγάλο μέρος των καμπανιών εφοδιαστικής αλυσίδας που βασίζονται σε πακέτα ξεκινά με ένα διαρροή κλειδιού/διακριτικού. Απλώς θυμηθείτε περιστατικά όπως Καθολικό, 3CX, και πολλά άλλα, όπου μη διαδραστικά διαπιστευτήρια εκλάπησαν για πρώτη φορά σε μια προκαταρκτική εισβολή για την έναρξη επίθεσης στην αλυσίδα εφοδιασμού.

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

Για να κλείσουμε αυτό το τμήμα, η κρίσιμη παρεξήγηση: μιλάμε για κακόβουλο πακέτα, όχι ευάλωτες Αυτά. Τα τρωτά σημεία προέρχονται από σφάλματα σχεδιασμού ή κώδικα, που εισήχθησαν κατά λάθος, χωρίς κακή πρόθεση. Τα τρωτά σημεία μπορεί να αξιοποιηθούν, αλλά πολλά όχι. Τα κακόβουλα πακέτα είναι πάντα σκόπιμα και υπάρχει 100% εκμεταλλευσιμότητα εάν εκτελεστούν. Δεν υπάρχει συγκρίσιμος κίνδυνος! Ως εκ τούτου Είναι παράδοξο να βλέπουμε πόσες προσπάθειες καταβάλλονται για την ανίχνευση και τον μετριασμό των τρωτών σημείων, και την έλλειψη ισοδύναμων μέτρων για κακόβουλα στοιχεία.

«Λαμβάνουμε σοβαρά υπόψη την ασφάλεια»

Κακόβουλα πακέτα ανοιχτού κώδικα: Το πρόβλημα 2

Ας φανταστούμε το συνηθισμένο Acme CorporationΗ Acme, ένας σημαντικός πάροχος για το WileCoyote.com, διαθέτει το μεγαλύτερο μέρος του λογισμικού της από τρίτους, με περισσότερο από το 80% να προέρχεται από έργα ανοιχτού κώδικα. Παράγουν λογισμικό για εσωτερική χρήση, αλλά παρέχουν επίσης λογισμικό για τους συνεργάτες, τους παρόχους και τους πελάτες/τελικούς χρήστες τους. Η Acme διαθέτει λογισμικό γραμμένο σε Go, JavaScript, Java, C# και Python και εκτελεί το μεγαλύτερο μέρος του λογισμικού της στο cloud, σε συμπλέγματα Kuberneteskubernetes. Η Acme δημιουργεί τις προσαρμοσμένες εικόνες της από βασικές εικόνες που λαμβάνονται από το Docker Hub και άλλα μητρώα. Και μοιράζονται μερικές βιβλιοθήκες, πακέτα και εικόνες κοντέινερ σε δημόσια μητρώα.

Η Acme λαμβάνει σοβαρά υπόψη την ασφάλεια. Γνωρίζει αρκετά καλά το πρόβλημα της open source securityκαι τον κίνδυνο που αυτό συνεπάγεται. Όλοι οι προγραμματιστές, οι διαχειριστές συστημάτων και οι μηχανικοί του DevOpsdevops χρησιμοποιούν αυτά τα χαριτωμένα μικρά κρυπτογραφικά κλειδιά ως έλεγχο ταυτότητας δεύτερου παράγοντα. Όλα commitΤα αποθετήρια κώδικα s υπογράφονται, η προστασία υποκαταστημάτων ενεργοποιείται με υποχρεωτικές αναθεωρήσεις κώδικα, CI/CD κλειδωμένα, μυστικά αποθηκευμένα σε μυστικό θησαυροφυλάκιο και με εσωτερικό μητρώο που αντικατοπτρίζει εν μέρει τα εξωτερικά μητρώα όπου αποθηκεύονται μόνο τα επιτρεπόμενα στοιχεία που βρίσκονται στη λίστα επιτρεπόμενων. Απαιτείται το λογισμικό που κατασκευάζεται από την Acme να λαμβάνει εξαρτήσεις τρίτων από αυτό το μητρώο. 

Πιθανώς οι περισσότεροι οργανισμοί ταιριάζουν σε αυτό το προφίλ. Αγαπητέ αναγνώστη, το δικό σας σίγουρα ταιριάζει αν είστε ήδη εδώ, έτσι δεν είναι;

Τότε, μια άτυχη μέρα, ένας σημαντικός προγραμματιστής frontend στο Acme έτρεξε npm εγκατάσταση acme-cute-lib, ξεχνώντας ότι το @acme/cute-lib ήταν η σωστή εξάρτηση με εύρος. Το ακριβές λάθος δεν είναι σημαντικό, πολλά πράγματα μπορεί να πάνε στραβά ακόμα και όταν κάποιος αναλαμβάνει τον απόλυτο έλεγχο του κύκλου ζωής του λογισμικού. Ο προγραμματιστής μας δεν γνώριζε ότι μια ομάδα APT στόχευε την Acme και δημοσίευσε ένα κακόβουλο στοιχείο με αυτό το όνομα, με πονηρό τρόπο, έτσι ώστε η κακόβουλη συμπεριφορά να ενεργοποιείται μόνο όταν το λογισμικό είναι εγκατεστημένο σε υπολογιστές Acme. Το πακέτο δεν εντοπίστηκε για εβδομάδες μετά τη δημοσίευσή του. 

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

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

Τα υπόλοιπα είναι ιστορία: Η Acme αρχικά αρνήθηκε ότι μια τέτοια συμπεριφορά μπορούσε να αποδοθεί σε αυτήν και ότι είχαν ληφθεί όλα τα μέτρα ασφαλείας. Μόνο αφού τα μέσα ενημέρωσης στον κυβερνοχώρο άρχισαν να ρωτούν γιατί η πηγή της ανιχνευμένης συμπεριφοράς προερχόταν από τα στοιχεία της Acme, και η ανάλυση ασφαλείας έδειξε πόσο γεμάτα ήταν αυτά τα στοιχεία με κρυφό κακόβουλο λογισμικό, η Acme αναγκάστηκε να αναγνωρίσει το περιστατικό και κάλεσε μια εταιρεία αντιμετώπισης περιστατικών. Μια αρνητική διαφημιστική εκστρατεία που υπονόμευσε την εμπιστοσύνη που κερδήθηκε με κόπο σε μια στιγμή.Το Acme ήταν μια εγκατάσταση npm μακριά από το disaster» ήταν ένας συνηθισμένος τίτλος. Στη συνέχεια ακολούθησαν αγωγές και ακυρώσεις συμβάσεων.

Βλέπετε ομοιότητες με γνωστά περιστατικά του παρελθόντος; Η Acme ενεπλάκη σε ένα περιστατικό στην εφοδιαστική αλυσίδα σε δύο φάσεις, χρησιμοποιώντας ένα μείγμα σύγχυση εξάρτησης/τυπογραφική κατάληψη επιθέσεις που χρησιμοποίησαν έναν σταθμό εργασίας προγραμματιστή ως προγεφύρωμα για τη μόλυνση στοιχείων που κατέληξαν σε λογισμικό που χρησιμοποιείται από τρίτους. Πώς θα μπορούσε να αποτραπεί ή να μετριαστεί αυτό; 

Γιατί τα δηλητηριασμένα πακέτα είναι τόσο δημοφιλή

Αυτό το υποθετικό περιστατικό δείχνει ότι ακόμη και με μια λογική προσέγγιση στην ασφάλεια ανοιχτού κώδικα, οι οργανισμοί χρειάζονται συγκεκριμένα μέτρα για να αποφύγουν να πέσουν θύματα κακόβουλου λογισμικού σε στοιχεία ανοιχτού κώδικα. Σχηματικά, ο απειλητικός παράγοντας μπορεί:

  • Δημιουργήστε ένα νέο πακέτο (ακολουθώντας τις γνωστές οδούς typosquatting ή confusion dependency, αυτή είναι η διαδρομή που διανύουν περισσότερο οι κακοί σε όγκο).
  • Προσπαθήστε να μολύνετε ένα υπάρχον, είτε εισάγοντάς το στον πηγαίο κώδικα, είτε προσπαθώντας να το μεταμφιέσετε ως συνεισφέροντα μέσω pull requestή χρησιμοποιώντας κοινωνική μηχανική για να γίνει κάποιος συντηρητής (όπως έκανε ο «Jao Tan» στο XZ Backdoor ή right9ctrl Ένας χρήστης του GitHub έκανε το ροή συμβάντων περιστατικό το φθινόπωρο του 2018), ή αποκτώντας διαπιστευτήρια αποθετηρίου ανοιχτού κώδικα και μιμούμενοι τον συντηρητή·
  • Εισαγωγή κακόβουλου λογισμικού κατά τη διάρκεια της δημιουργίας του πακέτου, είτε εκτελώντας ένα κακόβουλο σενάριο δημιουργίαςή παρεμβολή στις λήψεις πακέτων με παρεμβολές man-in-the-middle (ευτυχώς, το TLS απαιτείται πλέον πάντα στα περισσότερα μητρώα).
  • Εισάγετε το συσκευασμένο στοιχείο απευθείας στο μητρώο, συνήθως καταγράφοντας τα διαπιστευτήρια μητρώου (η προτιμώμενη εναλλακτική λύση για πολλές εξελιγμένες επιθέσεις όπως της Acme, όπου ο παραβιασμένος σταθμός εργασίας στο πρώτο στάδιο είχε το εσωτερικό διακριτικό πρόσβασης μητρώου, π.χ. στο συνηθισμένο .env or ~/.m2/settings.xml(οι κακοί ηθοποιοί ξέρουν πού να ψάξουν για μυστικά). Αξιοποιήθηκαν επίσης τα τρωτά σημεία στα μητρώα. 

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

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

Περαιτέρω ανάγνωση

Το επόμενο επεισόδιο Ανατομία των κακόβουλων πακέτων: Ποιες είναι οι τάσεις; Θα επικεντρωθούμε σε πραγματικές περιπτώσεις που παρακολουθούμε με το σύστημα έγκαιρης προειδοποίησης κακόβουλου λογισμικού, μέρα με τη μέρα. Θα εξετάσουμε ποιοι τύποι κακόβουλου λογισμικού εντοπίστηκαν και ποιες τακτικές, τεχνικές και διαδικασίες είναι οι προτιμώμενες. Θα εξετάσουμε την απόκρυψη και τον τρόπο με τον οποίο προσπαθούν να κρυφτούν από πιθανούς κριτές, τις τεχνικές αποφυγής για την αποφυγή της ανίχνευσης και τον τρόπο με τον οποίο εξελίσσονται με τηλεμετρία και πλευρική κίνηση. Μείνετε συντονισμένοι! 

Αναφορές

Ανατομία των κακόβουλων πακέτων: Ποιες είναι οι τάσεις;

Προστασία από κακόβουλα πακέτα OSS: Τι λειτουργεί (δεν λειτουργεί)

εργαλεία-ανάλυσης-σύνθεσης-λογισμικού-sca
Ιεράρχηση, αποκατάσταση και ασφάλεια των κινδύνων λογισμικού σας
Αποκτήστε τον Δωρεάν Λογαριασμό σας.
Δεν απαιτείται πιστωτική κάρτα.

Ασφαλίστε την ανάπτυξη και την παράδοση λογισμικού σας

με το Xygeni Product Suite