Выбор ответа Senior Сессии и безопасность обновлено

SSRF при загрузке по URL

Вопрос

Сервис скачивает аватар по URL, который указал пользователь. Какая атака возможна и как защититься?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: SSRF: запросы во внутреннюю сеть, нужно запрещать приватные IP. Server-Side Request Forgery заставляет сервер обратиться туда, куда у пользователя доступа нет: метаданные облака с ключами, админки во внутренней сети, Redis без пароля через gopher://.

Варианты ответа

  1. XSS: нужно экранировать URL аватара при выводе в HTML
  2. CSRF: нужен токен в форме, где пользователь вводит URL
  3. SSRF: запросы во внутреннюю сеть, нужно запрещать приватные IPправильный ответ
  4. SQL-инъекция: URL нужно передавать в подготовленный запрос

Разбор

Server-Side Request Forgery заставляет сервер обратиться туда, куда у пользователя доступа нет: метаданные облака с ключами, админки во внутренней сети, Redis без пароля через gopher://. Защита: белый список схем, разрешение DNS и проверка, что IP не приватный и не loopback (с повторной проверкой после редиректов и против DNS rebinding), таймауты и ограничение размера ответа, а лучше отдельный сервис-загрузчик без доступа во внутреннюю сеть.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.