Горизонтальне підвищення привілеїв
Увійти в систему — не те саме, що мати дозвіл.
Що таке Горизонтальне підвищення привілеїв?
Незахищене пряме посилання на об'єкт ховається в проміжку між двома перевірками, які здаються однією. Middleware сесій доводить, хто викликає. Ніщо не з'ясовує, чи може цей користувач читати цей запис. Ви відкриєте власну виписку у фінансовому застосунку, змініть одну цифру в ідентифікаторі й прочитаєте баланс і транзакції незнайомця зі своєю дійсною сесією. Потім додасте порівняння власника, яке повертає 403, коли власник запису — не користувач сесії, і побачите, чому випадкові UUID та обмеження частоти запитів — це ешелонований захист, а не виправлення.
Що ви дізнаєтесь у Горизонтальне підвищення привілеїв
- Розрізняйте автентифікацію (хто викликає) й авторизацію (чи має цей користувач доступ до цього ресурсу) та визначайте, яку з перевірок обходить IDOR
- Розпізнавайте ознаку IDOR: одна дійсна сесія, багато різних ідентифікаторів ресурсів, успішні відповіді з даними багатьох власників
- Застосовуйте порівняння власника як основний захист: порівнюйте власника ресурсу з користувачем сесії й відмовляйте з кодом 403, коли вони не збігаються
- Пояснюйте, чому випадкові UUID, обмеження частоти запитів і надійніші паролі поодинці не є основним захистом від IDOR: помилка — відсутня авторизація, а не ідентифікатори, які можна вгадати
- Визначайте власника за серверною сесією, а не за будь-яким значенням в URL, тілі чи заголовках запиту, яким керує той, хто викликає
Горизонтальне підвищення привілеїв — Кроки навчання
-
Що бачить звичайний клієнт
Sablefin — фінансовий застосунок, у якому може зареєструватися будь-хто. Боб теж зареєструвався, вказавши одноразові дані, і тепер він звичайний клієнт, який, як і всі, дивиться на власний рахунок. Він відкриває свою місячну виписку. Нічого з побаченого йому не заборонено. Це його рахунок, його дані, його вхід.
-
Стежте за запитом
Перш ніж щось змінювати, Боб хоче побачити запит, який застосунок надсилає для завантаження цієї сторінки. Він відкриває мережеві інструменти браузера й перезавантажує сторінку, щоб записати виклик, яким застосунок отримує його виписку.
-
Ендпоінт та ідентифікатор
Мережеві інструменти записали виклик. Це звичайний GET-запит до API виписок, а вся адреса виписки Боба — одне ціле число в кінці шляху.
-
Токен, що доводить, хто він
Той самий записаний запит містить сесійний токен Боба. Сервер читає його, щоб переконатися, що запит надійшов від клієнта, який увійшов у систему.
-
Змініть одну цифру
Боб більше не користується інтерфейсом застосунку. Він змінює записаний запит напряму: зменшує ідентифікатор на одиницю й надсилає запит знову, залишивши власний токен. Якщо сервер віддає виписку, що не належить Бобові, значить, сервер не перевіряв власника: що повернути, він вирішував за ідентифікатором в URL.
-
Чужий рахунок
Інше ім'я, інший номер рахунку, інший баланс, а токен Боба в запиті той самий. У сервера не було причин це віддавати, але він віддав. Достатньо одного сусіднього ідентифікатора, щоб підтвердити помилку. Усе, що далі, — це скрипт на десять рядків, який усю ніч перебирає простір ідентифікаторів, поки Боб спить.
-
Перевірка знань
-
Надходить сповіщення
Ви відповідаєте за сервіс клієнтських виписок Sablefin. Уночі система виявлення аномалій позначила одну сесію, яка витягувала виписку за випискою з рахунків, що їй не належали. Центр моніторингу безпеки надіслав вам подробиці листом.
-
Відкрийте обробник
Відкрийте обробник виписок і подивіться, як він вирішує, що повертати.
-
Знайдіть ваду
Обробник дістає виписку за ідентифікатором з URL і повертає її. Між цими двома рядками немає перевірки, яка мала б там бути.
Охоплення стандартів безпеки
OWASP Top 10
- A01:2025 Broken Access Control
- A01:2021 Broken Access Control
CWE
- CWE-639 Authorization Bypass Through User-Controlled Key
- CWE-862 Missing Authorization
CIS Controls
- CIS 16 Application Software Security
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security