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