5 /10

Backhaul

https://github.com/Musixal/Backhaul
Плохо

Прожарка: Backhaul

Оценка: 5/10

Критично

  • [⚠ МНЕНИЕ] optimization.go:28, 40, 68exec.Command получает параметры из переменных, а не из констант. Без проверки пользовательского ввода это открывает прямую командную инъекцию.
  • [⚠ МНЕНИЕ] ws_dialer.go:119 – создаётся соединение ws:// вместо wss://. В продуктиве любой перехватщик сможет подменить трафик.
  • [⚠ МНЕНИЕ] client.go:43 и server.go:38 – HTTP‑серверы запускаются без TLS. При этом в ws_dialer.go отключается проверка сертификата (InsecureSkipVerify). Всё это превращает приложение в лёгкую мишень для MITM‑атак.
  • [✓ ФАКТ: Код-Рентген] httpserver.go:26fmt.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), ✗ неверно (опровергнуто).

Raw Markdown Прожарить ещё