Выбор ответа Senior Авторизация: IDOR, RBAC, ABAC обновлено

Вложенные ресурсы

Вопрос

Эндпоинт GET /orgs/{orgId}/projects/{projectId} проверяет, что пользователь состоит в организации orgId, и загружает проект по projectId. Какая уязвимость возможна?

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

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

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

Коротко

Правильный ответ: Подставят projectId из чужой организации и получат его, если не проверить связь с orgId. Проверка родительского ресурса не гарантирует, что дочерний действительно в нём.

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

  1. Никакая: если пользователь состоит в организации, все проекты по этому пути ему доступны
  2. BFLA: обычный участник организации сможет вызывать функции, доступные только админу
  3. Перечисление организаций: по кодам ответа 403 и 404 можно узнать, какие orgId существуют
  4. Подставят projectId из чужой организации и получат его, если не проверить связь с orgIdправильный ответ

Разбор

Проверка родительского ресурса не гарантирует, что дочерний действительно в нём. Нужно загружать проект с условием org_id = orgId или проверять принадлежность явно. Это частая ошибка в REST с вложенными путями.

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

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