用于通过生成系统 cmd 来利用 CVE-2021-27965 实现 LPE 的简单 PoC。
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-27965
在已签名的 MICSYS Windows 驱动程序(MsIo64.sys)中发现了一个问题,该问题可能导致整个本地系统受损。驱动程序的 ioctl 分发例程在 所有 IOCTL 代码中都存在基于栈的缓冲区溢出,并且还缺少对用户提供的缓冲区的验证。
任何人都可以创建句柄并向这些破坏 Windows 安全模型的 IOCTL 代码发起 ioctl 请求:
对于每个 IOCTL 代码,驱动程序并非直接访问 Irp->SystemBuffer,而是使用类似 memcpy 的函数将 Irp->SystemBuffer 复制到当前函数的栈帧缓冲区(该缓冲区大小始终固定),然后再使用此缓冲区。由于 Irp->SystemBuffer 和 Irp->CurrentStackLocation->InputBufferLength 都由调用进程控制,恶意行为者可以发送足够大的缓冲区来溢出函数栈帧中的缓冲区。需要注意的是:即使在 DriverEntry 中调用了 __security_init_cookie(),ioctl 分发例程中却由于某种原因缺少 __security_check_cookie()。
TODO
TODO