Глоссарий

Что такое SSRF (Server-Side Request Forgery)

SSRF заставляет сервер отправлять запросы к внутренним адресам и облачным метаданным. Это стало причиной утечки Capital One. Как это работает и как защищаться.

Опубликовано 2026-06-07 Обновлено 2026-10-06 6 мин чтения
На этой странице

Функция, загружающая содержимое вставленного URL, — повседневное удобство, но в худшем случае она раскрывает ваши облачные учётные данные. Это и есть SSRF. Вот как он работает и как защищаться, с нуля.

Что на самом деле происходит

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

атакующий
──«загрузи этот внутренний URL»──▶
ваш сервер (функция загрузки URL)
└─ проксированный запрос ─▶
внутренняя сеть / админ-панели
169.254.169.254 (облачные учётные данные)
Атакующий использует ваш сервер как «трамплин», чтобы дотянуться до внутренних систем, обычно недостижимых.

В облаке этот внутренний эндпоинт (сервис метаданных) может выдать временные учётные данные. Если SSRF до него дотянется, учётные данные крадут, и атака ведёт к массовому выносу данных из хранилища — именно это произошло в утечке Capital One (2019): SSRF → метаданные → учётные данные IAM → S3.

Где он прячется

Любая функция, где «сервер загружает URL от пользователя», — кандидат.

ФункцияТипичная реализация
OG / превью ссылкисервер загружает вставленный URL, чтобы построить миниатюру
Доставка вебхуковсервер делает POST на заданное пользователем назначение
Импорт изображения / файла«загрузить изображение по URL»
Диагностика сайтасервер обращается к введённому сайту, чтобы его осмотреть

Пробелы валидации, которые упускают

«Блокировать внутренние IP» недостаточно. Нужно учесть и эти способы обхода.

Наивной блокировки недостаточно

  • Следование за редиректами: разрешённый домен делает 302 на внутренний адрес.
  • DNS rebinding: внешний IP в момент валидации, внутренний IP в момент загрузки.
  • Трюки с кодированием IP: десятичные/восьмеричные/сокращённые формы маскируют внутренний адрес.
  • Странные схемы: file://, gopher:// и другие неожиданные схемы.

Как защищаться, если вы строите эту функцию

SSRF предотвращается в «том, как вы строите функцию». Это правила, которые этот сайт накладывает на собственные диагностические функции.

1

Используйте allowlist для назначений

Ограничьте схему (http/https) и хост только разрешённым набором. «Разрешить только эти» надёжнее, чем «блокировать внутренние».

2

Блокируйте внутренние цели

Запретите достижимость 127.0.0.1 / 10.x / 192.168.x / 169.254.169.254 (метаданные).

3

Только домены, которыми владеет пользователь (для диагностики)

Ограничьтесь доменами, владение которыми пользователь доказал. Не давайте им направлять запросы на сторонние сайты.

4

Учтите способы обхода и защитите метаданные

Валидируйте конечную цель редиректа, учитывайте DNS rebinding и требуйте метаданные на основе токена (например, IMDSv2) в облаке.

Этот сайт строится на принципах «не хранить секретов», «диагностировать только доказанно-собственное» и «минимизировать ущерб от любой компрометации» (→ Об этом сайте).

SSRF, CSRF и открытый редирект

Во всех трёх участвует назначение, выбранное извне, но различается то, что движется, и как далеко оно достаёт.

АтакаКто и куда идётДо чего может дотянуться
SSRFВаш сервер отправляет запрос по переданному ему адресуДо мест, недоступных снаружи, например внутренней сети и облачных учётных данных
CSRFБраузер пользователя отправляет запрос, которого пользователь не хотелДо всего, что пользователь может сделать на сайте, где он вошёл
Открытый редиректБраузер пользователя перенаправляется на переданный внешний сайтДо поддельного сайта (фишинг)

SSRF особенно опасен тем, что достаёт «внутрь сервера». Места, которые ваш межсетевой экран защищает от внешнего мира, всё равно достижимы через сервер.

Реальные примеры: он прячется и в функциях фреймворков

SSRF встречается не только в самописных функциях «загрузить этот URL», но и в функциях фреймворков. Например, среди недавних CVE в Next.js SSRF (CWE-918) — один из самых частых типов слабостей, в серверных функциях вроде оптимизации изображений, которые загружают внешние картинки (→ уязвимости Next.js и React по реальным данным, на английском). В «CWE Top 25» MITRE (25 самых опасных слабостей ПО), опубликованном в декабре 2025 года, SSRF стоит на 22-м месте.

В облаке стандартный пример — утечка Capital One. SSRF дотянулся до сервиса метаданных, и были украдены временные учётные данные с избыточными правами (→ утечка Capital One). В ноябре 2019 года AWS выпустила IMDSv2, чтобы уменьшить такой ущерб.

Как проверить своё окружение

1

Составьте список всех мест, загружающих переданный URL

Поищите в коде HTTP-клиенты (fetch, axios, requests и т. п.), в адрес назначения которых может попасть пользовательский ввод. Типичные места — превью ссылок, вебхуки, импорт изображений, генерация PDF и функции импорта.

2

Проверьте настройки разрешений фреймворка

В настройках оптимизации изображений или внешней загрузки проверьте, не слишком ли широк список разрешённых хостов (для Next.js — что в images.remotePatterns нет записи из одного подстановочного знака).

3

Сделайте IMDSv2 обязательным (AWS)

В параметрах метаданных каждого экземпляра EC2 проверьте, что HttpTokens имеет значение required (только IMDSv2). На серверах без контейнеров оставьте лимит переходов (hop limit) для ответа с токеном равным 1.

4

Ограничьте исходящий трафик сервера

Запускайте код, загружающий URL, в отдельной среде без доступа к внутренней сети или ограничьте исходящий трафик нужными назначениями. Если проверка в приложении что-то пропустит, его остановит сеть.

Источники (первичные)

  • OWASP, «Server-Side Request Forgery Prevention Cheat Sheet» — cheatsheetseries.owasp.org (allowlist, блокировка внутренних адресов, обработка редиректов и DNS)
  • AWS, «Use the Instance Metadata Service to access instance metadata» — docs.aws.amazon.com (сеансовые токены IMDSv2, настройка required, лимит переходов)
  • AWS Security Blog, «Add defense in depth against open firewalls, reverse proxies, and SSRF vulnerabilities with enhancements to the EC2 Instance Metadata Service» (ноябрь 2019 г.) — aws.amazon.com
  • Microsoft, «Azure Instance Metadata Service» — learn.microsoft.com (Azure тоже использует 169.254.169.254)
  • MITRE, «2025 CWE Top 25 Most Dangerous Software Weaknesses» (декабрь 2025 г.) — cwe.mitre.org (CWE-918 на 22-м месте)

Читать дальше

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

CWE классифицирует типы слабостей, из-за которых возникают уязвимости; MITRE ATT&CK классифицирует техники атакующих. Обе системы ведёт MITRE, и они широко используются для разметки уязвимостей и правил обнаружения.

CWE (тип слабости)

CWE™: Copyright © 2006–2026, The MITRE Corporation. CWE is a trademark of The MITRE Corporation. The MITRE Corporation hereby grants you a non-exclusive, royalty-free license to use CWE for research, development, and commercial purposes. Any copy you make for such purposes is authorized on the condition that you reproduce MITRE’s copyright designation and this license in any such copy. CWE Terms of Use

FAQ

QУ каких функций обычно бывает SSRF?
A

Функции, где «сервер загружает URL от пользователя»: генерация OG/превью ссылок, доставка вебхуков, импорт изображений, диагностика сайтов. Чем удобнее функция, тем больше осторожности она требует.

QПочему SSRF особенно опасен в облаке?
A

У облачных ВМ есть «эндпоинт метаданных» только для внутреннего доступа, который может выдать временные учётные данные. Если SSRF до него дотянется, эти учётные данные крадут, и атака ведёт к массовому выносу данных из хранилища (путь утечки Capital One).

QКак защититься от SSRF?
A

Строго валидируйте назначения через allowlist и блокируйте достижимость внутренних IP (127.0.0.1, 10.x, метаданные 169.254.169.254). Для диагностики ограничьтесь доменами, которыми пользователь доказал владение, и учитывайте обход через следование за редиректами и DNS-rebinding.

QЧем SSRF отличается от CSRF?
A

Тем, кто отправляет запрос. CSRF заставляет браузер пользователя отправить запрос, которого пользователь не хотел. SSRF заставляет ваш сервер отправить запрос туда, куда он никогда не должен обращаться. Ущерб от CSRF ограничен тем, что может этот пользователь; ущерб от SSRF распространяется на всё, до чего может дотянуться сервер, например на внутреннюю сеть или облачные учётные данные.

QПредотвращает ли IMDSv2 SSRF?
A

Он сильно сужает путь к краже облачных учётных данных, но сам SSRF не предотвращает. AWS IMDSv2 отдаёт метаданные только с сеансовым токеном, полученным через PUT-запрос, поэтому простому SSRF, который лишь загружает URL, трудно добраться до учётных данных. Доступ к внутренним админ-панелям или внутренним API — отдельная проблема, так что allowlist назначений и блокировка внутренних адресов всё равно нужны.

QЧто такое 169.254.169.254?
A

Адрес только для внутреннего использования (link-local), через который облачные виртуальные машины читают свои настройки и временные учётные данные. Его используют AWS, Azure и Google Cloud. Снаружи до него не достать, но сам сервер достать может, поэтому это самая желанная цель при SSRF.