TunnelCrack: утечка информации из большинства VPN

Причины массовой уязвимости VPN-клиентов, и что делать для сохранения их функциональности.

Уязвимости TunnelCrack в VPN-клиентах

Основная цель VPN — зашифровать ваше интернет-соединение, защитив информацию от перехвата, просмотра и изменения.  Этим пользуются компании для обеспечения безопасной дистанционной работы или для организации связи между филиалами. В быту же VPN помогает защитить конфиденциальность и получить доступ к контенту из определенного региона.  Недавно разглашенные уязвимости TunnelCrack позволяют нарушить работу VPN, частично лишая пользователей защиты. Проблема касается большинства корпоративных и бытовых VPN. Как это возможно и что делать для защиты?

В чем суть TunnelCrack

Если подключиться к зловредной точке доступа Wi-Fi или злонамеренному провайдеру Интернета, он может выдать компьютеру или телефону такие настройки, что часть трафика приложений пойдет в незашифрованном виде мимо VPN-туннеля и будет доступна для анализа и изменений. Атака работает вне зависимости от того, какой конкретно VPN-протокол используется для соединения. Но перенаправить весь трафик таким образом затруднительно, так что атакующему придется выбрать какой-то конкретный список интересующих его сайтов и серверов, за общением с которыми он хочет подсматривать.

В атаке эксплуатируется настройка исключений, которая предусмотрена во всех клиентах VPN. Каждое исключение направляет часть трафика мимо зашифрованного VPN-канала. Эта функция действительно нужна как минимум в двух случаях.

Во-первых, чтобы не пускать в VPN-туннель трафик между локальными устройствами. Если ваш компьютер транслирует изображение на ваш же телевизор по локальной сети, делать это через VPN не нужно.

Во-вторых, мимо VPN-туннеля должен направляться уже зашифрованный VPN-клиентом трафик, предназначенный для VPN-сервера. Это тоже логично — если направить его в туннель, он будет повторно зашифрован и все пойдет по второму кругу.

Атака на первое исключение названа авторами LocalNet (CVE-2023-36672 и CVE-2023-35838). «Злой» маршрутизатор (например точка доступа Wi-Fi) выдает жертве неверные настройки сети (таблицы маршрутизации) таким образом, что интересующие атакующих публичные IP-адреса представлены как часть локальной сети. В итоге общение жертвы с этими адресами попадает под исключения и идет в обход туннеля VPN.

Атака на второе исключение — ServerIP (CVE-2023-36673 и CVE-2023-36671).  Клиенты как правило обращаются к легитимному VPN-серверу при помощи доменного имени. Атакующий манипулирует своим DNS-сервером, к которому подключается жертва, и возвращает неверный IP VPN-сервера, совпадающий с IP интересующих его целевых ресурсов. При этом VPN-трафик атакующий должен перенаправлять на настоящий VPN-сервер, а поступающий параллельно незашифрованный трафик к целевым IP может менять или анализировать.

Какие сервисы VPN уязвимы к атаке TunnelCrack?

Исследователи заявляют, что все протестированные ими сервисы VPN уязвимы к атаке хотя бы на одной из популярных платформ (Android, iOS, Linux, macOS, Windows). Это заявление подтверждается списком производителей, которые официально заявили об исправлении уязвимостей. Так, Cisco исправила уязвимости в своем корпоративном клиенте VPN Anyconnect (он же Secure Mobility Client). Среди «бытовых» VPN об исправлении заявили около полудюжины крупных игроков, включая Mozilla VPN и Cloudflare WARP.

Количество VPN-клиентов, уязвимых к вариантам атаки LocalNet.

Количество VPN-клиентов, уязвимых к вариантам атаки LocalNet. Источник

Интересно, что на разных ОС у приложения VPN есть разный уровень доступа к настройкам. Из-за этого 100% VPN на iOS и macOS оказались уязвимы, в то время как для Android проблема проявилась лишь в четверти приложений. Более того, под Android начиная с 12 версии провести атаку невозможно. На macOS атака возможна на подавляющем большинстве VPN-клиентов, а в случае с Windows проблема актуальна для двух VPN из трех.

Кстати, стандартный клиент VPN, встроенный в Windows, уязвим к этим атакам, и на момент подготовки этого поста Microsoft не планировала выпуск патчей.

Что делать пользователям VPN-сервисов

  1. Проверьте свой сервис VPN на обновления. Изучите официальный сайт, сделайте запрос в техподдержку. Возможно, ваш поставщик уже обновил свои приложения и настройки. Тогда для решения проблемы может быть достаточно установить обновление. Учтите, что для iOS обновления может и не быть из-за ограничений конфигурации VPN со стороны Apple.
  2. Для сервисов, основанных на чистом OpenVPN (таких много), возможно применение любого OpenVPN-клиента, в котором устранены уязвимости. Авторы исследования рекомендуют Windscribe.
  3. В настройках сервиса VPN проверьте исключения. Если там есть опция «пропускать локальный трафик без VPN» или «разрешить доступ к локальной сети», ее нужно отключить. Иными словами, весь трафик должен идти через VPN. У такой настройки есть очевидный недостаток: будет невозможно зайти с компьютера на локальный NAS или управлять по Wi-Fi умной техникой по локальной сети — это получится сделать только через облачные сервисы. В идеале настройка про запрет локального трафика должна применяться только в публичных сетях, вне дома.  Но такие тонкие настройки с их разделением по разным сетям встречаются в VPN-клиентах далеко не всегда.
  4. Настройте безопасный DNS, если не сделали этого ранее. Эта мера не только усложняет атаку ServerIP, но и в целом повышает безопасность работы в сети. Безопасный DNS хорошо дополняет VPN, эти две меры нужно использовать совместно.

Что делать администраторам корпоративных VPN

  1. Уточните, подвержены ли ваши VPN-клиенты этой уязвимости. Сценарий ручного тестирования описан авторами исследования на GitHub. Необходимо проверить все используемые в организации версии VPN-клиентов для всех актуальных платформ.
  2. Запросите обновления уязвимых клиентских приложений у поставщика вашего корпоративного VPN. Их оперативно выпустили, например, в Cisco. Учтите, что обновлений для iOS может и не быть из-за ограничений конфигурации Apple.
  3. Проверьте стандартную конфигурацию VPN-клиента на всех компьютерах. Часто настройка по умолчанию — блокировать локальный доступ к сети. В этом случае атака будет невозможна.
  4. Если локальный доступ «мимо VPN» нужно сохранить, например обеспечить доступ к принтеру по локальной сети у сотрудника дома, создайте ограничивающие правила на локальном межсетевом экране каждого компьютера, чтобы разрешить только определенные активности из фиксированного списка.
  5. Используйте инструменты защищенного DNS, которые часто входят в комплексную систему сетевой безопасности для организаций, но также могут быть приобретены отдельно.
Советы