
Microvirt MEmu에서의 원격 코드 실행
CVE ID: CVE-2019-14514
영향을 받는 제품 및 버전: Microvirt MEmu (7.0.2 이전의 모든 버전)
문제 유형: CWE-78: OS 명령에 사용되는 특수 요소의 부적절한 중화 ('OS Command Injection')
요약
MEmu는 Windows용 Android 에뮬레이터입니다. 테스트 중에 우리는 루트 권한으로 코드 실행을 얻기 위해 악용될 수 있는 열린 TCP 포트를 발견했습니다. 7.0.2 이전의 모든 Microvirt MEmu 버전에는 포트 21509에서 수신 대기하는 취약한 바이너리가 포함되어 있습니다. 공격자는 Unix 셸에서 명령 구분 기호로 사용되는 특수 문자를 포함한 조작된 메시지를 전송하여 에뮬레이션된 Android 시스템에서 루트 권한으로 원격 코드 실행을 얻을 수 있습니다.
설명
/system/bin/systemd 바이너리(Freedesktop systemd init 시스템과 무관)는 루트 사용자에 의해 실행되며 포트 21509에서 명령을 수신 대기합니다. installer:uninstall로 시작하는 명령이 전송되면 공격자가 제어하는 입력이 셸 명령 템플릿에 삽입되고 검증이나 이스케이프 없이 /system/bin/sh로 전달됩니다. 즉, 원격 공격자는 ;, && 또는 || 같은 특수 문자를 삽입하여 자신의 셸 명령을 보낼 수 있으며, 이 명령은 에뮬레이션된 시스템에서 루트 권한으로 실행됩니다.
재현
echo "installer:uninstall;[shell_command_to_execute]" | nc [emulator_ip] 21509
에뮬레이터는 명령을 실행한 다음 재부팅되어야 합니다.
해결 방법
MEmu를 7.0.2 이상 버전으로 업데이트하십시오.