Горизонтальне підвищення привілеїв

Горизонтальне підвищення привілеїв

Увійти в систему — не те саме, що мати дозвіл.

Що таке Горизонтальне підвищення привілеїв?

Незахищене пряме посилання на об'єкт ховається в проміжку між двома перевірками, які здаються однією. Middleware сесій доводить, хто викликає. Ніщо не з'ясовує, чи може цей користувач читати цей запис. Ви відкриєте власну виписку у фінансовому застосунку, змініть одну цифру в ідентифікаторі й прочитаєте баланс і транзакції незнайомця зі своєю дійсною сесією. Потім додасте порівняння власника, яке повертає 403, коли власник запису — не користувач сесії, і побачите, чому випадкові UUID та обмеження частоти запитів — це ешелонований захист, а не виправлення.

Що ви дізнаєтесь у Горизонтальне підвищення привілеїв

Горизонтальне підвищення привілеїв — Кроки навчання

  1. Що бачить звичайний клієнт

    Sablefin — фінансовий застосунок, у якому може зареєструватися будь-хто. Боб теж зареєструвався, вказавши одноразові дані, і тепер він звичайний клієнт, який, як і всі, дивиться на власний рахунок. Він відкриває свою місячну виписку. Нічого з побаченого йому не заборонено. Це його рахунок, його дані, його вхід.

  2. Стежте за запитом

    Перш ніж щось змінювати, Боб хоче побачити запит, який застосунок надсилає для завантаження цієї сторінки. Він відкриває мережеві інструменти браузера й перезавантажує сторінку, щоб записати виклик, яким застосунок отримує його виписку.

  3. Ендпоінт та ідентифікатор

    Мережеві інструменти записали виклик. Це звичайний GET-запит до API виписок, а вся адреса виписки Боба — одне ціле число в кінці шляху.

  4. Токен, що доводить, хто він

    Той самий записаний запит містить сесійний токен Боба. Сервер читає його, щоб переконатися, що запит надійшов від клієнта, який увійшов у систему.

  5. Змініть одну цифру

    Боб більше не користується інтерфейсом застосунку. Він змінює записаний запит напряму: зменшує ідентифікатор на одиницю й надсилає запит знову, залишивши власний токен. Якщо сервер віддає виписку, що не належить Бобові, значить, сервер не перевіряв власника: що повернути, він вирішував за ідентифікатором в URL.

  6. Чужий рахунок

    Інше ім'я, інший номер рахунку, інший баланс, а токен Боба в запиті той самий. У сервера не було причин це віддавати, але він віддав. Достатньо одного сусіднього ідентифікатора, щоб підтвердити помилку. Усе, що далі, — це скрипт на десять рядків, який усю ніч перебирає простір ідентифікаторів, поки Боб спить.

  7. Перевірка знань

  8. Надходить сповіщення

    Ви відповідаєте за сервіс клієнтських виписок Sablefin. Уночі система виявлення аномалій позначила одну сесію, яка витягувала виписку за випискою з рахунків, що їй не належали. Центр моніторингу безпеки надіслав вам подробиці листом.

  9. Відкрийте обробник

    Відкрийте обробник виписок і подивіться, як він вирішує, що повертати.

  10. Знайдіть ваду

    Обробник дістає виписку за ідентифікатором з 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