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