Η Microsoft έχει ετοιμάσει μια εφαρμογή του eBPF για Windows

Η Microsoft δημοσίευσε μια υλοποίηση του υποσυστήματος eBPF για Windows που σας επιτρέπει να εκτελείτε αυθαίρετους χειριστές που λειτουργούν σε επίπεδο πυρήνα λειτουργικού συστήματος. Το eBPF παρέχει έναν διερμηνέα bytecode ενσωματωμένο στον πυρήνα που σας επιτρέπει να δημιουργείτε χειριστές λειτουργιών δικτύου με δυνατότητα φόρτωσης στο χώρο χρήστη, να ελέγχετε την πρόσβαση και να παρακολουθείτε συστήματα. Το eBPF περιλαμβάνεται στον πυρήνα του Linux από την έκδοση 3.18 και σας επιτρέπει να επεξεργάζεστε εισερχόμενα/εξερχόμενα πακέτα δικτύου, προώθηση πακέτων, έλεγχο εύρους ζώνης, υποκλοπή κλήσεων συστήματος, έλεγχο πρόσβασης και παρακολούθηση. Χάρη στη χρήση της μεταγλώττισης JIT, ο bytecode μεταφράζεται σε οδηγίες μηχανής εν κινήσει και εκτελείται με την απόδοση μεταγλωττισμένου κώδικα. Ο πηγαίος κώδικας για το eBPF για Windows είναι ανοιχτού κώδικα υπό την άδεια MIT.

Το eBPF για Windows μπορεί να χρησιμοποιηθεί με τα υπάρχοντα εργαλεία eBPF και παρέχει ένα γενικό API που χρησιμοποιείται για εφαρμογές Linux eBPF. Μεταξύ άλλων, το έργο επιτρέπει τη μεταγλώττιση κώδικα γραμμένου σε C σε bytecode eBPF χρησιμοποιώντας τον κανονικό μεταγλωττιστή eBPF που βασίζεται σε Clang και τρέχει χειριστές eBPF που έχουν ήδη δημιουργηθεί για Linux πάνω από τον πυρήνα των Windows, παρέχοντας ένα ειδικό επίπεδο συμβατότητας και υποστηρίζοντας το τυπικό API Libbpf για συμβατότητα με εφαρμογές που αλληλεπιδρούν με προγράμματα eBPF. Αυτό περιλαμβάνει επίπεδα που παρέχουν άγκιστρα τύπου Linux για XDP (eXpress Data Path) και σύνδεση υποδοχής, αφηρημένη πρόσβαση στη στοίβα δικτύου και προγράμματα οδήγησης δικτύου των Windows. Από τα σχέδια, σημειώνεται η παροχή πλήρους συμβατότητας σε επίπεδο πηγαίου κώδικα με τυπικούς χειριστές Linux eBPF.

Η Microsoft έχει ετοιμάσει μια εφαρμογή του eBPF για Windows

Η βασική διαφορά στην εφαρμογή του eBPF για Windows είναι η χρήση ενός εναλλακτικού επαληθευτή bytecode, που προτάθηκε αρχικά από υπαλλήλους και ερευνητές της VMware από πανεπιστήμια του Καναδά και του Ισραήλ. Ο επαληθευτής εκτελείται σε μια ξεχωριστή απομονωμένη διαδικασία στο χώρο χρήστη και χρησιμοποιείται πριν από την εκτέλεση προγραμμάτων BPF για τον εντοπισμό σφαλμάτων και τον αποκλεισμό πιθανής κακόβουλης δραστηριότητας.

Το eBPF για Windows χρησιμοποιεί μια μέθοδο στατικής ανάλυσης που βασίζεται στην Abstract Interpretation για επαλήθευση, η οποία, σε σύγκριση με τον επαληθευτή eBPF για Linux, έχει χαμηλότερο ποσοστό ψευδώς θετικών, υποστηρίζει ανάλυση βρόχου και παρέχει καλή επεκτασιμότητα. Η μέθοδος λαμβάνει υπόψη πολλά τυπικά μοτίβα εκτέλεσης που λαμβάνονται από την ανάλυση υπαρχόντων προγραμμάτων eBPF.

Μετά την επαλήθευση, ο bytecode περνά σε έναν διερμηνέα σε επίπεδο πυρήνα ή διαβιβάζεται μέσω ενός μεταγλωττιστή JIT, ακολουθούμενο από την εκτέλεση του κώδικα μηχανής που προκύπτει με δικαιώματα πυρήνα. Για την απομόνωση των χειριστών eBPF σε επίπεδο πυρήνα, χρησιμοποιείται ο μηχανισμός HVCI (HyperVisor-enforced Code Integrity), ο οποίος χρησιμοποιεί εργαλεία εικονικοποίησης για την προστασία των διεργασιών στον πυρήνα και παρέχει επαλήθευση της ακεραιότητας του εκτελέσιμου κώδικα με ψηφιακή υπογραφή. Ο περιορισμός του HVCI είναι η δυνατότητα επαλήθευσης μόνο ερμηνευμένων προγραμμάτων eBPF και η αδυναμία χρήσης του σε συνδυασμό με JIT (δίνεται επιλογή - είτε απόδοση είτε πρόσθετη προστασία).

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο