[하루한줄] CVE-2021-23874: McAfee COM-objects 권한 상승 취약점

URL

Discovering and exploiting McAfee COM-objects (CVE-2021-23874)

Target

  • McAfee Total Protection 16.0.30 이전 버전

Explain

McAfee의 플래그십 안티 바이러스 제품 McAfee Total Protection의 COM 객체에서 local privilege escalation이 가능한 취약점이 발견되었습니다.

McAWFwk 서비스에서 CoInitializeSecurity 함수가 호출될 때 pSecDesc 파라미터는 널 포인터이며 dwCapabilities의 값은 0입니다. dwCapabilities 파라미터에 EOAC_AAPIDEOAC_ACCESS_CONTROL 플래그가 설정되어 있지 않으면, CoInitializeSecuritypSecDesc를 액세스 검사에 사용하는 포인터로 인식합니다. 따라서 pSecDesc가 널 포인터이므로 ACL 검사를 수행하지 않습니다.

이를 통해 시작 시 IMcClassFactory를 통해 CoManageOem Class 객체를 구현하고 IMcClassFactory::InternalCreateObject를 통해 객체를 반환 받아 ImanageOem::RunProgram을 통해 NT Authority\System 권한으로 임의 프로세스 실행이 가능합니다. 하지만 COM 객체를 구현할 때 ProxyStub DLL에 self-defense 기능이 존재합니다. 이는 PEB 구조를 수정하여 ValidateModule 함수의 유효성 검사 시 프록시가 호출되는 모듈의 경로를 스푸핑하여 우회가 가능합니다. 첫 번째 검사가 수행되기 전에 McAfee의 서명이 된 아무 바이너리의 경로를 MasqueradeImagePath 함수를 호출하여 우회가 가능합니다.