5 /10

hass-addon-frp-client

https://github.com/huxiaoxu2019/hass-addon-frp-client
Плохо

Прожарка: hass‑addon‑frp‑client

Оценка: 5/10

Критично

  • [⚠ МНЕНИЕ] Dockerfile:2 – образ берётся без указания тега (FROM alpine). При каждом билде будет скачиваться «latest», что ломает воспроизводимость и открывает путь к неожиданным уязвимостям.
  • [✓ ФАКТ: CVE-Ищейка] Dockerfile:16 – отсутствие директивы USER. Контейнер работает под root, что отмечено Trivy (HIGH) и Checkov (CKV_DOCKER_7). Это прямой риск привилегированного выполнения.
  • [⚠ МНЕНИЕ] run.sh:27cd без проверки статуса. Если каталог недоступен, скрипт продолжит работу в неправильном каталоге, что может привести к ошибкам при запуске FRP‑клиента.

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

  • [⚠ МНЕНИЕ] Dockerfile:12‑14 – три подряд RUN‑команды. Их следует объединить в один слой, чтобы уменьшить размер образа и ускорить кеширование.
  • [⚠ МНЕНИЕ] bootstrap.sh:33, 37 – объявление и присваивание переменных в одной строке маскирует код возврата. Разделите declare var и var=....
  • [⚠ МНЕНИЕ] bootstrap.sh:37 – используется устаревший способ замены (${var//search/replace} предпочтительнее).
  • [⚠ МНЕНИЕ] bootstrap.sh:37‑47 – почти все строки без кавычек. Это открывает возможность непреднамеренного разбора слов и подстановки глобов. Обрамляйте переменные двойными кавычками.

Мелочи

  • [✓ ФАКТ: YAML-Граммарнаци] yamllint – в repository.yaml и frp-client/config.yaml отсутствует ---. Не критично, но портит читаемость.
  • [✓ ФАКТ: YAML-Граммарнаци] config.yaml – одна строка превышает 80 символов (107). Обрежьте или перенесите параметры.
  • [⚠ МНЕНИЕ] README – нет раздела «Installation», только ссылка на репозиторий. Пользователю придётся гадать, какие переменные нужны.

Что хорошо

  • [⚠ МНЕНИЕ] Лицензия присутствует, что упрощает юридический аудит.
  • [⚠ МНЕНИЕ] Dockerfile использует небольшую базу (Alpine), что экономит место и ускоряет старт.
  • [⚠ МНЕНИЕ] bootstrap.sh и run.sh разбиты на отдельные скрипты, что облегчает локальное тестирование.
  • [⚠ МНЕНИЕ] Отсутствие gitleaks‑индикаторов – в репозитории нет случайно закоммиченных токенов или паролей.
  • [✓ ФАКТ: Код-Рентген] Semgrep нашёл только одну проблему (отсутствие USER), значит остальные части кода не содержат очевидных уязвимостей.
  • [✓ ФАКТ: Код-Рентген] Отсутствие innerHTML, eval и редиректов – в проекте нет веб‑компонентов, поэтому XSS‑рисков нет.

Вердикт

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


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

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