Необмежене споживання ресурсів

Необмежене споживання ресурсів

Один запит, чверть мільйона записів, обмеження не видно.

Що таке Необмежене споживання ресурсів?

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

Що ви дізнаєтесь у Необмежене споживання ресурсів

Необмежене споживання ресурсів — Кроки навчання

  1. Загальнодоступна стрічка перегляду

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

  2. Дивіться запит

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

  3. Розмір сторінки належить абоненту

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

  4. Чверть мільйона позаду сторінки

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

  5. Проси все

    Боб перебудовує той самий виклик у тестері API та змінює одне: замість 24 сторінок він запитує 250 000 списків в одному запиті. Якщо сервер виконує це, один виклик передасть йому весь каталог.

  6. Один запит, весь каталог

    Сервер виконав саме те, що від нього просили. Відповідь розповідає про те, скільки це коштувало.

  7. Вітрина застібається

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

  8. Справжні покупці, заблоковані

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

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

    Ви щойно спостерігали, як один запит витягує чверть мільйона записів і зупиняє базу даних. Зафіксуйте чому.

  10. Тривога приземляється

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

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

OWASP API Top 10

  • API4:2023 Unrestricted Resource Consumption

CWE

  • CWE-770 Allocation of Resources Without Limits or Throttling
  • CWE-400 Uncontrolled Resource Consumption

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