5 /10

docker_gc

https://github.com/pdacity/docker_gc
Плохо

Прожарка: docker_gc

Оценка: 5/10

Критично

  • [⚠ МНЕНИЕ] Dockerfile: строка 12 – отсутствие директивы USER. Контейнер стартует от root, что открывает путь к привилегированному выполнению любого кода внутри образа.
  • [⚠ МНЕНИЕ] docker‑compose.yml и docker‑stack.yml строка 13 – монтируется сокет Docker‑демона (/var/run/docker.sock). Любой процесс в контейнере получает полный контроль над хост‑Docker‑ом.
  • [✓ ФАКТ: Инфра-Ревизор] Dockerfile – CKV_DOCKER_2 – образ собирается без указания фиксированной версии базового образа, что делает сборку непредсказуемой при каждом docker build.
  • [✓ ФАКТ: Инфра-Ревизор] Dockerfile – CKV_DOCKER_3 – в образе не заданы ограничения на привилегии (например, --cap-drop ALL), усиливающие риск эксплуатации.

Надо переделать

  • [⚠ МНЕНИЕ] entrypoint.sh строка 5 – переменная используется без кавычек, что может привести к неожиданному разбиению слов при наличии пробелов или символов‑шаблонов.
  • [✓ ФАКТ: YAML-Граммарнаци] GitHub‑workflow docker‑publish.yml – нарушения стиля YAML (отсутствие ---, лишние пробелы в скобках, строки > 80 символов). Приведут к ошибкам парсинга в более строгих CI‑средах.
  • [⚠ МНЕНИЕ] Отсутствие HEALTHCHECK в Dockerfile. Оркестраторы не смогут автоматически проверять работоспособность контейнера и могут перезапустить его без причины.

Мелочи

  • [✓ ФАКТ: Баш-Прокурор] Дублирование сообщения Double quote to prevent globbing… в выводе shellcheck. Оставляет ощущение, что проверка запускалась дважды без необходимости.
  • [⚠ МНЕНИЕ] В docker‑publish.yml используется булево значение true без кавычек; линтер требует true/false в нижнем регистре, но файл хранит их как True.
  • [✓ ФАКТ: YAML-Граммарнаци] В docker‑publish.yml комментарии отделены от кода одним пробелом вместо двух, что нарушает правила yamllint.
  • [⚠ МНЕНИЕ] В Dockerfile нет LABEL с метаданными (версия, автор, лицензия). Это усложняет аудит образов в реестрах.

Что хорошо

  • [⚠ МНЕНИЕ] Оригинальность: единственный автор — Dmitry Malinin, один коммит, все 8 файлов изменены. Практически 100 % кода написано автором, никаких признаков форка.
  • [⚠ МНЕНИЕ] Размер: проект компактный (≈ 170 строк), легко воспринимается и быстро собирается, что упрощает локальное тестирование.
  • [⚠ МНЕНИЕ] Документация: в репозитории присутствует README и лицензия, что облегчает понимание назначения инструмента.
  • [⚠ МНЕНИЕ] CI‑pipeline: наличие GitHub‑Actions для публикации образа демонстрирует базовый уровень автоматизации.
  • [⚠ МНЕНИЕ] Shell‑скрипт: entrypoint.sh содержит простую логику запуска, без избыточных зависимостей, что снижает поверхность атаки.

Вердикт

Проект умеет делать своё дело, но оставляет «дыры» в защите, словно открытая дверь в комнату с ценными вещами.


Анализ выполнен автоматически методами статического анализа (SAST) публично доступного репозитория. Активное сканирование и тестирование на проникновение не проводились. Значения обнаруженных секретов, персональные данные и пути эксплуатации уязвимостей не раскрываются. Цитирование кода — в соответствии со ст. 1274 ГК РФ. Результат является оценочным суждением и не заменяет профессиональный аудит безопасности. Пункты помечены: ✓ факт (линтер), ⚠ мнение (AI), ✗ неверно (опровергнуто).

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