
Некорректная проверка цепочки сертификатов в Android-приложении EagleEyes Lite
EagleEyes Lite (версия 2.0.0) не выполняет надлежащую проверку сертификатов SSL/TLS при HTTPS-соединении.
Приложение реализует собственный X509TrustManager в push.lite.avtech.com.MySSLSocketFactoryNew.checkServerTrusted(), который проверяет только срок действия сертификата и не выполняет полную проверку цепочки сертификатов.
В результате злоумышленники могут использовать эту уязвимость для проведения 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.