[하루한줄] CVE-2020-0986: Windows splWOW64 Elevation of Privilege

URL

Issue 2096: Windows: splWOW64 Elevation of Privilege

Target

  • Windows 10 2004 (19041.508)

Explain

5월에 Kaspersky는 Windows splWOW64의 Elevation of Privilege가 악용되고 있음을 발견했습니다. Microsoft에서 6월에 패치를 발표했지만 해당 취약점은 수정되지 않았습니다.

CVE-2020-0986은 GDI Print/Print Spooler API의 arbitrary pointer 역참조 취약점입니다. 이 취약점을 이용하여 low integrity 프로세스는 splwow64.exe(medium integrity)에 LPC 메시지를 보내 splwow64의 메모리 영역에 쓰기 권한을 얻을 수 있습니다.

splWOW64는 GdiPrinterThunk로 LPC 메시지를 전달합니다. GdiPrinterThunkINDEX_DocumnetEvent에 해당 취약점이 포함되어 있습니다. INDEX_DocumentEvent의 핸들러는 printer command(LPC 클라이언트를 통해 조작 가능)를 통해 유효한 핸들을 가진 프린터의 명령인지 확인합니다.

확인하고 나면 DecodePointer 함수를 사용하여 fpDocumnetEvent의 전역 변수에 저장된 함수의 포인터를 decode 한 후 decode 된 포인터를 통해 함수를 실행하고 memcpy를 호출합니다. 해커는 memcpy를 통해 복사되는 내용과 바이트 수, destination을 제어할 수 있습니다.

Reference

POC: https://bugs.chromium.org/p/project-zero/issues/attachment?aid=468393&signed_aid=nGwe__E2zFBLc_iqlJ8lVQ==

https://securelist.com/operation-powerfall-cve-2020-0986-and-variants/98329/