Ανακάλυψαν μια ευπάθεια στο RubyGems.org που επέτρεπε την αντικατάσταση πακέτων

Πρόσφατα τα νέα το έσπασαν Εντοπίστηκε μια κρίσιμη ευπάθεια στο το αποθετήριο πακέτων rubygems.org (η ευπάθεια είναι ήδη καταχωρημένη στο CVE-2022-29176), η οποία επιτρέπουν χωρίς την κατάλληλη εξουσιοδότηση, αντικαταστήστε τα πακέτα άλλων ανθρώπων στο αποθετήριο τραβώντας ένα νόμιμο πακέτο και μεταφορτώνοντας ένα άλλο αρχείο με το ίδιο όνομα και αριθμό έκδοσης στη θέση του.

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

Συγκεκριμένα στον κωδικό ελεγκτή της λειτουργίας «yank», η κλήση 'find_by!(πλήρες_όνομα: "#{rubygem.name}-#{slug}")' χρησιμοποιήθηκε για την αναζήτηση πακέτων, ενώ η παράμετρος "slug" μεταβιβάστηκε στον κάτοχο του πακέτου για να καθορίσει την έκδοση που θα αφαιρεθεί.

Ο κάτοχος του πακέτου "rails-html" θα μπορούσε να έχει καθορίσει το "sanitizer-1.2.3" αντί για την έκδοση "1.2.3", κάτι που θα προκαλούσε την εφαρμογή της λειτουργίας στο "rails-html-sanitizer-1.2.3". πακέτο ″ από κάποιον άλλο. »

Μια συμβουλή ασφαλείας για το Rubygems.org δημοσιεύθηκε χθες.

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

Ας ρίξουμε μια πιο βαθιά ματιά για να δούμε τι πήγε στραβά κατά τη διαδικασία εξαγωγής. Ως πρόσχημα, ας φανταστούμε ένα σενάριο όπου δημιουργούμε ένα στολίδι που ονομάζεται "rails-html" με σκοπό να αποκτήσουμε μη εξουσιοδοτημένη πρόσβαση στο ευρέως χρησιμοποιούμενο στολίδι "rails-html-sanitizer".

Αναφέρεται ότι πρέπει να πληρούνται τρεις προϋποθέσεις, για την επιτυχή εκμετάλλευση αυτής της ευπάθειας:

  • Η επίθεση μπορεί να εκτελεστεί μόνο σε πακέτα που έχουν χαρακτήρα παύλα στο όνομά τους.
  • Ένας εισβολέας θα πρέπει να μπορεί να τοποθετήσει ένα πακέτο πολύτιμων λίθων με μέρος του ονόματος μέχρι τον χαρακτήρα παύλα. Για παράδειγμα, εάν η επίθεση είναι εναντίον του πακέτου "rails-html-sanitizer", ο εισβολέας πρέπει να βάλει το δικό του πακέτο "rails-html" στο αποθετήριο.
  • Το πακέτο που δέχεται επίθεση πρέπει να έχει δημιουργηθεί τις τελευταίες 30 ημέρες ή να μην έχει ενημερωθεί για 100 ημέρες.

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

το πρόβλημα διορθώθηκε στο RubyGems.org στις 5 Μαΐου και σύμφωνα με τους προγραμματιστές, δεν έχουν ακόμη εντοπίσει ίχνη εκμετάλλευσης της ευπάθειας στα αρχεία καταγραφής τους τελευταίους 18 μήνες. Ταυτόχρονα, μέχρι στιγμής έχει γίνει μόνο επιφανειακός έλεγχος και στο μέλλον προβλέπεται πιο εμπεριστατωμένος έλεγχος.

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

Το RubyGems.org στέλνει ένα email σε όλους τους ιδιοκτήτες πολύτιμων λίθων όταν κυκλοφορήσει ή αφαιρεθεί μια έκδοση πολύτιμων λίθων. Δεν έχουμε λάβει μηνύματα ηλεκτρονικού ταχυδρομείου υποστήριξης από ιδιοκτήτες πολύτιμων λίθων που να δηλώνουν ότι το διαμάντι τους έχει εξορυχθεί χωρίς εξουσιοδότηση.

Ένας έλεγχος των αλλαγών πολύτιμων λίθων τους τελευταίους 18 μήνες δεν βρήκε παραδείγματα κακόβουλης χρήσης αυτής της ευπάθειας. Περαιτέρω έλεγχος για οποιαδήποτε πιθανή χρήση αυτού του exploit δεν βρήκε περίπτωση χρήσης αυτού του exploit για την ανάληψη ενός πολύτιμου λίθου χωρίς εξουσιοδότηση στην ιστορία του RubyGems. Δεν μπορούμε να εγγυηθούμε ότι δεν συνέβη ποτέ, αλλά δεν φαίνεται πιθανό.

Για να επαληθεύσετε τα έργα σας, συνιστάται η ανάλυση του ιστορικού λειτουργιών στο αρχείο Gemfile.lock Η κακόβουλη δραστηριότητα εκφράζεται παρουσία αλλαγών με το ίδιο όνομα και έκδοση ή αλλαγή πλατφόρμας (για παράδειγμα, όταν ένα πακέτο xxx-1.2.3 1.2.3 ενημερώθηκε σε xxx-XNUMX-xxx).

Ως λύση κατά της πλαστογράφησης κρυφών πακέτων σε συστήματα συνεχούς ενοποίησης ή κατά τη δημοσίευση έργων, Συνιστάται στους προγραμματιστές να χρησιμοποιούν το Bundler με τις επιλογές “–frozen” ή “–deployment” για επιβεβαίωση εξαρτήσεων.

Τέλος, αν ενδιαφέρεστε να μάθετε περισσότερα γι 'αυτό, μπορείτε να ελέγξετε τις λεπτομέρειες στο παρακάτω σύνδεσμο.


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

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

*

*

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