EMZETT.
Войти

SSRF: подделка запросов на стороне сервера

Коротко: Атака, при которой злоумышленник заставляет сервер отправлять от его имени запросы на другие адреса, часто во внутренние системы.

Подробнее: Многие приложения загружают содержимое по URL, заданному пользователем (превью изображения, webhook, импорт). Если приложение не проверяет адрес, злоумышленник может направить его на внутренние сервисы, недоступные снаружи. Сервер становится инструментом атакующего. С 2021 года SSRF — отдельный пункт в OWASP Top 10.

Подробности

Пример

Страница загружает аватар с https://example.com/image.png. Злоумышленник вводит вместо этого http://169.254.169.254/latest/meta-data/ — адрес сервиса метаданных многих облачных провайдеров. Сервер обращается к нему и может вернуть временные ключи доступа. Аналогично можно обращаться к http://localhost:8080/admin или адресам во внутренней сети компании.

Чем опасно

Сервер часто находится во внутренней сети, и межсетевые экраны обращаются с ним иначе, чем с посторонними. Последствия — чтение внутренних данных, запуск внутренних действий, сканирование внутренней сети и кража учётных данных в облаке. При слепой SSRF атакующий не видит ответа, но может делать выводы по времени отклика или побочным эффектам.

Меры защиты

  • Разрешённые цели (домены, протоколы, порты) задавайте белым списком, а не блокировкой запрещённого.
  • Проверяйте адрес после DNS-разрешения и отклоняйте внутренние диапазоны (127.0.0.0/8, 10.0.0.0/8, 169.254.0.0/16, …); учитывайте DNS rebinding.
  • Не следуйте перенаправлениям автоматически или проверяйте снова.
  • Разрешайте только http и https, без схем file:, gopher: и подобных.
  • Ограничьте исходящий трафик сервера межсетевым экраном; в облаке защитите сервис метаданных (например, IMDSv2).

Классификация

SSRF похожа на CSRF только названием: при CSRF злоумышленник использует браузер пользователя, при SSRF — сервер приложения.

См. также: OWASP Top 10, Межсетевой экран, CSRF