6
/10
Прожарка: proxy
Оценка: 6/10
Критично
- [⚠ МНЕНИЕ] Dockerfile — строка 6, 20 –
apk addбез указания версии. При обновлении базового образа контейнер может «сломаться» из‑за несовместимых пакетов. - [⚠ МНЕНИЕ] schema.go — строка 381, 483, 511 – построение SQL‑запросов через конкатенацию строк. Отсутствует параметризация, значит реальная возможность SQL‑инъекции.
- [✓ ФАКТ: Код-Рентген] cargo.go — строка 122, 142, 155 и composer.go — строка 110, 115 – прямой вывод в
http.ResponseWriterбез HTML‑экранирования. Если в ответе попадают пользовательские данные, XSS‑уязвимость гарантирована. - [✓ ФАКТ: CVE-Ищейка] trivy — CVE‑2026‑56852 (golang.org/x/text) и GO‑2026‑5932 (golang.org/x/crypto/openpgp) – используемые пакеты имеют известные проблемы; в продакшн‑сборке они могут стать точкой отказа или привести к утечке данных.
- [✓ ФАКТ: Секрет-Нюхач] gitleaks – в тестовых файлах (
gradle_test.go:20,server_test.go:409) найдено «generic‑api‑key». Даже в тестах такие строки могут попасть в артефакты CI и раскрыть секреты.
Надо переделать
- [✓ ФАКТ: Инфра-Ревизор] Добавить
HEALTHCHECKв Docker‑образ (Checkov CKV_DOCKER_2). Без него оркестратор не будет знать, жив ли контейнер. - [✓ ФАКТ: YAML-Граммарнаци] Привести все YAML‑файлы CI к единому стилю: добавить
---в начале, заменить «truthy» наtrue/false, поправить отступы и длину строк > 80 симв. Это избавит от шумовых предупреждений yamllint. - [⚠ МНЕНИЕ] Заменить
apk add <pkg>наapk add <pkg>=<ver>и зафиксировать версии вgo.mod(использоватьgo mod tidy). - [⚠ МНЕНИЕ] Переписать запросы в
schema.goчерезdatabase/sql‑плейсхолдеры (?/$1). - [⚠ МНЕНИЕ] Вынести вывод в
http.ResponseWriterв функции‑обёртки, которые вызываютhtml.EscapeStringили используютtemplate‑пакет.
Мелочи
- [⚠ МНЕНИЕ] В
Dockerfileиспользуется--no-cacheвapk add, но без указания репозитория – потенциальный конфликт при смене Alpine‑версии. - [⚠ МНЕНИЕ] В
ci.ymlпеременнаяcache: trueзаписана без кавычек, что может вызвать неоднозначность в некоторых ранне‑версных GitHub‑actions. - [⚠ МНЕНИЕ] Некоторые файлы (
README.md,LICENSE) дублируют блоки из оригинального проекта‑форка, но в них нет ссылки на источник.
Что хорошо
- [⚠ МНЕНИЕ] Проект структурирован: отдельные пакеты
cargo,composer,schemaясно разграничивают бизнес‑логику, работу с пакетными менеджерами и работу с БД. - [⚠ МНЕНИЕ] В
go.modпрописаны версии всех зависимостей, что упрощает воспроизводимую сборку. - [⚠ МНЕНИЕ] Тесты (хотя и содержат утечки) покрывают основные сценарии проксирования, а CI‑pipeline автоматически собирает и публикует Docker‑образ.
- [⚠ МНЕНИЕ] В
READMEподробно описаны переменные окружения и пример запуска, что ускоряет старт для новых пользователей. - [⚠ МНЕНИЕ] В
Dockerfileиспользуется мульти‑stage сборка, образ конечного контейнера минимален (Alpine 3.20).
Вердикт
Рабочий прокси‑сервер, но без надёжной защиты от SQL‑инъекций и XSS, а также с устаревшими зависимостями – требует серьёзных доработок, чтобы стать безопасным.
Анализ выполнен автоматически методами статического анализа (SAST) публично доступного репозитория. Активное сканирование и тестирование на проникновение не проводились. Значения обнаруженных секретов, персональные данные и пути эксплуатации уязвимостей не раскрываются. Цитирование кода — в соответствии со ст. 1274 ГК РФ. Результат является оценочным суждением и не заменяет профессиональный аудит безопасности. Пункты помечены: ✓ факт (линтер), ⚠ мнение (AI), ✗ неверно (опровергнуто).