[하루한줄] Windows Installer EoP 6th patch bypass

URL

Disclosing about 8 0-day vulnerability

Target

Windows installer

Explain

CVE-2020-16902에 대한 패치 우회가 공개되었습니다. CVE-2019-1415로 처음 제보된 Windows Installer EoP 취약점의 6번째 패치 우회입니다.

CVE-2020-16902의 내용은 다음과 같습니다. Windows Installer는 설치 작업 실패를 대비해 설치 작업 중 삭제되는 파일과 롤백 스크립트를C:\Config.Msi 디렉터리에 백업합니다. 백업 전에 C:\Config.Msi 디렉터리를 삭제하고 재생성하는 로직이 있는데 Setsecurity()의 race condition 취약점 패턴이 남아있어 악용이 가능합니다.

따라서 C:\Config.Msi를 삭제하고 C:\Config.Msi이 여전히 존재한다면(race-con 트리거 조건) C:\Config.Msi 대신 C:\windows\install\config.msi에 롤백 파일을 백업하도록 패치되었습니다.

하지만 다음과 같은 이유로 우회가 가능합니다. 만약 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders\C:\Config.Msi 레지스트리 키가 존재하면 그대로 C:\Config.Msi를 백업에 사용합니다. C:\Config.Msi를 삭제한 후 C:\Config.Msi의 삭제 여부를 한번 더 체크한 다음 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders\C:\Config.Msi 레지스트리 키를 삭제합니다. C:\Config.Msi가 삭제된 직후 C:\Config.Msi를 생성하면 레지스트리 키가 삭제되지 않습니다. Windows Installer는 C:\Config.Msi를 백업에 사용하게 되고 이전 취약점들을 그대로 악용할 수 있습니다.