Βρέθηκε ένα θέμα ευπάθειας στο Ghostscript που θα μπορούσε να επιτρέψει την εκτέλεση κώδικα

Πριν λίγα μέρες κυκλοφόρησαν την είδηση ότι ταυτοποιήθηκε μια ευπάθεια στο Ghostscript (CVE-2020-15900) τι θα μπορούσε προκαλούν τροποποίηση αρχείων και εκτέλεση αυθαίρετων εντολών όταν ανοίγετε ειδικά μορφοποιημένα έγγραφα PostScript.

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

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

Σχετικά με την ευπάθεια στο Ghostscript

Το σφάλμα εντοπίστηκε στη χρήση του τελεστή έρευνας μη τυπικό PostScript σε ένα έγγραφο που σας επιτρέπει να προκαλέσετε υπερχείλιση τύπου uint32_t κατά τον υπολογισμό του μεγέθους, αντικατάσταση περιοχών μνήμης χωρίς προσωρινή αποθήκευση εκχωρούνται και αποκτούν πρόσβαση σε αρχεία του συστήματος αρχείων, τα οποία μπορούν να χρησιμοποιηθούν για τη δημιουργία μιας επίθεσης για την εκτέλεση αυθαίρετου κώδικα στο σύστημα (για παράδειγμα, προσθέτοντας εντολές στο ~/.bashrc ή στο ~/.profile).

Το απόσπασμα που βρέθηκε από το AFL έσπρωξε μια κενή συμβολοσειρά στη στοίβα: οι κενές αγκύλες (), αντέγραψαν την αναφορά σε αυτό, με αποτέλεσμα μια στοίβα με δύο κενές συμβολοσειρές () () και, στη συνέχεια, εκτελέστηκε η αντίστροφη αναζήτηση. Με άλλα λόγια, έψαχνε για ένα άδειο string σε ένα άδειο string, ξεκινώντας από το τέλος.

Δυστυχώς, έχασαν μια περίπτωση ακμής όπου αναζητείται η κενή συμβολοσειρά. Όταν ψάχνετε για μια κενή συμβολοσειρά, αυτό ορίζεται ως άμεση επιτυχία: δεν υπάρχει τίποτα για αναζήτηση, επομένως μεταπηδάμε κατευθείαν στο τέλος. Ωστόσο, το αποτέλεσμα πρέπει να χωριστεί σε τιμές πριν από τον αγώνα, σε σύμπτωση και μετά τον αγώνα. Δυστυχώς, ο κωδικός υπέθεσε ότι είχαμε κοιτάξει τουλάχιστον μία φορά και υπολογίσαμε τη διάρκεια του αποτελέσματος μετά τον αγώνα λανθασμένα αφαιρώντας το ένα από το μηδέν, με αποτέλεσμα την επιστροφή στη μέγιστη τιμή: 4,294,967,295.

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

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

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

Για μια επιτυχημένη επίθεση, σε πολλές περιπτώσεις, αρκεί απλώς να κατεβάσετε το αρχείο exploit ή να περιηγηθείτε στον κατάλογο με αυτό στο Nautilus.

Τα τρωτά σημεία στο Ghostscript μπορούν επίσης να αξιοποιηθούν μέσω προγραμμάτων οδήγησης εικόνας με βάση τα πακέτα ImageMagick και GraphicsMagick, μεταβιβάζοντας ένα αρχείο JPEG ή PNG, που περιέχει κώδικα PostScript αντί για εικόνα (ένα τέτοιο αρχείο θα αποδοθεί στο Ghostscript, καθώς ο τύπος MIME αναγνωρίζεται από το περιεχόμενο και όχι ανάλογα με την επέκταση).

Λύση

Το πρόβλημα επηρεάζει τις εκδόσεις από 9.50 έως 9.52 (Το σφάλμα υπήρχε από την έκδοση 9.28rc1, αλλά σύμφωνα με τους ερευνητές που εντόπισαν την ευπάθεια, εμφανίστηκε από την έκδοση 9.50.)

Αλλά μια επιδιόρθωση είχε ήδη προταθεί στην έκδοση 9.52.1 εκτός από αυτό καιΈχουν αναρτηθεί ενημερώσεις πακέτων ενημέρωσης κώδικα για ορισμένες διανομές Linux όπως το Debian, το Ubuntu και το SUSE.

Ενώ τα πακέτα σε RHEL δεν επηρεάζονται.

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


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

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

*

*

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