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