Skip to content

v1.0.5 — Большой апдейт безопасности

Choose a tag to compare

@indelingDanil indelingDanil released this 09 Apr 08:35
· 18 commits to main since this release

🔐 CVE: Утечка IP через локальный SOCKS5-прокси

Подробнее: habr.com/ru/articles/1020080

Проблема: XRay поднимал локальный SOCKS5 на 127.0.0.1:10808 без аутентификации. Любое приложение на устройстве могло подключиться к этому прокси и через него узнать реальный exit-IP VPN-сервера. Затронуты все популярные клиенты: v2rayNG, Hiddify, Neko Box и др.

Исправление:

  • Генерация случайных UUID-credentials на каждую VPN-сессию
  • XRay config: auth: password + accounts для SOCKS5 и HTTP inbound
  • tun_helper.cpp: socks5://user:pass@127.0.0.1:port передаётся в tun2socks
  • Java Authenticator.setDefault() для health-check запросов внутри сервиса
  • Credentials очищаются при дисконнекте

🛡️ Privacy hardening: скрытие факта использования VPN

[CRITICAL] Утечка IPv6 MyVpnService.kt

  • Было: addRoute("::", 0) без IPv6-адреса → трафик уходил мимо тоннеля
  • Стало: addAddress("fd00::2", 128) — весь IPv6 идёт через XRay

[CRITICAL] Незашифрованный DNS-фолбэк XrayConfigBuilder.kt

  • Было: 8.8.8.8 + localhost как запасные DNS — port 53 в открытом виде
  • Стало: только DoH (https://1.1.1.1/dns-query + https://8.8.8.8/dns-query)

[HIGH] Уведомления раскрывали имя сервера MyVpnService.kt

  • Было: "Connected · DE #12" — видно на экране блокировки
  • Стало: "Secure Connection" / "Active" — нейтральные системные слова

[HIGH] Логирование серверных данных MyVpnService.kt, XrayManager.kt

  • Все Log.i/w с серверными данными обёрнуты в BuildConfig.DEBUG
  • XRay: в release логируются только ошибки, не весь stdout

[HIGH] Fingerprinting health-check паттерна MyVpnService.kt

  • Было: Telegram URLs каждые ровно 30с + скачивание фиксированных 51200 байт
  • Стало: рандомный jitter 0–15с к интервалам watchdog; пул из 5 стандартных connectivity-check URL (google/generate_204, cp.cloudflare.com и др.); случайная ротация 2 из 5; размер speed-теста 30–70 KB (случайно)

[MEDIUM] Имена бинарников детектировались другими приложениями

  • Было: libxray.so, libtun2socks.so — легко находились через /proc
  • Стало: libcore.so, libnetstack.so — нейтральные системные имена

[MEDIUM] BootReceiver exported=true

  • Стало: exported=false — системный BOOT_COMPLETED продолжает работать

⚙️ Прочие изменения

PingServersUseCase: MAX_ACCEPTABLE_LATENCY 50ms → 80ms

  • За городом высокий пинг обрезал все доступные серверы