Πίσω στα RoboNews
▲ 106 πόντοιsafateam.com4 λεπτά ανάγνωσης•

Ανάλυση του CVE-2025-13032: Εκμετάλλευση double-fetch στον kernel driver της Avast

Πρωτότυπος τίτλος: "CVE-2025-13032: Entering and Breaking the Avast Antivirus Sandbox Part 2" (από safateam)

Αρχικό ΆρθροΣυζήτηση HN (27 σχόλια)
TL;DR (Εν Συντομία)

Η έρευνα αναλύει την εκμετάλλευση μιας ευπάθειας double-fetch στον kernel driver της Avast, η οποία οδηγεί σε heap pool overflow. Μέσω της χειραγώγησης αντικειμένων I/O Ring, οι ερευνητές πέτυχαν αυθαίρετη ανάγνωση και εγγραφή (arbitrary read/write) στον kernel, καταλήγοντας σε κλιμάκωση προνομίων (local privilege escalation).

📌 Κύρια Σημεία & Συμπεράσματα

  • Εκμετάλλευση ευπάθειας double-fetch για την πρόκληση pool overflow στον PAGED_POOL του Windows kernel.
  • Χρήση του I/O Ring object ως στόχο για τη δημιουργία primitives αυθαίρετης ανάγνωσης και εγγραφής (arbitrary R/W).
  • Αξιοποίηση των Memory Descriptor Lists (MDL) για τη διαρροή διευθύνσεων του kernel και τον εντοπισμό του _EPROCESS.
  • Τεχνικές σταθεροποίησης του συστήματος μετά την επίθεση, συμπεριλαμβανομένης της διόρθωσης του ProcessBilled και της διαχείρισης των reference counts.

Η αρχιτεκτονική της ευπάθειας double-fetch

Το CVE-2025-13032 εντοπίστηκε σε έναν kernel driver της Avast, όπου η τιμή Length μιας δομής _UNICODE_STRING ανακτάται πολλαπλές φορές από τον χρήστη. Αυτό επιτρέπει σε ένα δεύτερο thread να μεταβάλλει την τιμή μεταξύ του ελέγχου μεγέθους για την δέσμευση μνήμης (allocation) και της εκτέλεσης της memmove, προκαλώντας υπερχείλιση (overflow) στον pool.

Από το heap overflow στο arbitrary R/W

Η εκμετάλλευση στοχεύει τον PAGED_POOL των Windows. Με τη χρήση heap spraying, οι ερευνητές αντικατέστησαν τα δεδομένα ενός _IORING_OBJECT. Συγκεκριμένα, η αλλοίωση του πίνακα RegBuffers επιτρέπει την ανακατεύθυνση των I/O λειτουργιών σε μια ψευδή δομή _IOP_MC_BUFFER_ENTRY που ελέγχεται από το userland. Ελλείψει SMAP (Supervisor Mode Access Prevention), ο kernel αποαναφέρεται (dereference) σε δείκτες του χρήστη, μετατρέποντας τις λειτουργίες IoRingReadFile και IoRingWriteFile σε ισχυρά εργαλεία ανάγνωσης και εγγραφής μνήμης του kernel.

Διαρροή δεδομένων και κλιμάκωση προνομίων

Για την ολοκλήρωση της επίθεσης, απαιτείται η γνώση της διεύθυνσης του _EPROCESS της διεργασίας. Οι ερευνητές εκμεταλλεύτηκαν το γεγονός ότι το MDL που συνδέεται με το corrupted buffer entry περιέχει δείκτη προς το _EPROCESS. Διαβάζοντας αυτό το πεδίο μέσω του arbitrary read primitive, απέκτησαν πρόσβαση στο token του SYSTEM, το οποίο αντικατέστησαν στο δικό τους process token, επιτυγχάνοντας πλήρη κλιμάκωση προνομίων.

Σταθεροποίηση και αποφυγή συστημικής κατάρρευσης

Η επίθεση περιλαμβάνει κρίσιμα βήματα για την αποφυγή του Blue Screen of Death (BSOD). Η διόρθωση του πεδίου ProcessBilled στο header του pool chunk είναι απαραίτητη, καθώς και η διαχείριση του reference count του fake buffer entry, ώστε να αποφευχθεί η προσπάθεια του kernel να αποδεσμεύσει (free) μνήμη που ανήκει στο userland κατά το teardown του αντικειμένου.

Ετικέτες:#Cybersecurity#Windows Kernel#Exploitation#Avast
GitHub Gems & Trends

Ανακαλύψτε καινοτόμα open-source εργαλεία και κρυμμένα διαμάντια ανοιχτού κώδικα.

Εξερεύνηση Gems

Διαβάστε επίσης