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

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

Увійти в систему не означає мати дозвіл.

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

Незахищене пряме посилання на об’єкт живе в проміжку між двома перевірками, які виглядають як одна. Проміжне програмне забезпечення сеансу перевіряє, хто телефонує. Ніщо не запитує, чи може цей абонент прочитати цей запис. Ви відкриєте власну виписку в грошовому додатку, зміните одну цифру в ідентифікаторі та прочитаєте баланс і транзакції незнайомця за допомогою власного дійсного сеансу. Потім ви додаєте порівняння прав власності, яке повертає 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