Перевірка AuthZ за допомогою ШІ: аналіз меж дозволів в Ory Kratos

ШІ погано знаходить баги, але чудово генерує підозри.

У сфері безпеки найдешевше, що може зробити ШІ — це створити потік хибних звітів. Саме тому програми bug bounty ставлять на паузу або посилюють правила.

Я використовую ШІ інакше. Я дозволяю ШІ генерувати надмірну кількість гіпотез на основі мого каталогу ознак проблем AuthZ (AuthZ Smell Catalog). Потім я виконую важку роботу. Моє завдання — спростувати ці гіпотези.

Успішний аудит — це не список багів. Це таблиця відбракованих ідей, які не пройшли перевірку.

Я проаналізував вихідний код Ory Kratos. Kratos відповідає за керування ідентифікацією та користувачами. Це зона високого ризику, оскільки вона використовує кілька ідентичностей та публічні API.

Я перевірив п'ять гіпотез:

  • H1: Admin API не має авторизації в коді.
  • H2: Витік даних між ідентичностями або тенантами (cross-tenant).
  • H3: Повторне використання токенів у сценаріях відновлення.
  • H4: Плутанина з ідентифікацією у сценаріях налаштувань.
  • H5: Призначення тенанта через корисне навантаження запиту (request payload).

Результати:

  • H1: СПРУСТОВАНО. Авторизація реалізована на рівні мережевої межі, а не в обробнику коду. Це передбачено архітектурою.
  • H2: СПРУСТОВАНО. Центральний шар доступу до даних фільтрує всі запити за tenant ID. Користувачі не можуть це обійти.
  • H3: СПРУСТОВАНО. Токени одноразові та мають обмежений термін дії.
  • H4: СПРУСТОВАНО. Сценарії прив'язані до сесії, а не до вводу користувача.
  • H5: СПРУСТОВАНО. Tenant ID беруться з системного контексту, а не з тіла запиту.

Було висунуто п'ять гіпотез. Результатів — нуль. Це успішний аудит.

Дві поради для вашої роботи з безпекою:

  1. Безпека на рівні розгортання (deployment layer) може виглядати як відсутність безпеки. Якщо "охоронець" працює на рівні мережі, код здаватиметься незахищеним. Не робіть звітів, поки не перевірите архітектуру.

  2. Знайдіть контрольну точку (chokepoint). Якщо система забезпечує межі на рівні даних, окремим обробникам не потрібні перевірки. Замість того, щоб питати "чи перевіряє цей обробник дозволи", запитайте "чи може хтось отримати доступ до даних в обхід цієї контрольної точки?".

Використовуйте ШІ, щоб відсіювати кандидатів. Використовуйте людей, щоб перевіряти тих, хто пройшов відбір. Цінність полягає саме у відсіюванні.

Джерело: https://dev.to/fdjedkdlsspec/ai-assisted-authz-review-reading-permission-boundaries-in-ory-kratos-31cg

Додаткова спільнота для навчання: https://t.me/GyaanSetuAi