Skip to content

Security: DjankiOpsec/TuxProxy

Security

SECURITY.md

SECURITY & THREAT MODEL :: TUXPROXY

Версия политики: 2.0 (Production-Grade)
Статус: Действующий регламент архитектурной безопасности
Последнее обновление: 2026-09-13


1. Философия безопасности и демаркетинг

TuxProxy принципиально отвергает маркетинговые термины «100% анонимность», «Zero-Leak серебряная пуля» или «абсолютная защита».

В сложных операционных системах Linux любая сетевая изоляция — это компромисс между:

  1. Глубиной перехвата сетевого стека (POSIX-переменные vs сокеты libc vs пакетная фильтрация ядра Linux).
  2. Необходимым уровнем привилегий (Unprivileged non-root vs CAP_NET_ADMIN / root).
  3. Совместимостью с экосистемой ПО (динамический линкинг glibc/musl vs статические бинарники Go/Rust vs браузерные IPC-движки).

TuxProxy предоставляет детерминированные барьеры на уровне выбранного профиля изоляции, гарантируя fail-closed поведение при отказе контура, но не отменяет фундаментальных ограничений операционной системы и протокола Tor.


2. Матрица профилей изоляции (5 уровней)

Профиль Механизм реализации Необходимые привилегии Классы целевых бинарников Архитектурные гарантии Остаточный вектор утечек (Residual Leak Vectors)
env Переменные POSIX (ALL_PROXY, HTTP_PROXY, _JAVA_OPTIONS, etc.) Unprivileged (Обычный пользователь) CLI-утилиты (curl, git, python, cargo), JVM Добровольное следование переменным окружения со стороны прикладных программ. Удаленный DNS через SOCKS5h. Высокий риск: прямое использование системных вызовов socket()/connect() к публичным IP, сторонние библиотеки без поддержки прокси, hardcoded IP-адреса.
electron Флаги ядра Chromium (--proxy-server, --host-resolver-rules, --webrtc-ip-handling-policy) Unprivileged (Обычный пользователь) Браузеры и Electron (Antigravity IDE, VS Code, Chrome, Discord) Принудительное подавление WebRTC STUN UDP; подмена резолвера DNS на ~NOTFOUND; отключение телеметрии и Crash Reporter. Средний риск: защищает веб-рендерер и основной сетевой движок; не изолирует нативные бинарные плагины/расширения, вызывающие libc/raw сокеты напрямую.
proxychains Динамический перехват сокетов libc (LD_PRELOAD) Unprivileged (Обычный пользователь) Динамически слинкованные ELF (Telegram Desktop, C/C++ бинарники) Перехват connect(), sendto(), getaddrinfo() в пространстве пользователя; туннелирование через SOCKS5h; subnet 224 для fake-DNS. Средний риск: бессилен против статически скомпилированных бинарников (Go, Rust), программ с прямыми ассемблерными syscalls или setuid-бинарников.
netns-rootless User Namespaces (CLONE_NEWUSER + CLONE_NEWNET) + slirp4netns Unprivileged (Без root, требуется unprivileged userns в ядре) Любые приложения (включая Go, Rust, C/C++) Полная изоляция сетевого стека без привилегий суперпользователя. Весь сетевой стек эмулируется в userspace. Низкий риск: повышенный оверхед по CPU/latency; зависимость от стабильности внешнего бинарника slirp4netns.
netns-gateway Ядерный Network Namespace (ip netns) + veth pair + nftables + DNS DNAT Privileged (CAP_NET_ADMIN / sudo) с немедленным сбросом в $SUDO_USER Любые приложения, любые бинарники, raw sockets, daemon-процессы Максимальный аппаратный барьер (Fail-Closed): Zero-Forwarding, Zero-NAT, lo UP, принудительный DNAT порт 53 на Tor DNS, блокировка любого прямого WAN-трафика на уровне правил ядра nftables. Минимальный риск: утечка возможна исключительно при уязвимости нулевого дня в реализации сетевого стека или подсистемы Netfilter ядра Linux.

3. Границы модели угроз (Out-of-Scope)

Следующие классы угроз находятся вне границ модели безопасности TuxProxy и требуют других классов защиты (Tails OS, Qubes OS, Whonix, анонимные SIM, физический Faraday cage):

  1. Глобальный пассивный наблюдатель (Global Passive Adversary):

    • Корреляция таймингов пакетов и объемов данных на входе в сеть Tor (ISP / First Hop) и на выходе (Exit Node / Target Server).
    • Автономные системы (AS) и государственные регуляторы с глобальным перехватом магистральных каналов способны деанонимизировать низколатентные onion-контуры статистическими методами.
  2. Компрометация выходных узлов (Malicious Exit Nodes):

    • Выходной узел Tor видит незашифрованный трафик прикладного уровня (HTTP, SMTP, FTP, незашифрованный DNS).
    • Атаки SSL Stripping, подмена сертификатов (если отключен HSTS) или логирование содержимого незащищенных сессий. TuxProxy обеспечивает транспортную изоляцию, но не заменяет сквозное E2E-шифрование (TLS 1.3 / HTTPS).
  3. DoH / DoT внутри приложений в обход системного резолвера:

    • Если приложение в режимах env или electron содержит встроенный зашифрованный резолвер (DNS-over-HTTPS / DNS-over-TLS к серверам Cloudflare/Google по hardcoded IP 1.1.1.1:443), оно отправит запрос в обход локального DNS-шлюза Tor.
    • Примечание: В профиле netns-gateway этот вектор закрыт полностью — прямое подключение к любым внешним IP физически отбрасывается ядром Linux (drop).
  4. Аппаратный и системный фингерпринтинг (Device / OS Fingerprinting):

    • TuxProxy изолирует только сетевой стек.
    • Идентификаторы оборудования (GPU PCI ID, OpenGL Canvas / WebGL рендеринг, AudioContext, установленные системные шрифты, разрешение монитора, параметры ядра и тайминги CPU) остаются доступными приложению и могут использоваться внешними трекерами для идентификации сессии.
  5. Локальная компрометация хоста (Local Compromise / Rootkit):

    • Наличие в системе spyware, keylogger, eBPF-зондов ядра, отладчиков (ptrace), руткитов или физического доступа к оборудованию.
    • Если хост скомпрометирован на уровне пользователя или root, сетевой изолятор не способен защитить оперативную память процесса.

4. Архитектурные инварианты TuxProxy

Для исключения ошибок конфигурации и скрытых сбоев в TuxProxy заложены жесткие системные инварианты:

  1. Fail-Closed принцип:
    • Если супервизор Tor падает, сокет закрывается или процесс завершается аварийно, трафик целевого приложения блокируется. TuxProxy никогда не переключается на прямой выход в интернет.
  2. Изоляция интерфейса управления (Unix Domain Socket):
    • ControlPort по умолчанию использует исключительно локальный Unix domain socket в каталоге рантайма с правами 0700 ($XDG_RUNTIME_DIR/tuxproxy/session-<id>/control.sock).
    • Доступ защищен файлом cookie с правами 0600 (CookieAuthentication 1). Биндинг ControlPort на TCP 0.0.0.0 или публичные интерфейсы строго запрещен валидатором конфигурации.
  3. Анти-0.0.0.0 аудит слушающих сокетов:
    • Супервизор Tor проводит обязательную верификацию: порты SOCKS5h, HTTP-туннеля и DNS биндятся только на 127.0.0.1 или шлюзовой адрес veth (10.200.<id>.1). Обнаружение привязки на 0.0.0.0 вызывает немедленный аварийный останов (panic/abort).
  4. Атомарность и crash-durability модификации окружения (Shell-Hook):
    • Модификация ~/.bashrc и ~/.zshrc защищена межпроцессной блокировкой syscall.Flock на ~/.tuxproxy.lock.
    • Запись выполняется во временный файл в том же каталоге с вызовом file.Sync(), сохранением прав исходного файла (os.Chmod), атомарной заменой os.Rename() и dir.Sync() родительского каталога.
    • Бэкапы версионируются с retention policy строго в 3 последних копии. Неинтерактивные шеллы (scp, rsync) экранируются гардом case "$-" in *i*) ;; *) return 0;; esac.

5. Политика раскрытия уязвимостей (Vulnerability Disclosure)

Если вы обнаружили потенциальную брешь в безопасности, вектор утечки трафика или ошибку реализации сетевых барьеров в TuxProxy:

  1. Не создавайте публичный Issue в GitHub.
  2. Отправьте конфиденциальный отчет через GitHub Security Advisories.
  3. Приложите:
    • Описание уязвимости и затронутый профиль изоляции (env, electron, proxychains, netns).
    • Воспроизводимый PoC (скрипт, pcap-дамп с Wireshark/tcpdump, шаги воспроизведения).
    • Вывод команды tuxproxy status и версию ядра Linux (uname -a).
  4. Сроки реагирования (SLA):
    • Первичное подтверждение получения: до 48 часов.
    • Оценка риска и выпуск исправления: до 14 дней.
    • Согласованное публичное раскрытие (Coordinated Disclosure): после релиза патча.

There aren't any published security advisories