Открытая документация Swagger UI: карта внутренних эндпоинтов
Интерфейс Swagger UI (/swagger-ui/, /api-docs) создается для разработчиков и визуализирует полную спецификацию API веб-сервиса с описанием всех маршрутов и форматов данных.
На боевом сервере открытый Swagger UI предоставляет злоумышленникам готовую интерактивную карту для тестирования уязвимостей, включая закрытые служебные и административные эндпоинты.
Степень критичности и чем опасна уязвимость
Злоумышленникам не нужно тратить время на разведку: они сразу видят все параметры запросов, скрытые методы и структуры объектов в базе.
Как наш сканер находит эту уязвимость
Site Check проверяет стандартные маршруты (/swagger-ui, /swagger.json, /api/docs) на публичную доступность без авторизации.
Аудит административных интерфейсов выполняется методом зондирования типовых эндпоинтов телеметрии и дашбордов. Сканер анализирует заголовки HTTP-аутентификации (WWW-Authenticate), редиректы на форму входа и структуру возвращаемого HTML, не выполняя попыток перебора паролей или внедрения учетных записей.
Как устранить уязвимость (Пошаговое руководство)
Для ликвидации риска выполните следующие действия в конфигурации вашего сервера или приложения:
# Закрытие Swagger UI базовой аутентификацией на продакшне:
location /swagger-ui/ {
auth_basic "Restricted API Docs";
auth_basic_user_file /etc/nginx/.htpasswd;
}
- Отключите автоматическую генерацию Swagger UI в боевом окружении (Production).
- При необходимости ограничьте доступ внутренней корпоративной сетью или базовой HTTP-аутентификацией.
Анатомия атаки и реальные последствия для проекта
Интерфейсы Swagger UI и OpenAPI (/swagger, /api-docs, /openapi.json) детально документируют каждый внутренний эндпоинт, параметры запросов и форматы ответов. Это даёт атакующему готовую карту атаки, раскрывая скрытые методы API для тестирования на BOLA/IDOR и инъекции.
Влияние на соответствие стандартам: Нарушение требований безопасности стандартов OWASP Top 10 (A05:2021 Security Misconfiguration), ISO/IEC 27001 и отраслевых норм 152-ФЗ.
Матрица эшелонированной защиты (Defense-in-Depth)
| Уровень защиты | Техническое действие | Инструмент / Механизм |
|---|---|---|
| Периметр веб-сервера (Nginx / Edge) | Применение изолирующих правил блокировки для маршрутов, связанных с swagger-api-exposure | Nginx Security Directives |
| Среда исполнения и конфигурация | Отключение отладочных механизмов и разграничение прав доступа к компоненту swagger-api-exposure | Runtime Security Hardening |
| Пайплайн DevSecOps контроля | Автоматическое тестирование конфигурации swagger-api-exposure в CI/CD пайплайне при каждом релизе | Site Check Security Gate |
Верификация устранения: команды для быстрой проверки
После внесения изменений в настройки сервера или исходный код приложения проверьте отсутствие уязвимости с помощью терминальных утилит:
curl -I -s https://ваш-домен.com/swagger-ui/ | grep "HTTP/"
# Ожидается 404 или 401
Рекомендации DevSecOps для безопасного развертывания
Отключайте генерацию Swagger UI в продакшн-окружении (NODE_ENV=production или spring.doc.api-docs.enabled=false), либо выносите документацию на закрытый внутренний поддомен.
- ✓ Ограничить доступ к административным путям белым списком доверенных IP-адресов
- ✓ Настроить обязательную двухфакторную аутентификацию (2FA) для всех панелей управления
- ✓ Отключить Swagger UI и эндпоинты Actuator на внешних продакшен-портах
- ✓ Настроить отправку алертов при множественных неудачных попытках авторизации
Часто задаваемые вопросы по устранению
Публичная доступность служебных панелей управления (Grafana, Prometheus, Swagger, Actuator) деанонимизирует топологию сети и снижает порог входа для целевой атаки. Базовый периметр безопасности требует выноса подобных сервисов за VPN, внедрения mTLS или привязки к приватной подсети без публичных DNS-записей.
Для предотвращения вектора «Открытая документация Swagger UI: карта внутренних эндпоинтов» зафиксируйте проверочные правила в CI/CD пайплайне и настройте непрерывный мониторинг внешнего периметра через Site Check.