Неправильна конфігурація безпеки
Одне налаштування CORS — і будь-який сайт може прочитати обліковий запис.
Що таке Неправильна конфігурація безпеки?
Код правильний, а API все одно небезпечний, бо важливе для безпеки налаштування залишено в небезпечному стані. Цього разу це CORS: API віддзеркалює в Access-Control-Allow-Origin будь-яке значення Origin, яке надсилає той, хто викликає, і встановлює Access-Control-Allow-Credentials у true, повідомляючи браузерам, що будь-який сайт може читати його відповіді разом із сесійним cookie відвідувача. Ви озброїте сторінку з винагородою, яка пересилає відповідь API облікових записів на ваш сервер, а потім обмежите дозволені походження явним списком на сервері. Повторення атаки покаже, що CORS застосовує браузер, а не сервер.
Що ви дізнаєтесь у Неправильна конфігурація безпеки
- Розпізнавайте неправильну конфігурацію безпеки в API: налаштування, важливе для безпеки, залишене в небезпечному стані, як-от надто дозвільна політика CORS, докладні повідомлення про помилки, прапорці налагодження чи типова конфігурація
- Зрозумійте, чому віддзеркалення Origin запиту в Access-Control-Allow-Origin разом із дозволом на передавання облікових даних дає будь-якому сайту, який відвідує користувач, що ввійшов, змогу прочитати обліковий запис цього користувача із доданим сесійним cookie
- Простежте, як зловмисник доводить наявність неправильної конфігурації одним запитом, а потім озброює сторінку, що виглядає звичайно, щоб для витоку даних з облікового запису жертви їй досить було відкрити посилання
- Відрізняйте таку конфігурацію від порушеної авторизації на рівні об'єктів (відсутня перевірка власника для кожного запису) та надмірного розкриття даних (повернення зайвих полів); тут обробник справний, а вада в конфігурації
- Застосовуйте виправлення: обмежуйте дозволені походження явним списком на сервері, ніколи не поєднуйте віддзеркалене походження чи символ підстановки з обліковими даними й усвідомлюйте, що CORS застосовує браузер, а не сервер
Неправильна конфігурація безпеки — Кроки навчання
-
API, зручний для браузера
Corvexa — застосунок для особистих фінансів: люди пов'язують із застосунком свій банківський рахунок і відстежують витрати, а вебзастосунок Corvexa читає їхній обліковий запис з API Corvexa просто в браузері. Сьогодні Боб націлився на Corvexa. Йому потрібні дані облікових записів клієнтів, які можна здобути фішингом і перепродати. У нього є власний одноразовий обліковий запис Corvexa, і він починає з публічної документації для розробників, щоб побачити, як API доступний із браузера.
-
Дозволено будь-який сайт
Одна картка в документації описує, як API ставиться до запитів з інших вебсайтів. Боб уважно її читає.
-
Зробіть запит від імені сайту зловмисника
Боб відтворює запит, який робитиме його шкідлива сторінка. Він спрямовує клієнтську програму для API на ендпоінт облікового запису і, точнісінько як браузер, указує в заголовку Origin власний сайт. Він увійшов у власний одноразовий обліковий запис Corvexa, тож запит несе справжню сесію. Його цікавить не тіло відповіді, а те, що API дозволяє браузеру робити з цією відповіддю.
-
API погоджується
Подивіться на заголовки відповіді, які API надіслав разом із даними облікового запису.
-
Сторінка-приманка
Боб створює на вигляд нешкідливу сторінку, яку розмістить на власному сайті: банер із винагородою Corvexa. Ліворуч вона відображається в браузері, а праворуч у редакторі відкрито її вихідний код. Сама по собі вона лише показує пропозицію на $50.
-
Озбройте сторінку
Тепер Боб додає пейлоад. Для відвідувача банер виглядатиме так само, але сторінка непомітно викличе API облікових записів Corvexa із браузера відвідувача й надішле все, що отримає у відповідь, на власний сервер Боба. Оскільки API дозволяє походження сайту Боба разом з обліковими даними, решту робить cookie відвідувача.
-
Як відбувається крадіжка
Сторінка й надалі показує відвідувачеві лише винагороду. Простежте, що робить доданий скрипт, щойно клієнт Corvexa, який увійшов в обліковий запис, відкриває сторінку.
-
Надішліть приманку
Пастка готова. Бобу потрібно лише, щоб клієнт Corvexa, який увійшов в обліковий запис, відкрив сторінку, тож він надсилає одному з клієнтів лист із посиланням на винагороду. Він оформлює лист як справжню акцію Corvexa і надсилає його зі свого схожого домену.
-
Винагорода в поштовій скриньці
Ви самі користуєтеся Corvexa, і зараз у браузері ви ввійшли у свій обліковий запис. Надходить лист із пропозицією винагороди Corvexa на $50. Пропозиція звучить правдоподібно, а фірмове оформлення схоже на справжнє.
-
Відкрийте посилання
Ви переходите за посиланням, щоб отримати винагороду, як зробила б більшість людей. Сторінка відкривається у вашому браузері, де й надалі діє ваша активна сесія Corvexa.
Охоплення стандартів безпеки
OWASP API Top 10
- API8:2023 Security Misconfiguration
CWE
- CWE-942 Permissive Cross-domain Policy with Untrusted Domains
- CWE-1188 Initialization of a Resource with an Insecure Default
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