
Lenovo Diagnostics Driver EoP - Arbitrary R/W
Il controllo di accesso errato per il driver di diagnostica Lenovo consente a un utente con privilegi ridotti di emettere IOCTL del dispositivo per eseguire letture/scritture arbitrarie di memoria fisica/virtuale.
Grazie a ch3rn0byl per l'aiuto (e ho preso in prestito al 100% due delle sue funzioni).
IOCTL 0x222000:
IOCTL 0x222008/0x22200C:
IOCTL 0x222010:
IOCTL 0x222014:
Scrittura tramite MmMapIoSpace
Questo IOCTL copia un valore da un puntatore fornito nel buffer di input nella memoria fisica mappata
Per risolvere MmPteBase e altri prerequisiti, viene trovato uno spazio di "swap" fisico cercando nell'intervallo di memoria fisica 0x1000 - 0x10000 8 byte zero.
Una volta trovato quello spazio, la memoria virtuale viene copiata in quello spazio di swap tramite IOCTL 0x222014 e riletta utilizzando IOCTL 0x222010.
Al momento, TUTTE le letture virtuali vengono eseguite utilizzando questo spazio di "swap".
È il modo migliore per fare lettura/scrittura virtuale? Probabilmente no.
Funziona? Sì.
Oh, e bada ai tuoi offset -- questo è stato testato su Windows 11 21H2 con HVCI disabilitato.