[하루한줄] 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 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.