
Exploit del driver vulnerabile LnvMSRIO.sys
Exploit proof-of-concept per LnvMSRIO.sys (driver MSR I/O di Lenovo), che dimostra la lettura/scrittura arbitraria della memoria fisica e l'accesso alla memoria del kernel tramite la traduzione VA-to-PA di Superfetch.
| Proprietà | Valore |
|---|---|
| Nome driver | LnvMSRIO.sys |
| Nome dispositivo | \\.\WinMsrDev |
| Nome servizio | LnvMSRIO |
| Produttore | Lenovo |
| Scopo | Accesso a MSR e memoria fisica per utility di sistema |
Il driver espone operazioni privilegiate del kernel al modo utente:
Lettura memoria fisica (16 byte):
Offset 0: UInt64 PhysicalAddress
Offset 8: DWORD AccessSize (1=byte, 2=word, 8=qword)
Offset 12: DWORD Count (number of elements)
Scrittura memoria fisica (16 byte di intestazione + dati):
Offset 0: UInt64 PhysicalAddress
Offset 8: DWORD AccessSize
Offset 12: DWORD Count
Offset 16: Data[] (bytes to write)
Poiché il driver fornisce solo accesso alla memoria fisica, usiamo la tecnica Superfetch per tradurre gli indirizzi virtuali del kernel in indirizzi fisici:
NtQuerySystemInformation(SystemSuperfetchInformation)LnvMSRIOExploit.exe <path_to_LnvMSRIO.sys>
Requisiti:
LnvMSRIOExploit.dproj nell'IDE Delphi (RAD Studio)Win64\Release\LnvMSRIOExploit.exeQuesto strumento è fornito esclusivamente a scopo educativo e di ricerca sulla sicurezza autorizzata. L'uso non autorizzato su sistemi di cui non si è proprietari o per cui non si ha esplicito permesso di test è illegale. L'autore non si assume alcuna responsabilità per un uso improprio.
Solo per scopi di ricerca e didattici.
| Codice IOCTL | Funzione | Descrizione | PoC |
|---|
0x9C406104 | Lettura memoria fisica | Mappa tramite MmMapIoSpace | ✅ |
0x9C40A108 | Scrittura memoria fisica | Mappa e scrive la memoria fisica | ✅ |
0x9C402084 | Lettura MSR | Legge il Model-Specific Register | ❌ |
0x9C402088 | Scrittura MSR | Scrive il Model-Specific Register | ❌ |