Trusted-Bypass

0
месяц назад
месяц назад
месяц назад
месяц назад
месяц назад
README.md

Trusted-Bypass

Self-hosted DPI bypass + DevSecOps pipeline. Xray VLESS+Reality+XTLS-Vision, собранный из исходников, проверенный 8-стадийным security gate перед деплоем.

Зачем

Обход Deep Packet Inspection без доверия к чужим бинарникам. Xray компилируется из исходников в

scratch
-контейнер (~25MB), а перед каждым деплоем проходит автоматический аудит шестью инструментами — от Google Capslock до govulncheck.

Структура

Trusted-Bypass/ ├── .gitverse-ci.yml ← 8-job Security Gate pipeline │ ├── proxy/ ← Xray VLESS+Reality сервер/клиент │ ├── Dockerfile Multi-stage: golang:1.26 → scratch │ ├── docker-compose.yml Сервер (read_only, cap_drop ALL) │ ├── docker-compose.client.yml Клиент (127.0.0.1:10808/10809) │ ├── setup.sh Автоустановщик + генерация ключей │ └── config-templates/ │ ├── server.jsonc VLESS+Reality+XTLS-Vision │ ├── client-full.jsonc Весь трафик через прокси │ ├── client-split.jsonc Только заблокированные сайты │ └── client-gaming.jsonc Split-tunnel для игр │ ├── security-scanner/ ← Локальный сканер + Xray аудит │ ├── Dockerfile Go 1.26 + все инструменты │ ├── scan.sh 5 стадий → PASS/WARN/BLOCKED │ └── audit-xray.sh 6-tool deep audit Xray-core │ └── docs/ ├── CLIENTS.md Клиенты: Android, iOS, Windows, macOS ├── CUSTOMIZATION.md Смена версии, протокола, транспорта ├── NO-LATENCY-GAMING.md Почему CS2/Dota 2 не тормозит └── SECURITY-MODEL.md Модель угроз и архитектура защиты

Быстрый старт

1. Аудит Xray (перед первым деплоем)

Результат:

ОДОБРЕНО ✓
или
НЕ РЕКОМЕНДУЕТСЯ
с описанием найденных проблем.

2. Деплой прокси

setup.sh
генерирует x25519 keypair, UUID, выбирает SNI. Конфиг сервера создаётся из шаблона автоматически.

3. Подключение клиентов

Сервер = SOCKS5 на

127.0.0.1:10808
+ HTTP на
127.0.0.1:10809
. Игры через системный прокси не ходят → нулевой оверхед. Подробности в docs/CLIENTS.md.

Для Android: v2rayNG или HiddifyNG. Скопируй

vless://
share link из вывода
setup.sh
.

Security Gate — CI/CD Pipeline

.gitverse-ci.yml
запускается автоматически на push/PR. Пока pipeline красный — деплой заблокирован.

Архитектура

push/PR ──┬── 🔑 Secrets (Gitleaks) ──┐ ├── 📦 SCA (Trivy) ──┤ ├── 🔍 SAST (Semgrep) ──┤ ├── 🏗 IaC (Trivy + Checkov) ──┼── 🐳 Container ── 🏁 Quality Gate └── 🛡 Xray Source Audit (6 tools) ──┘ (Trivy)

7 сканов → Quality Gate

#JobИнструментЧто проверяетБлокирует?
1SecretsGitleaks 8.24+API-ключи, пароли, токены в кодеЛюбой leak
2SCATrivy 0.69+CVE в зависимостях твоего репоCRITICAL/HIGH
3SASTSemgrep 1.156+Уязвимости в твоём кодеERROR severity
4IaCTrivy + CheckovDockerfile, compose misconfigsCRITICAL/HIGH
5Xray Audit6 инструментовИсходники Xray-core (см. ниже)CVE / backdoor
6ContainerTrivy imageCVE в собранном Docker-образеCRITICAL/HIGH
7Quality GateАгрегация всех результатовЛюбой FAIL

Xray Source Audit — 6 инструментов

Самая тяжёлая стадия. Клонирует Xray-core указанной версии и прогоняет:

#ИнструментЧто делаетРезультат для v26.2.6
1Google CapslockКарта capabilities: NETWORK, FILES, EXEC на зависимостьNETWORK: 1938, FILES: 1389, EXEC: 1285 — ожидаемо для прокси
2govulncheckCall-graph анализ: достижимы ли уязвимые функции из кода Xray✅ PASS — нет reachable CVE
3gosec (audit mode)Go SAST максимальной чувствительности⚠ 932 issues (365 HIGH) — ожидаемо для low-level сетевого кода
4Semgrep (6 rulesets)golang, gosec, trailofbits, security-audit, owasp, secrets⚠ 374 findings — в основном
unsafe
в
.pb.go
5Trivy SCACVE в зависимостях Xray✗ CVE-2026-33186 CRITICAL в grpc v1.78.0
6Backdoor grepHardcoded IP, C2 домены, plugin loading, key export, os/exec⚠ 36 patterns — всё легитимные transport registrations

Блокирующие: govulncheck FAIL, Trivy CRITICAL/HIGH, Semgrep ERROR. Информационные: gosec, Semgrep WARNING, Backdoor WARN — шум, ожидаемый для сетевого прокси.

Текущий статус: CVE-2026-33186

Pipeline сейчас BLOCKED из-за CVE-2026-33186 (CVSS 9.1) — обход авторизации в gRPC-Go < 1.79.3. Xray v26.2.6 использует grpc v1.78.0.

Эксплуатируемо ли это в Xray? Нет. govulncheck подтверждает: уязвимый путь (path-based RBAC interceptors) не вызывается из кода Xray. Xray использует grpc только для внутреннего commander API, не как публичный gRPC-сервер с авторизацией по path.

Что делать: дождаться обновления Xray с grpc v1.79.3, затем обновить

XRAY_VERSION
в
.gitverse-ci.yml
. Pipeline автоматически покажет PASS.

Смена версии Xray

В

.gitverse-ci.yml
(одно место):

В

proxy/Dockerfile
:

Proxy: технические детали

Протокол: VLESS + Reality + XTLS-Vision. Reality мимикрирует под реальный TLS-сайт (по умолчанию

www.microsoft.com
), не оставляя fingerprint для DPI.

Docker-образ: Multi-stage build —

golang:1.26-alpine
собирает из git tag, финальный образ
scratch
(~25MB). Запускается как
USER 10001
,
read_only: true
,
cap_drop: [ALL]
.

Клиент: SOCKS5 на

127.0.0.1:10808
, HTTP на
127.0.0.1:10809
. Xray — прокси, не VPN. Приложения, которые не используют системный прокси (игры), идут напрямую.

Конфиги:

  • client-full.jsonc
    — весь трафик через прокси
  • client-split.jsonc
    — только заблокированные сайты (через geosite/geoip)
  • client-gaming.jsonc
    — split-tunnel, игровой трафик идёт напрямую

Платформа

GitVerse CI — формат совместим с GitHub Actions. Для GitHub:

Ограничения GitVerse runner (уже учтены в pipeline):

  • Нет Docker-in-Docker → container-scan информационный
  • Нет доступа к GitHub Releases → Go-тулзы через
    go install
    , Trivy через apt
  • PEP 668 →
    pip --break-system-packages
  • Prisma Cloud недоступен →
    CHECKOV_RUN_SCP_SCANS=false

FAQ

CS2/Dota 2 тормозит? Нет. Xray = SOCKS5/HTTP прокси на localhost. Игры не используют системный прокси → 0ms дополнительной задержки. Подробнее

Почему не VPN? VPN гоняет ВЕСЬ трафик через туннель, включая игры. Прокси позволяет split-tunneling — браузер через Xray, игры напрямую.

Почему pipeline блокируется из-за CVE в чужом коде? Defense in depth. Даже если govulncheck говорит "не эксплуатируемо", зависимость с CRITICAL CVE — это технический долг. Pipeline явно сообщает об этом и объясняет impact.

Можно ли автофиксить findings? Нет — это сторонний код (Xray). gosec 932 issues и Semgrep 374 findings — это не баги, а архитектурные решения авторов (unsafe pointer, low-level sockets). Автофикс сломает прокси.

Почему Trivy ставится через apt, а не GitHub Action? 19 марта 2026 GitHub Actions для Trivy были скомпрометированы (75 тегов переписаны со стилером). Ставим бинарник напрямую из apt-репозитория Aqua Security.

Что за

'runs-on' key not defined
в логе Quality Gate? Косметика GitVerse act-runner. При резолве графа зависимостей
needs:
он логирует предупреждение для каждого dependency-job, чьё полное определение недоступно на текущем раннере. Результаты (
needs.*.result
) передаются корректно.

Лицензия

Apache License v2