
스택 기반 버퍼 오버플로 in MsIo64.sys, nt authority/system으로의 로컬 권한 상승 개념 증명
CVE-2021-27965를 악용하여 시스템 명령을 실행하여 LPE를 수행하는 간단한 PoC.
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-27965
서명된 MICSYS Windows 드라이버(MsIo64.sys)에서 전체 로컬 시스템의 손상으로 이어질 수 있는 문제가 발견되었습니다. 드라이버의 ioctl 디스패치 루틴은 all IOCTL 코드에서 스택 기반 버퍼 오버플로우가 발생하며 사용자 제공 버퍼에 대한 검증도 부족합니다.
누구나 핸들을 생성하고 이러한 IOCTL 코드에 ioctl 요청을 보낼 수 있으며, 이는 Windows 보안 모델을 위반합니다:
각 IOCTL 코드에서 드라이버는 _Irp->SystemBuffer_에 직접 접근하지 않고 memcpy와 유사한 함수를 사용하여 _Irp->SystemBuffer_를 현재 함수의 스택 프레임 버퍼(항상 고정 크기)로 복사한 후 이 버퍼를 사용합니다. _Irp->SystemBuffer_와 Irp->CurrentStackLocation->InputBufferLength 모두 호출 프로세스에 의해 제어되므로, 악의적인 공격자는 함수 스택 프레임 내부의 버퍼를 오버플로우할 만큼 충분히 큰 버퍼를 보낼 수 있습니다. 참고: DriverEntry에 **__security_init_cookie()**가 있더라도, ioctl 디스패치에는 어떤 이유로 **__security_check_cookie()**가 누락되어 있습니다.
TODO
TODO