Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V5323. OWASP. Potentially tainted data is used to define 'Access-Control-Allow-Origin' header.

02 Апр 2025

Анализатор обнаружил небезопасную конфигурацию Cross-origin resource sharing (CORS). Значение заголовка ответа сервера Access-Control-Allow-Origin формируется на основе непроверенных данных извне.

Если значение заголовка Access-Control-Allow-Origin конфигурируется на основе данных извне, которые никак не проверяются, то это небезопасно и, в зависимости от обстоятельств, чревато негативными последствиями разной степени серьёзности. Сайты злоумышленников смогут получать доступ к ресурсам вашей страницы, а при особых обстоятельствах возможно раскрытие конфиденциальной информации.

Уязвимости такого типа относятся к категории рисков OWASP Top 10 Application Security Risks 2021:

Пример небезопасной конфигурации:

@GetMapping("/test")
public ResponseEntity<?> getExample(@RequestParam("origin") String origin) {
  var httpHeaders = new HttpHeaders();
  httpHeaders.add("Access-Control-Allow-Origin", origin); // <=

  return new ResponseEntity<>("ok", httpHeaders, HttpStatus.ACCEPTED);
}

Чтобы исключить риски, необходимо проверять, соответствуют ли данные извне значениям из "белого листа".

Исправленный пример:

private static final List<String> ALLOWED_ORIGINS = List.of(
        "https://first-allowed-domain.com",
        "https://second-allowed-domain.com"
);

@GetMapping("/test")
public ResponseEntity<?> getExample(@RequestParam("origin") String origin) {
  var httpHeaders = new HttpHeaders();
  if (ALLOWED_ORIGINS.contains(origin)) {
      httpHeaders.add("Access-Control-Allow-Origin", origin);
  }
  // ....
}

Выявляемые диагностикой ошибки классифицируются согласно ГОСТ Р 71207–2024 как критические и относятся к типу: Ошибки непроверенного использования чувствительных данных (ввода пользователя, файлов, сети и пр.).

Данная диагностика классифицируется как: