Rostelecom Security Labs

SecureCode Review — Hardcoded JWT Secret

TokenService генерирует JWT и хранит секрет прямо в константе. Найди строку, объясни риски и предложи безопасный вариант хранения ключа подписи.

📚 Теория: JWT и секреты (раскрыть)

Как работает JWT?

JWT подписывается симметричным ключом. Если секрет попадает в руки злоумышленника, он может выпускать валидные токены.

⚠️ Любой, кто знает секрет, авторизуется как любой пользователь.

Почему нельзя хранить в коде?

Сборки, дампы памяти, Git — всё это источники утечек. Секреты должны быть ротационными и управляться через Secret Manager.

🔄 Регулярно обновляйте ключи и держите их вне репозитория.

1. Утечка

Секрет попадает в GitHub или CI логи.

2. Подделка

Атакующий выпускает токены с любой ролью.

3. Компрометация

Необходима срочная ротация всех сессий.

Best practice: секрет хранится в Secret Manager или ENV (Kubernetes Secret). На старте приложения валидируйте наличие ключа, ротуйте и версионируйте его.

Контекст

Команда написала простую авторизацию: класс TokenService подписывает JWT и проверяет их. Чтобы «упростить», секрет зашили прямо в код. Наша задача — остановить такую практику.

Сниппет

Загружаем сниппет…

Code Review

Проверка флага

Отправь флаг, чтобы лаборатория появилась в прогрессе.