ΑρχικήsecurityΗ ευπάθεια στο .NET Core επιτρέπει την εκκίνηση κακόβουλων προγραμμάτων

Η ευπάθεια στο .NET Core επιτρέπει την εκκίνηση κακόβουλων προγραμμάτων

Μια ευπάθεια στη βιβλιοθήκη .NET Core επιτρέπει την εκκίνηση κακόβουλων προγραμμάτων, ενώ αποφεύγεται η ανίχνευση από κάποιο antivirus.

Αυτή η ευπάθεια προκαλείται από ένα σφάλμα Path Traversal στη βιβλιοθήκη .NET Core της Microsoft που επιτρέπει τη φόρτωση κακόβουλων DLL συλλογής garbage (διεργασίες οι οποίες επανακτούν την μνήμη που χρησιμοποιείται από οbjects που δεν χρησιμοποιούνται πλέον από ένα πρόγραμμα) από χρήστες με χαμηλά δικαιώματα.

.NET Core

Αυτό το σφάλμα επηρεάζει την τελευταία σταθερή έκδοση (εκδόσεις 3.1.x) του .NET Core. Επί του παρόντος, δεν υπάρχει επίλυση και θα μπορούσε να επιτρέψει στους εισβολείς να εκτελέσουν κακόβουλο κώδικα σε ένα σύστημα χωρίς να εντοπιστούν εύκολα από τα antivirus.

Ανακαλύφθηκε από τον Paul Laîné της ασφάλειας πληροφοριών περιβάλλοντος, η ευπάθεια είναι δυνατή λόγω δύο βασικών λόγων:

  • Το .NET Core σάς επιτρέπει να χρησιμοποιείτε ένα προσαρμοσμένο DLL ως garbage collector
  • Η μεταβλητή περιβάλλοντος “COMPlus_GCName” που χρησιμοποιείται για τον καθορισμό ενός προσαρμοσμένου “garbage collector” .NET δεν απολυμαίνεται. Επομένως, τυχόν χαρακτήρες (../) που παρέχονται στη διαδρομή συλλογής απορριμμάτων δεν φιλτράρονται.

Το .NET Core χρησιμοποιεί έναν «garbage collector» για να εκχωρήσει και να ελευθερώσει τη μνήμη του συστήματος που χρησιμοποιείται από μια εφαρμογή .NET Core.

Ωστόσο, είναι δυνατό για τους χρήστες να δημιουργήσουν «garbage collectors» με τη μορφή DLL που θα φορτωθούν από μια εφαρμογή πυρήνα .NET.

Ωστόσο, το .NET Core επιτρέπει σε οποιονδήποτε χρήστη, συμπεριλαμβανομένων εκείνων με χαμηλά δικαιώματα, να φορτώνει ένα προσαρμοσμένο αρχείο συλλογής απορριμμάτων DLL, ακόμη και εκείνους που περιέχουν κακόβουλο κώδικα.

Εκμετάλλευση αυτού του σφάλματος

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

Το κύριο κίνητρο για έναν hacker για να ενσωματώσει αυτήν την επίθεση στο κιτ εργαλείων του θα ήταν να αποτρέψει τον εντοπισμό του κακόβουλου payload τους από λογισμικό ασφαλείας που εκτελείται στον παραβιασμένο υπολογιστή.

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

Στη συνέχεια, ορίζουν μια μεταβλητή περιβάλλοντος που προκαλεί το .NET Core να χρησιμοποιήσει αυτό το προσαρμοσμένο DLL.

Όταν φορτωθεί, ο κακόβουλος κώδικας θα εκτελεστεί από τη νόμιμη διαδικασία .NET Core, dotnet.exe, με την εντύπωση ότι το DLL είναι απλώς ένας προσαρμοσμένος garbage collector.

Μόλις ο DLL συλλέκτης απορριμμάτων φορτωθεί από το πλαίσιο .NET Core, το payload ξεκινά την εκτέλεση, το οποίο σε αυτή την περίπτωση είναι ένα reverse TCP shell.

Σε ένα σενάριο στον πραγματικό κόσμο, ένας εισβολέας με πρόσβαση σε ένα παραβιασμένο μηχάνημα μπορεί να χρησιμοποιήσει ένα απλό batch script για να προκαλέσει στο .NET Core να εκτελέσει το κακόβουλο DLL, χωρίς να εντοπιστεί.

Δεν είναι ευπάθεια λέει η Microsoft

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

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

Ο Laîné αναγνώρισε στην αρχική του αποκάλυψη, “Η δυνατότητα χρήσης ενός προσαρμοσμένου GC είναι ένα νόμιμο χαρακτηριστικό και πιθανότατα δεν πρέπει να καταργηθεί. Ωστόσο, η διέλευση διαδρομής πρέπει να αντιμετωπιστεί προκειμένου να περιοριστεί η χρήση ενός προσαρμοσμένου GC μόνο σε χρήστες με τοπικά δικαιώματα διαχειριστή, κάτι που θα πρέπει να ισχύει για μια εφαρμογή server-side ή σε περιβάλλον ανάπτυξης.”

Δεδομένου ότι δεν έχει κυκλοφορήσει κάποια διόρθωση για αυτό το «νόμιμο» χαρακτηριστικό, παραμένει το ενδεχόμενο κατάχρησης σε .NET επιχειρηματικά περιβάλλοντα.

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

Εγγραφή στο Newsletter

* indicates required

FOLLOW US

LIVE NEWS