6 /10

proxy

https://github.com/git-pkgs/proxy
Нормально

Прожарка: proxy

Оценка: 6/10

Критично

  • [⚠ МНЕНИЕ] Dockerfile — строка 6, 20apk 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), ✗ неверно (опровергнуто).

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