
EagleEyes Lite Android 애플리케이션에서의 민감 정보 평문 전송
EagleEyes Lite (버전 2.0.0)에서 GetHttpsResponse() 메서드는 계정 ID, 비밀번호, 디바이스 토큰 및 내부 서버 URL과 같은 민감 정보를 HTTPS 요청의 쿼리 문자열에 직접 포함하여 전송합니다.
이러한 자격 증명과 토큰이 요청 본문에 안전하게 배치되지 않고 URL에 포함되어 있기 때문에 MITM 공격을 수행하는 공격자가 쉽게 추출할 수 있습니다.
명목상 HTTPS 연결을 사용하더라도 이러한 민감 매개변수가 URL 내에서 평문으로 노출되면 자격 증명 유출 및 AVTECH CCTV 시스템에 대한 무단 액세스 위험이 크게 증가합니다.
이러한 취약점은 사용자 데이터의 기밀성을 훼손하며, 특히 신뢰할 수 없는 네트워크에서 운영될 때 애플리케이션을 취약하게 만듭니다.
디바이스가 Android 버전 8.0 미만에서 실행 중일 때, 즉 SDK_API_26이 false로 설정된 경우 메서드는 GetHttpsUrlResponse()를 반환하지 않습니다.
대신 try 블록 내부의 취약한 로직을 실행합니다.
public static String GetHttpsResponse(String str) {
if (SDK_API_26) {
return GetHttpsUrlResponse(str);
}
try {
...
HttpResponse execute = new DefaultHttpClient(
new SingleClientConnManager(defaultHttpClient.getParams(), schemeRegistry),
defaultHttpClient.getParams()
).execute(new HttpPost(str));
...
}
...
}
여기서 매개변수 str에는 전체 요청 URL이 포함되며, 이 URL에는 account_id와 password 같은 민감 정보가 쿼리 문자열에 직접 포함되어 있습니다.
결과적으로 사용자 자격 증명이 URL 내에서 평문으로 노출되어 MITM 공격을 통해 가로채거나 중간 시스템에 기록될 경우 유출될 위험에 노출됩니다.
Frida 후킹 스크립트 hook.js를 실행하여 GetHttpsResponse() 메서드가 호출되었고, 생성된 요청 URL에 민감 정보(account_id 및 password)가 평문으로 포함되어 있음을 확인했습니다.
취약한 GetHttpsResponse() 구현에 대한 자세한 분석은 CVE-2025-46408를 참조하십시오.
애플리케이션은 계정 ID, 비밀번호 또는 인증 토큰과 같은 민감 정보를 URL 쿼리 매개변수에 절대 포함해서는 안 됩니다.
대신 자격 증명은 POST 매개변수를 사용하여 HTTPS 요청 본문 내에서 안전하게 전송해야 합니다. 이렇게 하면 민감한 값이 URL, 로그 또는 중간 시스템에 노출되는 것을 방지할 수 있습니다.