
Lenovo 디스패처 드라이버(LnvMSRIO.sys)를 악용하기 위한 PoC (CVE-2025-8061)
이것은 lenovo dispatcher 드라이버(LnvMSRIO.sys)(CVE-2025-8061)를 익스플로잇하기 위한 기본 개념 증명입니다. 취약점은 Luis Casvella가 발견했습니다(출처: https://blog.quarkslab.com/exploiting-lenovo-driver-cve-2025-8061.html).
이 PoC의 주요 아이디어는 읽기/쓰기 프리미티브만을 악용하여 ntoskrnl.exe에서 시스템 토큰을 탈취하는 것입니다. 이를 위해 PoC는 Superfetch/PFN(https://www.outflank.nl/blog/2023/12/14/mapping-virtual-to-physical-adresses-using-superfetch/)을 사용하여 사용자 모드에서 가상 주소를 물리적 주소로 변환합니다.
Superfetch를 사용하여 가상 주소를 물리적 주소로 변환한 후 취약한 드라이버에 직접 제공하여 원하는 모든 주소를 읽고 쓸 수 있습니다. 이를 통해 PoC는 ntoskrnl.exe에 정의된 NtAddAtom 함수의 시작 부분을 작은 셸코드로 덮어써서 사용자 모드 셸코드(인라인 어셈블리를 사용하여 base.rs의 steal_kernel_token_shellcode_fn에 정의됨)로 점프하게 합니다. 이 작은 셸코드는 generate_jmp_user_shellcode에서 생성되며, 보시다시피 CR4의 20비트를 해제하여 SMEP를 비활성화한 후 사용자 랜드 셸코드를 호출(시스템 토큰 탈취)하고 마지막으로 SMEP를 다시 활성화합니다.
이 모든 과정을 통해 시스템 cmd를 얻을 수 있습니다.
중요: Superfetch를 쿼리하려면 관리자 권한으로 실행해야 합니다.
Windows 10(22h2) 및 Windows 11(25h2)에서 테스트되었습니다. 사용 중인 Windows 버전에 맞게 오프셋을 조정하십시오.