## Прожарка: Backhaul  
**Оценка: 5/10**

### Критично
- [⚠ МНЕНИЕ] **optimization.go:28, 40, 68** – `exec.Command` получает параметры из переменных, а не из констант. Без проверки пользовательского ввода это открывает прямую командную инъекцию.  
- [⚠ МНЕНИЕ] **ws_dialer.go:119** – создаётся соединение `ws://` вместо `wss://`. В продуктиве любой перехватщик сможет подменить трафик.  
- [⚠ МНЕНИЕ] **client.go:43** и **server.go:38** – HTTP‑серверы запускаются без TLS. При этом в `ws_dialer.go` отключается проверка сертификата (`InsecureSkipVerify`). Всё это превращает приложение в лёгкую мишень для MITM‑атак.  
- [✓ ФАКТ: Код-Рентген] **httpserver.go:26** – `fmt.Fprintf(w, ...)` пишет напрямую в `http.ResponseWriter`. Если в строке присутствует пользовательский ввод, HTML‑экранирование обходится, что приводит к XSS‑уязвимости.  
- [⚠ МНЕНИЕ] **ws_dialer.go:136** – в TLS‑конфигурации отсутствует `MinVersion`; по умолчанию допускаются устаревшие версии (TLS 1.0/1.1).  

### Надо переделать
- [⚠ МНЕНИЕ] **ws_dialer.go:7** – замените `math/rand` на `crypto/rand` для генерации случайных токенов.  
- [⚠ МНЕНИЕ] **ws_dialer.go:136** – уберите `InsecureSkipVerify` и явно задайте `MinVersion: tls.VersionTLS12`.  
- [⚠ МНЕНИЕ] **index.html:8** – добавьте атрибут `integrity` к внешним скриптам/стилям, иначе CDN‑подмена остаётся открытой.  
- [✓ ФАКТ: YAML-Граммарнаци] **.goreleaser.yaml** и **.github/workflows/goreleaser.yml** – исправьте отступы, уберите лишние пробелы, добавьте `---` в начало файлов и завершите их переводом строки. Это не спасёт приложение, но избавит CI от лишних предупреждений.  
- [⚠ МНЕНИЕ] **Отсутствие тестов** – добавьте хотя бы базовые unit‑тесты для функций, работающих с сетью и вводом пользователя.  

### Мелочи
- [⚠ МНЕНИЕ] В репозитории нет `Dockerfile` и `docker-compose.yml`, хотя в `README` упоминается контейнеризация. Это заставляет новых разработчиков искать сборку вручную.  
- [⚠ МНЕНИЕ] В `go.mod` указаны устаревшие версии зависимостей, но `go.mod tidy` не запускался: в результате в `go.sum` остаются лишние записи.  
- [⚠ МНЕНИЕ] Имена функций в `optimization.go` (`optimize`, `run`) слишком общие, их трудно отличить от стандартных библиотечных функций.  
- [⚠ МНЕНИЕ] Комментарии почти отсутствуют; единственный блок‑комментарий в `client.go` описывает, что делает сервер, но не объясняет бизнес‑логику.  

### Что хорошо
- [⚠ МНЕНИЕ] **CI** настроен через GitHub Actions, проверка `gitleaks` и `trivy` проходит без предупреждений – репозиторий чист от известных уязвимостей в зависимостях.  
- [✓ ФАКТ: Инфра-Ревизор] **Checkov** не нашёл проблем в инфраструктурных файлах (их почти нет), что говорит о корректном описании CI‑pipeline.  
- [⚠ МНЕНИЕ] Проект использует **Go modules**, без `vendor`‑каталога, что упрощает обновление зависимостей.  
- [⚠ МНЕНИЕ] В `README` подробно описаны шаги запуска локального сервера и пример конфигурации, что ускоряет onboarding.  
- [⚠ МНЕНИЕ] Файлы `optimization.go` и `ws_dialer.go` разбиты на небольшие функции, что облегчает чтение (при условии, что имена будут более описательными).  

### Вердикт
Backhaul – **зрелый прототип**, но без базовых мер защиты и без тестов. Пока он пригоден лишь для экспериментов, а не для продакшна.

---

*Анализ выполнен автоматически методами статического анализа (SAST) публично доступного репозитория. Активное сканирование и тестирование на проникновение не проводились. Значения обнаруженных секретов, персональные данные и пути эксплуатации уязвимостей не раскрываются. Цитирование кода — в соответствии со ст. 1274 ГК РФ. Результат является оценочным суждением и не заменяет профессиональный аудит безопасности. Пункты помечены: ✓ факт (линтер), ⚠ мнение (AI), ✗ неверно (опровергнуто).*
