Небезопасный X509TrustManager

Категория OWASP: MASVS-CODE: Качество кода

Обзор

Класс X509TrustManager отвечает за проверку подлинности удаленного сервера. Это делается путем проверки сертификата сервера.

Небезопасная реализация X509TrustManager в приложении Android — это реализация, которая не проверяет должным образом подлинность сервера, с которым взаимодействует приложение. Это может позволить злоумышленнику выдать себя за законный сервер и заставить приложение отправить злоумышленнику конфиденциальные данные.

Уязвимость существует, поскольку использование класса X509TrustManager в Java/Android позволяет полностью переопределить проверку сервера. Класс X509TrustManager имеет две интересные функции: checkServerTrusted() и getAcceptedIssuers() . Эти вызовы функций можно настроить так, чтобы они доверяли всем сертификатам X.509. Наконец, пользовательская логика проверки может быть ошибочной или неполной и допускать неожиданные соединения. Во всех этих случаях назначение класса было отменено, а сетевое соединение, установленное на основе выходных данных X509TrustManager не является безопасным.

Влияние

Небезопасные реализации X509TrustManager могут привести к появлению уязвимостей, которые можно использовать для выполнения атак MitM (Man-in-the-Middle) на сетевой трафик из приложения-жертвы. Результатом использования этого небезопасного кода является то, что сетевые данные пользовательского приложения могут быть скомпрометированы сетевыми злоумышленниками (удаленно или локально), если этот код сработает. Воздействие зависит от непреднамеренного раскрытия содержимого сетевого трафика (PII, личная информация, конфиденциальные значения сеанса, учетные данные службы и т. д.).

Смягчения

Используйте функциональность NetworkSecurityConfig.xml, чтобы обеспечить правильную обработку всех соединений на этапе производства, тестирования, отладки и разработки, а не использовать или внедрять собственный код проверки сертификата TLS/SSL. Если для тестовых и отладочных сборок необходимо использовать самозаверяющий сертификат, рассмотрите возможность использования NetworkSecurityConfig вместо реализации специального X509TrustManager .

Ресурсы