
Fehlerhafte Hostname-Verifizierung in der Android-Anwendung EagleEyes Lite
EagleEyes Lite (Version 2.0.0) deaktiviert die Hostname-Überprüfung während der HTTPS-Kommunikation durch die Verwendung von SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER.
Infolgedessen akzeptiert die Anwendung TLS-Zertifikate unabhängig von deren Common Name (CN) oder Subject Alternative Name (SAN), wodurch ein Angreifer den legitimen Server mit jedem gültigen oder selbstsignierten Zertifikat imitieren kann.
Ein Angreifer, der sich im selben Netzwerk befindet, kann diese Schwachstelle für einen MITM-Angriff ausnutzen und so vertrauliche Kommunikation zwischen der Anwendung und den AVTECH-Backend-Diensten abfangen oder verändern.
Wenn das Gerät auf Android-Versionen unter 8.0 läuft, also SDK_API_26 auf false gesetzt ist, gibt die Methode GetHttpsUrlResponse() nicht zurück.
Stattdessen führt sie die anfällige Logik innerhalb des try-Blocks aus.
public static String GetHttpsResponse(String str) {
if (SDK_API_26) {
return GetHttpsUrlResponse(str);
}
try {
...
X509HostnameVerifier x509HostnameVerifier = SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
socketFactory.setHostnameVerifier(x509HostnameVerifier);
...
}
...
}
Hier deaktiviert die Verwendung von SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER die ordnungsgemäße Hostname-Überprüfung, was bedeutet, dass die TLS-Verbindung selbst dann erfolgreich ist, wenn der CN (Common Name) oder SAN (Subject Alternative Name) des Serverzertifikats nicht mit dem angeforderten Hostnamen übereinstimmt.
Infolgedessen kann ein Angreifer den legitimen Server mit einem gefälschten Zertifikat imitieren und MITM-Angriffe starten, um vertrauliche Kommunikation abzufangen oder zu verändern.
Durch Ausführen des Frida-Hooking-Skripts hook.js wurde der Wert von SDK_API_26 zwangsweise auf false gesetzt, um eine ältere Android-Version zu emulieren. Dadurch konnten wir überwachen, ob die Methode GetHttpsResponse() aufgerufen wurde.
Als Ergebnis haben wir bestätigt, dass GetHttpsResponse() während der Ausführung erfolgreich aufgerufen wurde.
Aufgrund unzureichender Verschlüsselung sensibler Informationen in Parametern wird auf CVE-2025-50110 verwiesen.
Die Anwendung sollte die Verwendung von SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER entfernen und eine strikte Hostname-Überprüfung für alle HTTPS-Verbindungen durchsetzen. Die Felder Common Name (CN) oder Subject Alternative Name (SAN) des Servers müssen gegen den angeforderten Hostnamen validiert werden, unter Verwendung von HttpsURLConnection.getDefaultHostnameVerifier() oder eines gleichwertigen strikten Verifizierers.
Darüber hinaus sollte jede Legacy-Fallback-Logik, die Hostname-Prüfungen für ältere Android-Versionen deaktiviert, entfernt oder durch sichere Implementierungen ersetzt werden, um eine konsistente TLS-Validierung zu gewährleisten.