5 /10

maxogram

https://github.com/d0ke/maxogram
Плохо

Прожарка: maxogram

Оценка: 5/10

Критично

  • [⚠ МНЕНИЕ] Dockerfile:27 – синтаксическая ошибка (unexpected 'i'). Сборка падает уже на этапе парсинга.
  • [✓ ФАКТ: CVE-Ищейка] Dockerfile – образ запускается от root (CKV_DOCKER_7, Trivy HIGH). Привилегии не ограничены, повышается риск компрометации контейнера.
  • [⚠ МНЕНИЕ] install.sh:437 – двойные кавычки вокруг переменной в for‑цикле (for i in "$list"). Цикл выполнится один раз, а не для всех элементов – скрипт может пропустить нужные действия.
  • [⚠ МНЕНИЕ] retry.py:25 – используется random.random() для генерации задержки. Для экспоненциального back‑off в продакшене нужен криптографически стойкий генератор (secrets.randbelow).

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

  • [⚠ МНЕНИЕ] Dockerfile – добавить USER nonroot и HEALTHCHECK.
  • [⚠ МНЕНИЕ] install.sh – исправить паттерны sed/awk на 212‑й строке, где одно правило перекрывает другое, и удалить мёртвый блок, который никогда не срабатывает.
  • [⚠ МНЕНИЕ] repositories.py:65 – строка 'local-file' воспринимается как пароль. Переместить в конфиг или переменную окружения.
  • [⚠ МНЕНИЕ] test_app.py – несколько строк с жёстко зашитыми токенами ('telegram-token', 'secret'). Заменить на os.getenv.
  • [⚠ МНЕНИЕ] test_app.py – многочисленные assert в тестах (стр. 109‑113, 138‑139). assert может быть отключён флагом -O, лучше использовать unittest/pytest‑ассерты.

Мелочи

  • [✓ ФАКТ: YAML-Граммарнаци] yamllint – отсутствие --- в начале YAML‑файлов и длинные строки > 80 симв. Не критично, но портит читаемость CI‑конфигов.
  • [✓ ФАКТ: Баш-Прокурор] shellcheck 1090 – скрипт sources файл по переменной; добавить # shellcheck source=/path/to/file.
  • [✓ ФАКТ: Питон-Безопасник] bandit B311 – генератор случайных чисел в retry.py – уже отмечено выше, но уровень риска низкий.

Что хорошо

  • [⚠ МНЕНИЕ] Проект содержит полноценный docker-compose.app.yml, что упрощает локальное развёртывание.
  • [⚠ МНЕНИЕ] Тестовый набор покрывает основные сценарии работы бота, а CI‑pipeline автоматически собирает и пушит образ.
  • [⚠ МНЕНИЕ] В README подробно описаны переменные окружения и порядок установки, что облегчает старт новым пользователям.
  • [⚠ МНЕНИЕ] Код разбит на модули (repositories.py, retry.py, bot/…), что упрощает навигацию.
  • [⚠ МНЕНИЕ] В Dockerfile используется многослойная сборка, уменьшающая размер конечного образа (если исправить ошибку синтаксиса).

Вердикт

Работоспособный прототип, но без базовых мер безопасности и с синтаксическими глюками – проект пока держится на костылях.


Примечание: По данным репозитория не обнаружено признаков форка; оригинальность кода оценивается выше 80 %.


Рекомендации:
1. Привести Dockerfile к минимуму прав, добавить HEALTHCHECK.
2. Переписать install.sh без перекрывающихся шаблонов и с корректным разбором списков.
3. Вытащить все чувствительные строки в переменные окружения и зашифровать их в CI‑секретах.
4. Заменить assert в тестах на надёжные проверки.

С учётом этих правок проект может перейти в диапазон 7‑8 баллов.


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

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