[하루한줄] CVE-2020-1034: Windows Kernel EoP
URL
Explicit Is Always Good? Read the Story of CVE-2020-1034
Target
- Windows 8
- Windows 10
- Windows Server 2012
- Windows Server 2019
Explain
지난 9월 커널 권한 상승 취약점에 대한 패치가 포함되었습니다. 해당 패치에 영향을 받는 모듈은 ntoskrnl.exe입니다.
EtwpNotifyGuid에서 cmp [rdi+0Ch], r12b를 수행하는데 r12b의 초기화 값은 4이지만 1로 리셋이 됩니다. byte ptr[rdi+0Ch]가 1의 값과 같다면 rdi+18h 값은 새로 생성된 UmReplyObject의 주소로 설정됩니다. twpQueueNotification에서 UmReplyObject가 참조된 부분을 찾으면 bl의 값은 0이고 rbp+0Ch가 0이 아닐 시 rbp+18h는 객체의 포인터를 읽습니다.
rbp+0Ch는 EtwpNotifyGuid에서는 1과 비교하여 UmReplyObject를 만들지 여부를 결정하지만 마지막 비교에서 0과 비교하여 일관성 없는 비교가 됩니다.
만약 비교한 값이 1이나 0이 아닐 경우 객체 주소가 임의의 값으로 사용되고 ObfReferenceObject가 호출되어 ptr[[InputBuffer + 0x18]-0x30] ++연산이 수행되어 임의 주소 증가가 이루어집니다. 따라서 Windows 10 RS4 이상의 커널에서 프로세스 토큰의 권한 필드를 조작할 수 있습니다.
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.