6 /10

Termix

https://github.com/Termix-SSH/Termix
Нормально

Прожарка: Termix‑SSH

Оценка: 6/10

Критично

  • [⚠ МНЕНИЕ] Dockerfile — строка 5, 42, 63apt‑get install без указания версии. При обновлении базового образа образ может «раздуться» и сломаться из‑за несовместимых пакетов.
  • [⚠ МНЕНИЕ] Dockerfile — строка 5, 42, 63 – отсутствие --no-install-recommends. Устанавливаются лишние зависимости, размер образа растёт на сотни мегабайт.
  • [✓ ФАКТ: CVE-Ищейка] Dockerfile — строка 5, 42, 63 – образ собирается от пользователя root. Trivy фиксирует HIGH‑риско «run as root», что упрощает привилегированный захват контейнера.
  • [⚠ МНЕНИЕ] setup-ssl.sh — строка 11 – переменная ALT_NAMES объявлена, но нигде не используется; в CI это считается «мёртвой» переменной, а в продакшн‑скрипте может вводить путаницу.
  • [⚠ МНЕНИЕ] ssh‑key‑utils.* — множество строк – в репозитории попали приватные SSH‑ключи. Даже если это тестовые ключи, они попадают в историю и могут быть использованы злоумышленником для имитации доверенных соединений.

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

  • [⚠ МНЕНИЕ] entrypoint.sh — строки 25‑29 – аргументы не заключены в кавычки. При запуске с пробелами в переменных произойдёт непредвиденный разбор и потенциальный отказ скрипта.
  • [⚠ МНЕНИЕ] entrypoint.sh — строка 42 – одинарные кавычки вокруг переменной не позволяют подстановку; скрипт всегда будет передавать литерал, а не значение.
  • [⚠ МНЕНИЕ] Dockerfile — строка 36 – несколько подряд RUN‑инструкций. Их стоит консолидировать в один слой, иначе образ будет иметь лишние промежуточные слои и рост размера.
  • [✓ ФАКТ: YAML-Граммарнаци] GitHub‑workflow *.yml – отсутствие --- в начале файлов и слишком длинные строки (>80 симв.). Это не ломает CI, но ухудшает читаемость и нарушает конвенцию YAML.
  • [✓ ФАКТ: Инфра-Ревизор] checkov — CKV_DOCKER_3 – в Dockerfile не указан HEALTHCHECK. Оркестратор будет считать контейнер живым, даже если процесс упал.

Мелочи

  • [⚠ МНЕНИЕ] В Dockerfile повторяется одна и та же команда apt‑get install; её можно вынести в массив и установить в одном RUN.
  • [⚠ МНЕНИЕ] В setup-ssl.sh переменная ALT_NAMES объявлена без export; если скрипт вызывается из другого, она будет недоступна.
  • [✓ ФАКТ: YAML-Граммарнаци] В crowdin.yml и других конфигурационных файлах пропущен ---; линтер ругается, но это легко исправить.
  • [✓ ФАКТ: YAML-Граммарнаци] В workflow‑файлах использованы булевы значения true/false в виде yes/no. YAML требует строгой формы.

Что хорошо

  • [✓ ФАКТ: Секрет-Нюхач] Тесты на приватные ключи – наличие gitleaks‑правил показывает, что разработчики задумались о проверке репозитория на утечки.
  • [⚠ МНЕНИЕ] CI‑pipeline – в репозитории присутствует набор GitHub‑Actions (docker, pr‑check, openapi, electron), что свидетельствует о попытке автоматизировать сборку и проверку.
  • [⚠ МНЕНИЕ] Dockerfile уже использует apt‑get update && apt‑get install -y … – базовая идея построения образа понятна, а не «FROM scratch».
  • [⚠ МНЕНИЕ] Shell‑скрипты снабжены комментариями о назначении (setup-ssl.sh генерирует сертификаты), что упрощает поддержку.
  • [✓ ФАКТ: YAML-Граммарнаци] YAML‑конфиги структурированы, переменные окружения вынесены в отдельные файлы, что облегчает переиспользование в разных CI‑jobs.
  • [⚠ МНЕНИЕ] README содержит инструкцию по запуску через Docker, так что новичок быстро получит работающий контейнер.

Вердикт

Терминальный проект с хорошей автоматизацией, но с критическими «коробками» в Docker‑образе и утечкой ключей – нуждается в серьёзной чистке, иначе будет «тормозить» на проде.


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

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