Mullvad обнаружила новый способ обхода VPN в Android. Вредоносное приложение способно отправлять служебные пакеты напрямую в интернет, даже если пользователь активировал опцию «Блокировать соединения без VPN». Получатель видит реальный IP-адрес сети, несмотря на то что VPN остаётся включённым.
Армин Шупук исследовал проблему и опубликовал технический анализ 29 июля. Метод раскрывает сетевой адрес и позволяет отследить устройство, но не передаёт содержимое приложений. Формат пакетов определяет Android, а приложение выбирает адрес получателя. Для атаки нужны только стандартные сетевые разрешения, которые система дает без запроса пользователю.
Проблема связана с NAT-T keepalive. Эти небольшие периодические пакеты сохраняют соединение через устройства, выполняющие трансляцию адресов. Android может отправить такую задачу на сетевой чип, чтобы не пробуждать приложение каждый раз. При передаче на аппаратуру система пропускает проверку, которая должна направлять трафик через VPN или блокировать прямое соединение.
На Pixel 8 Pro исследователь зафиксировал UDP-пакеты на порт 4500, отправлявшиеся каждые десять секунд при активной блокировке. Проверка затронула также Samsung Galaxy Z Fold7 и Nothing Phone (3a) с Android 16. Для этих моделей автор подтвердил работу аппаратного механизма, но не обнаружил внешний перехват пакетов. Шупук полагает, что проблема распространена на устройствах с Android 12 и новее, основываясь на общем системном коде и анализе прошивок. Полные испытания каждого устройства не проводились.
После активации отправка продолжается при заблокированном экране и в режиме энергосбережения. Остановка приложения, удаление, потеря сети или перезагрузка прерывают передачу. Публикации содержат исследовательские проверки и не содержат данных о реальных атаках.
Google получил отчёт 15 мая и 19 мая пометил его как дубликат более ранней заявки. В доступной переписке нет подтверждения исправления или присвоения CVE. Закрытие как дубликата не означает, что разработчики устранили уязвимость.
Mullvad считает, что для полного исправления нужны изменения в Android. GrapheneOS осведома о проблеме и работает над защитой. На момент проверки 12 сентября задача оставалась открытой, поэтому защищённость альтернативной системы не подтверждена.
Mullvad описала потенциальный временный способ: защитное приложение могло бы занять аппаратные ресурсы для keepalive раньше вредоноса. Компания не планирует это реализовывать, так как такой подход сам требует трафика вне туннеля и неэффективен, если злоумышленник включит механизм первым.
В мае Android была уязвимость через другой механизм. Приложение поручало системе отправить заключительное сообщение при закрытии QUIC-соединения, и Android отправлял пакет мимо VPN. GrapheneOS отключила эту функцию. Новая проблема касается периодической аппаратной отправки и требует отдельного решения. За несколько месяцев исследователи продемонстрировали два разных способа, которыми обычное приложение нарушает обещание системной настройки «Блокировать соединения без VPN».
