core/config.py задаёт дефолты secret_key="change-me-dev-secret-not-for-production" и admin_password="change-me-admin-password". bootstrap.py:_ensure_admin отклоняет лишь пустой пароль админа, но не дефолтный, и ничто не проверяет SECRET_KEY. Деплой, скопировавший .env.example дословно (или забывший поле), стартует в production с известным всем ключом подписи JWT (→ подделка любого токена, включая админский) и известным паролем администратора.
(Секреты прода в рамках #25 не читались — проверяется само отсутствие защиты от дефолта.)
Рекомендация: при settings.is_production падать на старте (в config или bootstrap), если SECRET_KEY/ADMIN_PASSWORD равны дефолтам или короче безопасного минимума.
**Severity (предложение): High (misconfiguration).**
`core/config.py` задаёт дефолты `secret_key="change-me-dev-secret-not-for-production"` и `admin_password="change-me-admin-password"`. `bootstrap.py:_ensure_admin` отклоняет лишь **пустой** пароль админа, но не дефолтный, и ничто не проверяет `SECRET_KEY`. Деплой, скопировавший `.env.example` дословно (или забывший поле), стартует в `production` с известным всем ключом подписи JWT (→ подделка любого токена, включая админский) и известным паролем администратора.
*(Секреты прода в рамках #25 не читались — проверяется само отсутствие защиты от дефолта.)*
**Рекомендация:** при `settings.is_production` падать на старте (в `config` или `bootstrap`), если `SECRET_KEY`/`ADMIN_PASSWORD` равны дефолтам или короче безопасного минимума.
Обнаружено при работе над #25 (находка F4).
Agent
added this to the 1.37 - смена аутентификации и смежный пен тест milestone 2026-09-13 16:17:51 +03:00
Settings (model_validator) при APP_ENV=production не даёт стартовать с дефолтным/коротким SECRET_KEY и дефолтным/пустым ADMIN_PASSWORD. dev/test не затронуты. Мёрж и закрытие — за вами.
F4 реализовано в PR #63 — https://gitea.arseniev.info/NotBigGhost/ForbiddenStarsApp/pulls/63
`Settings` (model_validator) при `APP_ENV=production` не даёт стартовать с дефолтным/коротким `SECRET_KEY` и дефолтным/пустым `ADMIN_PASSWORD`. dev/test не затронуты. Мёрж и закрытие — за вами.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Severity (предложение): High (misconfiguration).
core/config.pyзадаёт дефолтыsecret_key="change-me-dev-secret-not-for-production"иadmin_password="change-me-admin-password".bootstrap.py:_ensure_adminотклоняет лишь пустой пароль админа, но не дефолтный, и ничто не проверяетSECRET_KEY. Деплой, скопировавший.env.exampleдословно (или забывший поле), стартует вproductionс известным всем ключом подписи JWT (→ подделка любого токена, включая админский) и известным паролем администратора.(Секреты прода в рамках #25 не читались — проверяется само отсутствие защиты от дефолта.)
Рекомендация: при
settings.is_productionпадать на старте (вconfigилиbootstrap), еслиSECRET_KEY/ADMIN_PASSWORDравны дефолтам или короче безопасного минимума.Обнаружено при работе над #25 (находка F4).
F4 реализовано в PR #63 — #63
Settings(model_validator) приAPP_ENV=productionне даёт стартовать с дефолтным/короткимSECRET_KEYи дефолтным/пустымADMIN_PASSWORD. dev/test не затронуты. Мёрж и закрытие — за вами.