불량 패치가 적용된 Windows 제로 데이, 새 공개 익스플로잇 코드 획득 침해사고분석팀 2020.12.24 |
|
지난 6월 Microsoft는 공격자가 손상된 시스템에서 커널 수준으로 권한을 높일 수 있는 Windows 운영체제의 취약점에 대한 수정 사항을 발표했다. 그러나 패치가 제대로 적용되지 않았다.
공격자가 5월에 제로 데이로 악용한 이 문제는 여전히 악용 가능하지만, 보안 연구원이 공개적으로 사용할 수 있는 PoC 코드로 입증함에 따라 다른 방법으로 악용될 수 있다.
Google Project Zero 보안 연구원인 Maddie Stone은 6월에 Microsoft의 패치가 기존의 취약점(CVE-2020-0986)을 수정하지 않았으며, 일부 조정을 통해 여전히 활용할 수 있다는 것을 발견했다.
2020년 5월, 이 문제는 원격 코드 실행을 허용하는 Internet Explorer의 버그와 함께 권한 상승에 악용되었다. Kaspersky가 발견한 공격의 두 가지 결함은 모두 제로 데이였다.
Stone은 공격자가 CVE-2020-0986을 악용하여 포인터 대신 오프셋을 전송하여 커널 수준에 대한 사용 권한을 높일 수 있다고 말했다.
트위터에서, 연구자은 원래 버그가 임의 포인터 역참조였기 때문에 공격자가 memcpy 함수에 대한 "src"와 "dest" 포인터를 제어할 수 있게 되었다고 기술한다.
Microsoft의 패치는 포인터를 오프셋으로 변경했기 때문에 부적절했으며, 따라서 함수의 매개 변수를 계속 제어할 수 있었다.
[그림1. Stone의 트위터]
현재 CVE-2020-17008로 식별된 취약점을 악용하는 방법에 대해 간략히 설명했다.
A low integrity process can send LPC messages to splwow64.exe (Medium integrity) and gain a write-what-where primitive in splwow64’s memory space. The attacker controls the destination, the contents that are copied, and the number of bytes copied through a memcpy call. The offset for the destination pointer calculation is only constrained to be: Offset <= 0x7FFFFFFF Splwow64 passes the LPC message to GdiPrinterThunk. The vulnerable memcpy is in message 0x6D.
Microsoft의 패치 이후에도 여전히 악용이 가능하다는 것을 보여주기 위해 Stone은 Kaspersky의 원래 코드를 수정한 PoC 코드를 실행하는 방법에 대한 지침을 게시했다.
연구원은 PoC가 취약점을 두 번 악용한다고 덧붙인다."먼저 메시지가 저장된 Heap 주소를 유출하고 포인터를 생성하기 위해 오프셋이 추가된 다음 쓰기 작업을 수행한다."
Microsoft는 9월 24일에 보고서를 받고 하루 후에 문제를 확인하여 CVE-2020-17008을 할당했다.
회사는 2020년 11월에 패치를 계획했지만 테스트 단계에서 확인된 문제로 인해 2021년 1월 12일에 다음 패치가 진행될 것이다.
Google Project Zero는 취약점 공개 정책이 90일이며 수정 사항을 적용하는데 더 많은 시간이 필요할 경우 14일 연장된다. Microsoft가 1월 6일 이전에는 패치가 제공되지 않을 것이라고 알려 주었으므로, 두 마감일 중 어느 것도 맞출 수 없었다.
게다가, Stone이 말했듯이, 공격자들은 과거에 이 버그를 악용했고, 잘 알고 있으며, 잘못된 수정 사항이 있을 때 다시 활용할 수 있다.
출처 |