Skip to content

Безопасность ​

Что сделано ​

УгрозаЗащита
Приложения ищут локальный SOCKS/HTTP-прокси на 127.0.0.1 и узнают через него IP сервераТрафик идёт через встроенный TUN-вход ядра Xray (дескриптор передаётся прямо в ядро). Слушающих портов нет — проверено по /proc/net/tcp
API и метрики Xray (api, metrics) на локальном портуСекции вырезаются даже из JSON-конфигураций провайдера; правила для служебных входов удаляются, SOCKS/HTTP-входы провайдера заменяются на TUN
Подписка заблокирована и нужна загрузка через туннельОтдельный экземпляр ядра поднимает SOCKS только на время запроса, на случайном порту, со случайными логином и паролем
Утечки DNSDNS из туннеля перехватывается ядром: зарубежные ресурсы разрешаются через DoH по туннелю, российские — напрямую через Domestic DNS профиля
Утечки IPv6IPv6 всегда маршрутизируется в туннель (по умолчанию в DNS запрашиваются только IPv4-адреса)
Трафик уходит мимо VPN при сбоеKill switch: при ошибке интерфейс VPN не снимается, и трафик блокируется. Плюс поддержка системных «Постоянная VPN» и «Блокировать соединения без VPN»
Сигнатуры VPN-клиентовАдрес туннеля — случайная подсеть /30 в 10.0.0.0/8, а не «фирменные» 26.26.26.1 или 172.19.0.1. MTU по умолчанию 8500 — как у самых массовых клиентов, RVC среди них не выделяется; 1500 можно выбрать в настройках (дороже для батареи, см. Производительность)
Банковские приложения проверяют, идёт ли их трафик через VPNРаздельное туннелирование: исключённые приложения работают в обычной сети, их активная сеть — не VPN
Чтение данных с устройства или из резервной копииПодписки, ключи серверов, профили и выбранный сервер зашифрованы AES-256-GCM. Ключ данных хранится зашифрованным ключом из Android Keystore (при наличии — аппаратного); резервное копирование отключено
Утечка адресов и доменов в журналыВ release-сборке ядро Xray не пишет журнал, вызовы Log вырезаются R8
Подмена DNS провайдером интернетаserver-address-resolve-*: адрес сервера разрешается через DoH до подключения
Вредоносные deep linksПодтверждение импорта и отключения; служебная Activity виджета и ярлыков не экспортирована
TapjackingКасания сквозь чужие оверлеи не принимаются
Опасные ссылки из подпискиОткрываются только https, http, tg, mailto
«Бомба» в логотипе провайдераОграничение размера файла и картинки, декодирование с уменьшением
Утечка списка серверов через внешние картинкиФлаги стран встроены в APK, логотип провайдера — единственная загружаемая картинка, и только по https
Перехват трафика подпискиTLS на rustls с корневыми сертификатами Mozilla; HWID не уходит на чужой домен при перенаправлении
Подмена подписки по открытому httpПодписки, профили маршрутизации и геофайлы загружаются из интернета только по https. По http подписку можно подменить по пути и подсунуть свой сервер, а HWID ушёл бы открытым текстом. Открытый http разрешён только для адресов внутри устройства и локальной сети (127.0.0.1, 10.*, 192.168.*, *.local)

Режим прокси

В режиме прокси RVC сознательно открывает порт: по умолчанию только на 127.0.0.1 и с паролем (логин rvc, случайный пароль из SecureRandom). Всё сказанное выше про отсутствие портов относится к режиму VPN.

  • С доступом из локальной сети пароль обязателен — иначе это был бы открытый прокси для всех в той же Wi-Fi.
  • Через прокси закрыт сам телефон: 127.0.0.0/8, ::1, localhost и домены, которые в них резолвятся. Устройство из сети не доберётся до локальных портов других приложений.

Windows ​

УгрозаЗащита
Локальный прокси выдаёт IP сервераВ режиме VPN портов нет: TUN-вход Xray на wintun, управление ядром — через stdin дочернего процесса
Утечки DNS и IPv6Фильтры Windows Filtering Platform: DNS только через туннель, версия IP без маршрута в туннель заблокирована (настройка «Защита от утечек»)
Петля: трафик ядра уходит в собственный туннельИсходящие соединения ядра привязаны к физическому адаптеру
Туннель переживает приложениеЯдро останавливается, как только закрывается его stdin, и убирает адаптер, маршруты и фильтры
Чтение данных другой учётной записью или с дискаСостояние зашифровано DPAPI ключом пользователя Windows
Подмена файлов ядра, которое работает с правами администратораУстановка только в Program Files, куда обычный пользователь писать не может
Подмена обновленияНовая версия скачивается только из релизов windows-v… этого репозитория, сверяются размер и SHA-256
ID устройства раскрывает компьютерHWID — двойной SHA-256 от MachineGuid и модели из BIOS с солью приложения; имя компьютера не отправляется

Чего на стороне клиента скрыть нельзя ​

  • Приложения, которые идут через VPN, видят сеть с типом TRANSPORT_VPN — так устроен Android.
  • Список сетевых интерфейсов (с tun0) Android показывает всем приложениям, в том числе исключённым из туннеля. Исключение из туннеля убирает VPN из их активной сети, но не прячет сам факт, что VPN включён.
  • Журнал движка AmneziaWG (amneziawg-go) может содержать адреса серверов; читать его могут только системные процессы и adb.

Аудит проводился по OWASP MASVS (хранение, криптография, сеть, платформа и IPC, устойчивость).