Xakep #305. Многошаговые SQL-инъекции
Пользователь Mullvad VPN заметил, что Android-устройства раскрывают DNS-запросы при переключении VPN-серверов, даже если функция Always-on VPN включена с помощью опции «Блокировать соединения без VPN».
Функция «Always-on VPN» предназначена для запуска VPN-сервиса сразу при загрузке устройства и поддержания его в рабочем состоянии, пока устройство или профиль активны. В свою очередь включение опции «Блокировать соединения без VPN» (Block Connections Without VPN) гарантирует, что весь сетевой трафик проходит только через подключенный VPN-туннель.
Однако, изучая упомянутое сообщение пользователя, разработчики Mullvad обнаружили, что в Android существует баг, который приводит к утечке DNS-информации, даже если перечисленные функции включены, и устройство работает под управлением новейшей версией ОС (Android 14).
Ошибка возникает при использовании приложений, которые напрямую обращаются к C-функции getaddrinfo, обеспечивающей независимую от протокола трансляцию текстового имени хоста для IP-адреса. Оказалось, что в Android происходит утечка DNS-трафика, когда VPN активен (но не настроен DNS-сервер) или когда VPN-приложение переконфигурирует туннель, но происходит сбой или вынужденная приостановка работы.
«Мы не обнаружили утечек из приложений, которые используют только API Android, такие как DnsResolver. Браузер Chrome является примером приложения, которое может использовать getaddrinfo напрямую, — пишут разработчики Mullvad. — Вышеописанное применяется независимо от того, включены ли функции Always-on VPN и Block connections without VPN, что не является ожидаемым поведением ОС и, следовательно, должно быть исправлено».
Эксперты сообщают, что первый сценарий возможной DNS-утечки, это ситуация, когда пользователь переключается на другой сервер или меняет DNS-сервер. Такую угрозу можно легко устранить, настроив фальшивый DNS-сервер во время работы VPN-приложения.
Однако справиться с утечкой DNS-запросов при повторном подключении VPN-туннеля уже не так просто. Причем эта проблема актуальна не только для Mullvad, но и для любых других VPN-приложений для Android.
«Следует четко понимать, что подобные способы решения проблем не должны использоваться ни в одном VPN-приложении. Также неправильно, если приложение использует getaddrinfo для резолвинга доменных имен. Такие проблемы должны быть решены на уровне ОС, чтобы защитить всех пользователей Android, независимо от того, какие приложения они используют», — резюмируют в Mullvad.
Представители Google уже сообщили СМИ, что знают об обнаруженной проблеме и изучают результаты изысканий разработчиков Mullvad.
Нужно отметить, что в 2022 году специалисты Mullvad уже находили похожую проблему в Android. Тогда выяснилось, что трафик утекает за пределы VPN-туннелей, когда устройство подключается к сети Wi-Fi. Это тоже происходило даже в том случае, если функции Block connections without VPN или Always-on VPN были активны.