6
/10
Прожарка: Termix‑SSH
Оценка: 6/10
Критично
- [⚠ МНЕНИЕ] Dockerfile — строка 5, 42, 63 –
apt‑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), ✗ неверно (опровергнуто).