
EagleEyes Lite Android 애플리케이션에서의 부적절한 인증서 체인 검증
EagleEyes Lite (버전 2.0.0)는 HTTPS 통신 중 SSL/TLS 서버 인증서를 제대로 검증하지 못합니다.
애플리케이션은 push.lite.avtech.com.MySSLSocketFactoryNew.checkServerTrusted()에서 사용자 정의 X509TrustManager를 구현하여 인증서 만료만 확인하고 전체 인증서 체인 검증을 생략합니다.
결과적으로 공격자는 이 약점을 악용하여 자체 서명된 인증서나 악성 인증서를 사용해 MITM 공격을 수행할 수 있으며, 이는 민감한 감시 데이터의 가로채기 및 조작으로 이어집니다.
사용자 정의 X509TrustManager를 통해 애플리케이션은 인증서의 만료 날짜만 확인하고 인증서 체인이 올바르게 신뢰되는지 검증하지 않습니다.
@Override // javax.net.ssl.X509TrustManager
public void checkServerTrusted(X509Certificate[] x509CertificateArr, String str) throws CertificateException {
try {
x509CertificateArr[0].checkValidity();
} catch (Exception unused) {
throw new CertificateException("Certificate not valid or trusted.");
}
}
사용자 정의 X509TrustManager를 통해 애플리케이션은 인증서의 만료 날짜만 확인하고 인증서 체인이 올바르게 신뢰되는지 검증하지 않습니다.
이를 통해 MITM 공격자는 애플리케이션과 백엔드 서버 간의 민감한 통신을 쉽게 가로채거나 수정할 수 있습니다.
애플리케이션은 사용자 정의 X509TrustManager를 전체 인증서 체인을 검증하는 기본 시스템 구현으로 대체해야 합니다. 불일치하거나 신뢰할 수 없는 인증서를 수락하지 않도록 적절한 호스트 이름 검증을 적용해야 합니다.
레거시 Android 버전을 위한 안전하지 않은 대체 로직은 제거되거나 동등한 보안 검사로 업데이트되어 일관된 TLS 검증을 보장해야 합니다.