[하루한줄] CVE-2020-17087: Windows kernel cng.sys pool-based buffer overflow
URL
Windows Kernel cng.sys pool-based buffer overflow in IOCTL 0x390400
Target
- Windows 10 1903(64-bit)
- Maybe since at least Windows 7
Explain
윈도우 커널 암호화 드라이버인 cng.sys에서 권한 상승이 가능한 취약점이 발견되었습니다. 해당 취약점은 IOCTL 0x390400 처리 중 cng!CfgAdtpFormatPropertyBlock
함수에서 16-bit integer truncation에 의해 발생했습니다.
CONST USHORT DestinationSize = (USHORT)(6 * SourceLength);
PWCHAR OutputBuffer = BCryptAlloc(DestinationSize);
for (USHORT i = 0; i < SourceLength; i++) {
*OutputBuffer++ = "0123456789abcdef"[*SourceBuffer >> 4];
*OutputBuffer++ = "0123456789abcdef"[*SourceBuffer & 0xF];
*OutputBuffer++ = ' ';
SourceBuffer++;
}
SourceLength
의 값이 0x2AAB
보다 크거나 같으면 NonPagedPool에 비정상적으로 작은 버퍼가 할당되고 binary-to-hex 변환 루프에 의해 오버 플로우가 발생합니다. 윈도우 10 1903에서 테스트되었지만 윈도우 7부터 취약점이 존재하는 것으로 예상되며 현재 취약점이 악용되고 있다고 합니다.
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.