Безопасность — это список проверок, а не лозунг

Ниже — что реализовано и как, а что не проверено и почему. Мы разделяем «написано в коде» и «принято на тестовом стенде».

Реализовано

Что уже защищено

Секреты шифруются DPAPI

Ключи VPN, токены, UUID и ссылки подписок хранятся через Electron safeStorage (Windows DPAPI). Хранилища групп серверов и бэкапы миграции защищены так же.

Доверенная IPC-граница

Принимаются сообщения только от главного фрейма с точным origin. Структуры проверяются по глубине и размеру, запрещены __proto__, NaN и Infinity. Для file:// действует CSP.

Безопасный экспорт и импорт

Экспорт по умолчанию маскирует секреты. Экспорт с секретами требует нативного подтверждения, а буфер обмена очищается через 60 секунд.

Доверенный runtime

sing-box, xray и скрипты запускаются из %ProgramData%\VPNTE\runtime. Перед запуском проверяются владельцы, права подмены и reparse points всей цепочки каталогов.

Транзакционный firewall и Boot Recovery

Манифесты с ACL «только SYSTEM и Администраторы», защита от symlink, независимый откат DNS, IPv6, firewall и WinINet. После перезагрузки работает задача восстановления.

Приватность по умолчанию

В клиенте нет SDK аналитики. HWID и заголовки передаются в curl через stdin, а не через командную строку, где их видно в списке процессов.

Модель угроз

От чего защищает, а от чего — нет

Любой честный инструмент приватности объясняет границы. Вот наши.

Защищает

  • Утечки реального IP при обрыве туннеля
  • Утечки DNS и IPv6
  • Раскрытие адреса через WebRTC/STUN
  • Подмену бинарников и скриптов рантайма

Не защищает

  • От администратора, уже скомпрометировавшего машину
  • От деанонимизации по аккаунтам и отпечатку браузера
  • От логов на стороне вашего VPN-сервера
Без прикрас

Что не проверено

Эти пункты мы не объявляем готовыми.

Приёмка на OS-матрице

Код и автотесты не означают полной приёмки на Windows. Установка нативных фильтров IPv6 WFP, packet oracle и перезагрузка в SYSTEM-контексте пока не подтверждены. WP-3 остаётся частичным.

частично

Подпись кода

Решение о сертификате ещё не принято, и это зафиксировано как открытый вопрос.

открыто

DNS bootstrap

Имя VPN-сервера резолвится до подъёма туннеля, поэтому провайдер может его увидеть.

ограничение

Split tunneling по имени

Правила привязаны к имени процесса, а по ТЗ нужен абсолютный путь. Имя можно подменить.

расхождение с ТЗ
Нашли уязвимость? Сообщите через GitHub Issues. Не публикуйте технические детали эксплуатации в открытом виде до исправления.

Проверьте сами

Код открыт, тесты запускаются командой npm test.