
vskrnlintvsp.sys의 정수 잘림(integer truncation)으로 인한 LPE
이 CVE에 대한 익스플로잇의 첫 번째 버전은 https://github.com/MrAle98/CVE-2025-21333-POC/tree/master 에서 찾을 수 있습니다. 저는 MrAle98이 만든 익스플로잇에서 영감을 받아 이 새로운 익스플로잇을 만들었습니다. GUID를 얻기 위해 Windows 샌드박스 프로세스를 열지 않으므로 더 안정적이고 덜 수상합니다. 샌드박스 프로세스의 GUID를 얻기 위해 Microsoft Defender Application Guard(MDAG) API를 사용했습니다.
MrAle98이 사용한 IoRing 스프레이를 사용해 보았지만, IoRing 초기 설정을 마친 후 SubmitIoRing을 한 번에 실행했을 때 작동하지 않았습니다. 이유는 모르겠지만 청크를 할당하는 IopIoRingDispatchRegisterBuffers 함수의 ProbeForWrite 함수에서 예외 오류가 발생했습니다. 그래서 파이프 속성(pipe attribute)을 시도한 다음 큐 엔트리(queue entry)로 전환했습니다. 파이프 속성을 사용해 임의 읽기(arbitrary read)를 얻었지만, 이번에도 임의 쓰기(arbitrary write)를 얻기 위한 큐 엔트리는 작동하지 않았습니다. 그래서 IoRing을 다른 방식으로 사용하는 아이디어를 떠올렸습니다. 스프레이 중에 SubmitIoRing과 설정 작업을 수행하는 방식인데, 이는 작동했습니다. 스레드 우선순위를 Time Critical로 설정하기만 하면 됩니다.
PagedPool에서 최소 크기 0x20으로 IoRing MC 버퍼 엔트리를 사용한 스프레이는 정말 훌륭한 기법입니다. 이에 대해 MrAle98에게 감사드립니다.
그의 블로그는 여기에서 읽을 수 있습니다: blog
msrc: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-21333