Порушена авторизація на рівні функцій

Порушена авторизація на рівні функцій

Увійти не означає мати дозвіл. Захистіть адміністративні маршрути.

Що таке Порушена авторизація на рівні функцій?

API підтверджує, що користувач увійшов у систему, а тоді виконує будь-яку функцію, яку той попросить, не перевіряючи, чи може його роль її викликати. Привілейовані елементи керування приховані в інтерфейсі, але самі ендпоінти не перевіряють роль, тож до них дістається будь-який дійсний токен. Ви скористаєтеся чесним токеном аналітика лише для читання, щоб отримати повний список клієнтів і поставити в чергу велику виплату, і кожен запит отримає відповідь 200. Потім ви розгорнете на роутері перевірку authorize('admin') , яка повертає 403: адміністративна поверхня стане «закритою за замовчуванням», а нові маршрути успадкують перевірку.

Що ви дізнаєтесь у Порушена авторизація на рівні функцій

Порушена авторизація на рівні функцій — Кроки навчання

  1. Обліковий запис лише для читання

    Fennmark — платіжна платформа, і кожен, хто зареєструється, може отримати обліковий запис розробника із самообслуговуванням. Боб отримав такий, зареєструвавшись із вигаданими даними. Його роль — Analyst: лише читання, доступ тільки до пісочниці, нічого чутливого. Він відкриває консоль розробника, щоб розібратися, що це за обліковий запис і що пропонує API.

  2. Адміністративні функції — на видноті

    Роль Боба — лише читання, тож адміністративні елементи керування в інтерфейсі від нього приховані. Довідник API, однак, не прихований: він перелічує всі службові функції поруч із тими, які Бобу дозволено викликати.

  3. Що каже токен

    Перш ніж торкатися чогось привілейованого, Боб перевіряє, яку особу засвідчує його власний токен. У «Тестері API» він указує ендпоінт облікового запису й надсилає токен сесії в заголовку Authorization — так само, як це робить застосунок.

  4. Чесний аналітик

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

  5. Викличте адміністративну функцію

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

  6. Увесь список клієнтів — аналітикові

    Адміністративна функція відповіла. Токен пісочниці лише для читання щойно витягнув клієнтські записи платформи.

  7. Переведіть гроші

    Читати дані — одне. Тепер Боб викликає функцію, що змінює стан: ендпоінт виплат, який ставить виплату в чергу. Він надсилає запит із тим самим токеном аналітика й указує як отримувача рахунок, який контролює сам.

  8. Виплату в чергу поставив обліковий запис пісочниці

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

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

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

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

Охоплення стандартів безпеки

OWASP API Top 10

  • API5:2023 Broken Function Level Authorization

CWE

  • CWE-285 Improper Authorization
  • 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