ΑρχικήsecurityGolang: Η Google διορθώνει μια σοβαρή Windows RCE ευπάθεια

Golang: Η Google διορθώνει μια σοβαρή Windows RCE ευπάθεια

Αυτόν τον μήνα οι μηχανικοί της Google διόρθωσαν μια σοβαρή ευπάθεια απομακρυσμένης εκτέλεσης κώδικα (RCE) στη γλώσσα Go (Golang).

Η ευπάθεια RCE, CVE-2021-3115, επηρεάζει κυρίως τους χρήστες των Windows που τρέχουν το command go get, λόγω της προεπιλεγμένης συμπεριφοράς των «Windows PATH lookups».

google Golang

Πρόσφατα, ο ερευνητής ασφάλειας RyotaK, ανακάλυψε μια ευπάθεια command injection στο project Golang.

Η ευπάθεια, που ονομάστηκε ως CVE-2021-3115, πηγάζει από τον τρόπο λειτουργίας της διαδικασίας μεταγλώττισης όταν ένας χρήστης εκτελεί την εντολή “go get” για να «φέρει» ένα repository.

Γενικά, σε συστήματα Windows, ένα «OS shell command» που εκτελείται από τον χρήστη ή ένα πρόγραμμα αναγκάζει το shell να αναζητήσει πρώτα το binary/εκτελέσιμο που σχετίζεται με αυτήν την εντολή στο τρέχον directory, ακολουθούμενο από μια λίστα με directories που καθορίζονται στη μεταβλητή συστήματος PATH.

Για παράδειγμα, εάν πληκτρολογήσετε netstat σε ένα command prompt των Windows, τα Windows θα αναζητούσαν πρώτα ένα netstat.exe, netstat.bat ή άλλο netstat.* εκτελέσιμο στο τρέχον directory (δείτε το παρακάτω screenshot) που θα έχει προτεραιότητα και θα εκτελεστεί.

Golang google

Εάν δεν υπάρχει netstat στον τρέχοντα φάκελο, μόνο τότε το Windows shell θα αναζητούσε το βοηθητικό πρόγραμμα συστήματος netstat, η θέση του οποίου υπάρχει στη Windows μεταβλητή %PATH%.

Λόγω των κινδύνων ασφαλείας που σχετίζονται με αυτήν τη συμπεριφορά, τόσο το Unix shell όσο και το Windows PowerShell είχαν προηγουμένως εγκαταλείψει αυτήν την προεπιλεγμένη συμπεριφορά και άρχισαν να δίνουν προτεραιότητα στις μεταβλητές τοποθεσίες %PATH% από το μη αξιόπιστο τρέχον directory, κατά την εκτέλεση των commands.

Αυτό σημαίνει ότι η εκτέλεση του netstat στο PowerShell θα εκκινήσει το βοηθητικό πρόγραμμα συστήματος netstat και όχι το τοπικά παρόν netstat.bat, δεδομένου ότι το PoweShell δίνει προτεραιότητα στην αναζήτηση του binary με αυτό το όνομα στα directories %PATH%.

Ωστόσο, για λόγους συνέπειας, τα binaries Golang μιμούνται τους κανόνες Unix για τα συστήματα Unix και τους κανόνες των Windows για τα Windows.

Αυτό σημαίνει ότι η εκτέλεση της ακόλουθης εντολής Go θα παράγει ελαφρώς διαφορετικές συμπεριφορές στα συστήματα Unix και Windows.

Αυτό το “Golang line” ισοδυναμεί με την εκτέλεση της “OS shell command’ go version.

Στα Windows, ένα τοπικό go binary θα έχει προτεραιότητα, ενώ τα συστήματα Unix θα αναζητούσαν πρώτα τη μεταβλητή $PATH για να δουν αν ένα binary go υπάρχει σε μία από τις αξιόπιστες τοποθεσίες.

Αυτό το μοντέλο προτεραιότητας του τοπικού, μη αξιόπιστου directory σε τοποθεσίες PATH εφαρμόζεται επίσης από βοηθητικά libraries και compilers που περιλαμβάνονται στην Go, όπως το cgo, ένα βοηθητικό πρόγραμμα που έχει σχεδιαστεί για τη δημιουργία πακέτων Go που καλούν κώδικα C.

Όταν το cgo συντάσσει κώδικα C στα Windows, τελικά, το εκτελέσιμο Golang αναζητά τον GCCcompiler εντός του (μη αξιόπιστου) τοπικού directory.

Παρόλο που οι περισσότερες από αυτές τις κλήσεις πραγματοποιούνται με ασφαλή τρόπο, ο GCC compiler καλείται από τη λειτουργία exec.Command της Go, η οποία, στα Windows, επιτρέπει στην Go να εκκινήσει ένα κακόβουλο gcc.exe που περιλαμβάνεται από τον χάκερ στα application sources, αντί του νόμιμου GCC compiler.

Μπορεί να φαίνεται ότι αυτό το θέμα θα μπορούσε να έχει εντοπιστεί και να αποτραπεί από πολλά ενδιάμεσα compilers και libraries που επικαλούνται (όπως cgo ή gcc), αλλά η ομάδα πίσω από το Golang ανέλαβε την ευθύνη για το σφάλμα και εξέδωσε μια διόρθωση.

Η ομάδα Golang της Google έχει διορθώσει την ευπάθεια και συνιστάται στους χρήστες να αναβαθμίσουν τα instances τους. Οι χρήστες μπορούν να πραγματοποιήσουν αναβάθμιση στις εκδόσεις Go που πρόσφατα κυκλοφόρησαν την 1.14.14 (για 1.14.x και παλαιότερες εκδόσεις) και την 1.15.7 (για χρήστες 1.15.x) για να μετριάσουν αυτήν την ευπάθεια.

Πηγή πληροφοριών: bleepingcomputer.com

Teo Ehc
Teo Ehchttps://www.secnews.gr
Be the limited edition.

Εγγραφή στο Newsletter

* indicates required

FOLLOW US

LIVE NEWS