4
/10
Прожарка: 1C2GIT
Оценка: 4/10
Критично
- [⚠ МНЕНИЕ] conf.go:126, 241, 540, 559 –
exec.Commandполучает параметры из переменных, а не из констант. Если эти строки формируются из пользовательского ввода (например, путь к репозиторию), открывается возможность командной инъекции. - [⚠ МНЕНИЕ] main.go:204 – сервер стартует через
http.ListenAndServe, без TLS. В продакшн‑окружении это значит, что любой трафик передаётся в открытом виде. - [⚠ МНЕНИЕ] main.go:410 – используется SHA‑1 для хеширования (внутри
gitHash), что уже считается небезопасным и может привести к коллизиям. - [⚠ МНЕНИЕ] index.html:339 – WebSocket открывается по
ws://, а неwss://. При работе через публичный интернет соединение легко перехватить. - [✓ ФАКТ: CVE-Ищейка] trivy – зависимости
github.com/sirupsen/logrus(CVE‑2025‑65637) иgolang.org/x/net(три CVE) содержат уязвимости DoS и возможный обход прокси. В текущем виде приложение может стать вектором отказа в обслуживании.
Надо переделать
- [✓ ФАКТ: YAML-Граммарнаци] YAML‑конфиги (
.github/workflows/go.yml,.golangci.yaml) – добавить---в начало и гарантировать перевод строки в конце файла; заменить «truthy» (true/false) на явные булевы литералы, иначе CI ругается. - [⚠ МНЕНИЕ] Конфигурационный парсер – в
conf.goприсутствуют функции, которые читают файлы, но их результаты нигде не используются; удалить или подключить к основной логике. - [⚠ МНЕНИЕ] Импорт‑мусор – в нескольких файлах (
utils.go,api.go) импортированы пакеты (fmt,log) без последующего обращения – приводит к лишнему бинарному весу. - [⚠ МНЕНИЕ] Логика UI – в
static/лежат HTML‑шаблоны, но вmain.goнет роутов, которые их обслуживают; либо добавить обслуживающий обработчик, либо убрать неиспользуемые шаблоны.
Мелочи
- [⚠ МНЕНИЕ] Имена функций (
DoStuff,Handle) слишком общие, затрудняют поиск по коду. - [⚠ МНЕНИЕ] Комментарии почти отсутствуют, а где есть – написаны на русском без пояснения алгоритма.
- [⚠ МНЕНИЕ] Форматирование кода в нескольких файлах нарушает
gofmt(отсутствие табуляций, лишние пробелы). - [⚠ МНЕНИЕ] В
go.modуказана версия Go 1.22, но CI использует Go 1.21 – потенциальный рассинхрон сборки.
Что хорошо
- [⚠ МНЕНИЕ] Структура репозитория: отдельные директории для конфигурации (
conf.go), веб‑интерфейса (index.html,static/), CI (.github/workflows/). - [✓ ФАКТ: Код-Рентген] CI‑pipeline: GitHub Actions собирает проект, запускает
golangci-lintиsemgrep– автоматическое обнаружение проблем уже внедрено. - [⚠ МНЕНИЕ] Логирование: используется
logrus, что даёт гибкую настройку уровней и форматирование. - [⚠ МНЕНИЕ] Docker‑файл отсутствует, но в CI явно прописаны шаги сборки образа, что упрощает деплой в контейнере.
- [⚠ МНЕНИЕ] Тестов пока нет, но структура кода позволяет добавить
*_test.goбез глобальных изменений.
Вердикт
Проект выглядит как законченное, но недоделанное средство синхронизации 1C с Git: идеи присутствуют, однако критические уязвимости и набор мелких недочётов делают его непригодным для продакшна без серьёзного рефакторинга.
Анализ выполнен автоматически методами статического анализа (SAST) публично доступного репозитория. Активное сканирование и тестирование на проникновение не проводились. Значения обнаруженных секретов, персональные данные и пути эксплуатации уязвимостей не раскрываются. Цитирование кода — в соответствии со ст. 1274 ГК РФ. Результат является оценочным суждением и не заменяет профессиональный аудит безопасности. Пункты помечены: ✓ факт (линтер), ⚠ мнение (AI), ✗ неверно (опровергнуто).