A10: Server-Side Request Forgery (SSRF)
SSRF превращает ваш сервер в инструмент атакующего: он сам ходит туда, куда внешнему злоумышленнику доступа нет.
SSRF (Server-Side Request Forgery) — подделка серверных запросов: приложение по указанию пользователя делает сетевой запрос на адрес, который контролирует злоумышленник.
SSRF попал в OWASP Top 10 2021 из-за роста облачных архитектур. Идея: если сервер берёт URL из ввода и сам идёт по нему (загрузка картинки по ссылке, веб-хук, импорт по URL), злоумышленник может заставить сервер обратиться к внутренним адресам, недоступным снаружи.
Чем опасен SSRF
Сервер находится внутри сети и часто имеет доступ к внутренним сервисам: базам, админ-панелям, облачным сервисам метаданных. Заставив сервер обратиться к внутреннему адресу (например, к локальным служебным эндпоинтам облака), злоумышленник может вытянуть конфиденциальную информацию, к которой сам доступа не имеет.
Пользователь присылает URL для загрузки картинки.
Злоумышленник вместо картинки указывает внутренний адрес сети.
Сервер послушно ходит во внутреннюю сеть от своего имени.Как защищаться
- Используйте белый список разрешённых адресов/доменов вместо чёрного списка запрещённых.
- Запрещайте обращения к внутренним и служебным диапазонам адресов (локальные, частные сети, эндпоинты метаданных).
- Разрешайте только нужные протоколы (например, https), запрещайте file://, gopher:// и прочие.
- Изолируйте сервис метаданных облака и доступ к внутренним сервисам (сетевые политики, сегментация).
- Не показывайте пользователю сырой ответ внутреннего запроса — это утечка.
- Проверяйте адрес после разрешения DNS, а не только исходную строку (защита от подмены через DNS).
Частые ошибки разработчиков
- Доверяют любому URL от пользователя и ходят по нему без ограничений.
- Фильтруют по чёрному списку, который легко обойти (разные записи одного адреса, редиректы).
- Возвращают пользователю тело внутреннего ответа, раскрывая внутренние данные.
Итог
- SSRF заставляет сервер делать запросы по воле злоумышленника, в т.ч. во внутреннюю сеть.
- Опасен доступом к внутренним сервисам и метаданным облака.
- Защита — белые списки, запрет внутренних адресов, изоляция и сегментация сети.
Проверьте себя
1. В чём суть SSRF?
AПользователь видит чужие данные в браузере
BСервер по указанию пользователя делает запрос на адрес, который выбрал злоумышленник
CПеребор паролей
DПодмена SQL-запроса
2. Какой подход к фильтрации адресов надёжнее против SSRF?
AЧёрный список запрещённых адресов
BБелый список разрешённых адресов/доменов
CВообще не фильтровать
DФильтрация по длине URL