📚 Теория: Actuator env и секреты (раскрыть)
Что утечёт?
/actuator/env возвращает переменные окружения и свойства. Если экспонировать всё, в ответ попадут токены, пароли, connection strings.
⚠️ Это прямой путь к компрометации Secret Manager/K8s secret.
Как защититься?
Экспонируй только нужные эндпоинты, ограничь доступ ролями, маскируй значения, отключай опасные POST-операции, разделяй профили.
🔐 `management.endpoints.web.exposure.include=health,info`, `management.endpoint.env.enabled=false` в проде.
GET /actuator/env без авторизации.
JSON с ключами `AWS_SECRET_KEY`, `spring.datasource.password`, токенами.
Злоумышленник использует токены для lateral movement.
Как надо: ограничивай экспозицию, маскируй значения, требуй авторизацию, проверяй конфиги тестами и SAST, держи список разрешённых эндпоинтов.
Контекст
Инфраструктура запускалась в rush-режиме, поэтому DevOps включили management.endpoints.web.exposure.include=*. Из-за этого /actuator/env открыт в проде.
- Найди строку, где производственный профиль раскрывает все эндпоинты.
- Предложи: ограничение списка, авторизация, маскирование секретов.
- Подумай о тестах: `curl --fail` без токена, smoke-тесты на отсутствие секретов в JSON.
Конфигурация
Code Review
Референс-исправление
Actuator env должен быть отключён или защищён. Используй whitelisting и маскирование.
Флаг ревью: FLAG{java-actuator-env}
management.endpoints.web.exposure.include=health,info,metrics
management.endpoint.env.enabled=false
management.endpoint.health.show-details=never
Добавь Spring Security, роли для Actuator, smoke-тесты, которые проверяют недоступность /actuator/env в проде и маскирование значений.
Проверка флага
После ревью зафиксируй флаг, чтобы дашборд засчитал лабораторию.