Неправильна конфігурація безпеки
Одне налаштування CORS, і будь-який сайт зможе прочитати обліковий запис.
Що таке Неправильна конфігурація безпеки?
Код правильний, а API все ще небезпечний, оскільки параметр, важливий для безпеки, залишився в небезпечному стані. Це CORS: API відображає будь-який Origin, який абонент надсилає в Access-Control-Allow-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, і прямо зараз ви ввійшли у свій обліковий запис у своєму браузері. Приходить електронний лист із пропозицією винагороди $50 Corvexa. Пропозиція звучить правдоподібно, а брендинг виглядає правильним.
-
Відкрийте посилання
Ви клацаєте, щоб отримати винагороду, як і більшість людей. Сторінка відкриється у вашому браузері, все ще зберігаючи ваш живий сеанс 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