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

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

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

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

- A5:2021-Security Misconfiguration.

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

    @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 как критические и относятся к типу: Ошибки непроверенного использования чувствительных данных (ввода пользователя, файлов, сети и пр.).

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

CWE-346 CWE-942