Зловживання сервісом метаданих інстанса

Зловживання сервісом метаданих інстанса

SSRF і сервіс метаданих без токена дають викрадені облікові дані ролі.

Що таке Зловживання сервісом метаданих інстанса?

Якщо дозволено старіший протокол v1 без токена, сервіс метаданих інстанса відповідає на будь-який звичайний запит зсередини інстанса, зокрема на запит тимчасових облікових даних ролі інстанса. Через це звичайна вразливість до підробки запитів на боці сервера (SSRF) перетворюється на викрадення хмарних облікових даних. Ви спрямуєте параметр source_url функції імпорту на 169.254.169.254, зчитаєте ключ доступу, секрет і токен сесії та використаєте їх, щоб дістатися до даних, яких застосунок ніколи б не віддав. Виправлення — IMDSv2: вимагайте токен сесії, щоб один підроблений запит GET не міг спрацювати, і задайте ліміт переходів для відповіді.

Що ви дізнаєтесь у Зловживання сервісом метаданих інстанса

Зловживання сервісом метаданих інстанса — Кроки навчання

  1. Сервер, що отримує дані за вас

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

  2. Що насправді робить ця функція

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

  3. Використайте функцію за призначенням

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

  4. URL — це просто параметр

    Імпорт спрацював. Боб відкриває у DevTools вкладку Network і дивиться, що саме надіслала сторінка: функція, яка отримує дані за URL, цікава лише тоді, коли URL контролює він.

  5. Спрямуйте його на сервіс метаданих

    Є одна адреса, яка відповідає лише зсередини хмарного інстанса: сервіс метаданих за фіксованою локальною адресою каналу. Поки він ще дозволяє старіший протокол v1 без токена, він видає облікові дані власної ролі інстанса будь-якій програмі на інстансі, яка звернеться до нього звичайним запитом GET. Боб змінює записаний запит: замінює URL партнера цією адресою й надсилає його знову.

  6. Він отримав облікові дані

    Сервер зробив саме те, що йому наказали, і повернув усе, що отримав у відповідь.

  7. Чиї це облікові дані

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

  8. До чого мав доступ сервер, хоча застосунок цього ніколи не відкривав

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

  9. Звідки взялися облікові дані

  10. Ідентичність сервера, що діє як користувач

    Моніторинг Vurloch помічає, що роль інстанса застосунку читає сховище, до якого їй нема чого звертатися.

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

CWE

  • CWE-918 Server-Side Request Forgery (SSRF)
  • CWE-522 Insufficiently Protected Credentials

MITRE ATT&CK

  • T1552.005 Unsecured Credentials: Cloud Instance Metadata API

CIS Controls

  • CIS 4 Secure Configuration of Enterprise Assets and Software
  • 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