[하루한줄] CVE-2021-33739: Microsoft DWM core library의 권한 상승 취약점
URL
https://mp.weixin.qq.com/s/ZjJ4kXOCTSez2erVKYzKbg
Target
- Windows 21H1
Explain
Windows 데스크톱 창 관리자(Desktop Window Manager, dwm.exe)의 dwmcore.dll
모듈에서 UAF로 인한 권한 상승 취약점이 발견되어 세부 정보가 공개되었습니다.
dwmcore.dll
모듈의 CinteractionTrackerBindingManager
객체는 참조 횟수(reference count)를 기준으로 해제 시점이 결정됩니다. 객체를 바인딩하는 경우CInteractionTrackerBindingManager::ProcessSetTrackerBindingMode
함수를 사용하고 참조 횟수가 1 증가하며, 바인딩 해제하는 경우 CInteractionTrackerBindingManager::RemoveTrackerBindings
함수를 사용하며 참조 횟수가 1 감소합니다. 참조 횟수가 0이 된 객체는 CMILCOMBase::InternalRelease
함수에 의해 해제됩니다.
취약점은 같은 객체를 바인딩하는 리소스가 CinteractionTrackerBindingManager
객체를 참조했을 때 발생하며 해커가 DirectComposition API를 사용해 코드 수준에서 트리거가 가능합니다.
동일한
CinteractionTrackerMarshaler
를 바인딩하는 두 개의 리소스가CinteractionTrackerBindingManager
을 참조합니다.CInteractionTrackerBindingManager::ProcessSetTrackerBindingMode
함수는 동일한CinteractionTrackerMarshaler
에 대해 한 번만 호출되어 참조 횟수는 1 증가합니다.리소스의 사용이 종료되고 해제될 때
CInteractionTrackerBindingManager::RemoveTrackerBindings
함수는 각각의 리소스에 대해 두 번 호출됩니다.첫 호출 시
CinteractionTrackerBindingManager
객체의 참조 횟수가 1 감소합니다. 0이 된 경우CMILCOMBase::InternalRelease
함수에 의해 해제됩니다.두 번째 호출 시 해제된
CinteractionTrackerBindingManager
객체에 접근하게 되어 UAF가 트리거 됩니다.
공개된 PoC는 https://github.com/mavillon1/CVE-2021-33739-POC 에서 확인할 수 있으며 dwmcore.dll
에서는 지난 4월 out of bounds write 취약점(CVE-2021-28310)이 공개되기도 했습니다.
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.