[하루한줄] CVE-2021–20082: Integer Overflow to RCE — ManageEngine Asset Explorer Agent

URL

Integer Overflow to RCE

Target

ManageEngine Asset Explorer Agent

Explain

ManageEngine Windows agent에서 취약점이 발견되었습니다. 같은 네트워크에 있다면 IP spoofing과 integer overflow를 악용해 원격 코드 실행을 할 수 있습니다.

ManageEngine Windows agent는 SYSTEM 권한으로 실행되며 ManageEngine server로부터 오는 네트워크 커멘드를 listen 합니다. 해당 agent는 적절한 인증 절차가 없이 네트워크 커멘드의 발신지 IP가 MangeEngine server인지만 확인합니다. 따라서 network에 존재하는 누구나 TLS handshake를 통해 커멘드를 보낼 수 있고, IP spoofing을 통해 커멘드를 실행시킬 수 있습니다.

ManageEngine Windows agent는 ManageEngine server로부터 POST request를 받아 HttpQueryInfoW API를 사용해 http handling을 합니다. Content-Size 필드 값을 사용해 POST request의 data들을 저장할 메모리 공간을 heap에 할당하는데, 할당될 크기를 계산하는 방법은 다음과 같습니다.

  • (Content-Size + 1) * 4 + 2

ManageEngine Windows agent는 32-bite agent이므로 Content-Size 필드 값이 UNIT32_MAX/4라면 위 계산의 결과는 integer overflow로 인해 2가 됩니다. 이를 Heap over flow로 연장시켜 임의 코드 실행을 할 수 있습니다.