[하루한줄] Crucial’s MOD Utility LPE – CVE-2021-41285

URL

https://voidsec.com/crucial-mod-utility-lpe-cve-2021-41285/

Target

  • Crucial Ballistix MOD Utility

Explain

Crucial Ballistix MOD Utility의 MODAPI.sys에서 권한 상승을 할 수 있는 취약점들이 공개되었습니다. 공개된 취약점들은 모두 IOCTL 요청을 통해 트리거할 수 있습니다.

  1. IO bus에 데이터 데이터 쓰기 혹은 읽어오기
    • 0x9C406144: HalGetBusDataByOffset
    • 0x9C40A148: HalSetBusDataByOffset
    • IO bus에 데이터를 써서 PCI 설정 정보 혹은 벤더의 데이터 레지스터들을 수정할 수 있습니다.
  2. IO port에서 1/2/4 바이트 읽기 혹은 쓰기
    • 0x9C40A0C8, 0x9C40A0D8 __outbyte, 0x9C40A0DC __outword, 0x9C40A0E0 __outdword
    • 0x9C4060C4, 0x9C4060CC __inbyte, 0x9C4060D0 __inword, 0x9C4060D4 __indword
    • HDD와 GPU 등 디바이스들과 직접적으로 통신할 수 있으며 디스크에 직접 쓰고 읽을 수 있습니다.
  3. 임의 물리주소 할당 및 유저 공간과 매핑
    • 0x9C406104: MmMapIoSpace
    • 램에 있는 물리주소를 유저 프로세스 메모리로 매핑시킬 수 있습니다. 이를 통해 메모리에서 바로 정보를 추출할 수 있습니다.
  4. MSR 쓰기
    • Model-Specific Registers(MSRs)는 주로 CPU 정보를 가져오는데 사용됩니다. 이 중 MSR _LSTAR은 유저모드에서 커널모드로 전환할 때 사용되는데, 이 때 MSR _LSTAR 레지스터의 내용을 읽고 해당 주소로 call 합니다. MSR _LSTAR를 조작할 수 있다면 실행 흐름을 조작할 수 있습니다.
    • 0x9C402084: __readmsr
    • 0x9C402088: __writemsr
    • MSR을 읽고 쓸 수 있습니다.