Μια επίθεση εξάρτησης επιτρέπει την εκτέλεση κώδικα σε PayPal, Microsoft, Apple, Netflix, Uber και 30 άλλες εταιρείες

πριν ΛΙΓΕΣ μερες κυκλοφόρησε μια εκπληκτικά απλή μέθοδος που επιτρέπει επιθέσεις σε εφαρμογές που αναπτύσσονται χρησιμοποιώντας εσωτερικά αποθετήρια πακέτων. Οι ερευνητές που εντόπισαν το πρόβλημα μπόρεσαν να τρέξουν τον κωδικό σας στους εσωτερικούς διακομιστές 35 εταιρειών, συμπεριλαμβανομένων των PayPal, Microsoft, Apple, Netflix, Uber, Tesla και Shopify.

Οι παραβιάσεις πραγματοποιήθηκαν στο πλαίσιο των προγραμμάτων Bug Bounty, σε συντονισμό με τις εταιρείες που δέχτηκαν επίθεση, και οι δράστες έχουν ήδη λάβει 130.000 $ μπόνους για τον εντοπισμό τρωτών σημείων.

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

Το πρόβλημα είναι ότι οι διαχειριστές πακέτων όπως npm, pip και gem προσπαθούν να κατεβάσουν τις εσωτερικές εξαρτήσεις των εταιρειών, ακόμη και από τα δημόσια αποθετήρια. Για επίθεση, απλά ορίστε τα ονόματα των πακέτων με εσωτερικές εξαρτήσεις και δημιουργήστε τα δικά σας πακέτα με τα ίδια ονόματα στα δημόσια αποθετήρια NPM, PyPI και RubyGems.

Το πρόβλημα δεν αφορά συγκεκριμένα τα NPM, PyPI και RubyGems και εκδηλώνεται και σε άλλα συστήματα όπως το NuGet, το Maven και το Yarn.

Η ιδέα για την προτεινόμενη μέθοδο προέκυψε αφού ένας ερευνητής κατά λάθος παρατήρησε ότι σε δημοσίως διαθέσιμο κώδικα που δημοσιεύτηκε στο GitHub, πολλές εταιρείες δεν καταργούν την αναφορά επιπλέον εξαρτήσεων από τα αρχεία δήλωσης χρησιμοποιείται σε εσωτερικά έργα ή κατά την εφαρμογή εκτεταμένων λειτουργιών. Παρόμοια ίχνη έχουν βρεθεί στον κώδικα JavaScript για υπηρεσίες διαδικτύου, καθώς και σε έργα Node.JS, Python και Ruby πολλών εταιρειών.

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

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

Κατά τη λήψη εξαρτήσεων, οι διαχειριστές πακέτων npm, pip και gem εγκατέστησαν κυρίως πακέτα από τα κύρια δημόσια αποθετήρια NPM, PyPI και RubyGems, τα οποία θεωρήθηκαν υψηλότερης προτεραιότητας.

Η παρουσία παρόμοιων πακέτων με τα ίδια ονόματα στα αποθετήρια ιδιωτικών εταιρειών αγνοήθηκε χωρίς να εμφανιστούν προειδοποιήσεις ή να προκληθούν σφάλματα που θα μπορούσε να προσελκύσει την προσοχή των διαχειριστών. Στο PyPI, η προτεραιότητα λήψης επηρεάστηκε από τον αριθμό έκδοσης (ανεξάρτητα από το αποθετήριο, λήφθηκε η πιο πρόσφατη έκδοση του πακέτου). Στα NPM και RubyGems, η προτεραιότητα εξαρτάται μόνο από το αποθετήριο.

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

Για να μεταδώσετε πληροφορίες σχετικά με την επιτυχία του hack, bypass firewall που εμποδίζουν την εξωτερική κίνηση, τη μέθοδο οργάνωσης κρυφών καναλιών επικοινωνιών μέσω του πρωτοκόλλου DNS. Ο κώδικας που εκτελούσε επέλυσε τον κεντρικό υπολογιστή στον επιτιθέμενο τομέα υπό τον έλεγχο του επιτιθέμενου τομέα, ο οποίος κατέστησε δυνατή τη συλλογή πληροφοριών σχετικά με επιτυχημένες λειτουργίες στον διακομιστή DNS. Διαβιβάστηκαν πληροφορίες σχετικά με τον κεντρικό υπολογιστή, το όνομα χρήστη και την τρέχουσα διαδρομή.

Το 75% όλων των καταγεγραμμένων εκτελέσεων κώδικα συσχετίστηκαν με λήψεις πακέτων NPM, κυρίως λόγω του γεγονότος ότι υπήρχαν σημαντικά περισσότερα εσωτερικά ονόματα λειτουργικών μονάδων σε JavaScript από τα ονόματα εξάρτησης σε Python και Ruby.

πηγή: https://medium.com/


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.