4 /10

1C2GIT

https://github.com/LazarenkoA/1C2GIT
Плохо

Прожарка: 1C2GIT

Оценка: 4/10

Критично

  • [⚠ МНЕНИЕ] conf.go:126, 241, 540, 559exec.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), ✗ неверно (опровергнуто).

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