FixVibe
Covered by FixVibehigh

CORS Неправильна конфігурація: ризики надмірно дозвільних політик

Спільне використання ресурсів між джерелами (CORS) — це механізм веб-переглядача, розроблений для пом’якшення політики однакового походження (SOP). Незважаючи на те, що це необхідно для сучасних веб-додатків, неправильна реалізація, як-от відтворення заголовка Origin запитувача або додавання «нульового» джерела в білий список, може дозволити зловмисним сайтам викрадати приватні дані користувача.

CWE-942

Вплив

Зловмисник може викрасти конфіденційні автентифіковані дані користувачів уразливої програми [S2]. Якщо користувач відвідує зловмисний веб-сайт під час входу в уразливу програму, зловмисний сайт може надсилати перехресні запити до API програми та читати відповіді [S1][S2]. Це може призвести до викрадення особистої інформації, зокрема профілів користувачів, маркерів CSRF або особистих повідомлень [S2].

Основна причина

CORS — це механізм на основі HTTP-заголовків, який дозволяє серверам вказувати, яким джерелам (домену, схемі або порту) дозволено завантажувати ресурси [S1]. Уразливості зазвичай виникають, коли політика сервера CORS є занадто гнучкою або погано реалізована [S2]:

  • Відображений заголовок походження: Деякі сервери зчитують заголовок Origin із запиту клієнта та відтворюють його в заголовку відповіді Access-Control-Allow-Origin (ACAO) [S2]. Це дозволяє будь-якому веб-сайту отримати доступ до ресурсу [S2].
  • Неправильно налаштовані символи підстановки: Хоча символ підстановки * дозволяє будь-якому джерелу отримати доступ до ресурсу, його не можна використовувати для запитів, які вимагають облікові дані (наприклад, файли cookie або заголовки авторизації) [S3]. Розробники часто намагаються обійти це, динамічно генеруючи заголовок ACAO на основі запиту [S2].
  • Білий список «null»: Деякі програми додають джерело null у білий список, що може бути викликано переспрямованими запитами або локальними файлами, що дозволяє шкідливим сайтам маскуватися під джерело null, щоб отримати доступ [S2][S3].
  • Помилки аналізу: Помилки в регулярних виразах або відповідності рядків під час перевірки заголовка Origin можуть дозволити зловмисникам використовувати такі домени, як trusted-domain.com.attacker.com [S2].

Важливо зазначити, що CORS не є захистом від міжсайтової підробки запитів (CSRF) [S2].

Конкретні виправлення

  • Використовуйте статичний білий список: Уникайте динамічного створення заголовка Access-Control-Allow-Origin із заголовка Origin запиту [S2]. Натомість порівняйте джерело запиту з жорстко закодованим списком довірених доменів [S3].
  • Уникайте «нульового» джерела: Ніколи не включайте null у свій білий список дозволених джерел [S2].
  • Обмежити облікові дані: встановлюйте Access-Control-Allow-Credentials: true, лише якщо це абсолютно необхідно для конкретної взаємодії між джерелами [S3].
  • Використовуйте належну перевірку: якщо вам потрібно підтримувати кілька джерел, переконайтеся, що логіка перевірки для заголовка Origin є надійною та не може бути обійдена субдоменами або схожими на вигляд доменами [S2].

Як FixVibe перевіряє це

FixVibe тепер включає це як закритий активний чек. Після перевірки домену active.cors надсилає запити API того самого походження з синтетичним походженням зловмисника та переглядає заголовки відповіді CORS. У ньому відображено довільне джерело, CORS із символом підстановки та широко відкрите CORS на непублічних кінцевих точках API, уникаючи шуму загальнодоступних активів.