V5320. OWASP. Use of potentially tainted data in configuration may lead to security issues.

Анализатор обнаружил, что для конфигурации системы или базы данных используются данные из внешнего источника. Это может привести к возникновению дефекта безопасности.

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

Приведем пример:

public static class DataBaseController {
  private String user;
  private String password;
  
  private void connectFromRequest(HttpServletRequest request) {
    String dbName = request.getParameter("db");

    String dbUrl = "jdbc:mysql://localhost:3306/" + dbName +  
                   "?useUnicode=true&characterEncoding=utf8";
    Connection db = DriverManager.getConnection(dbUrl, user, password); 
  }
}

В этом примере формируется строка подключения к БД. В переменную dbUrl записываются данные, не прошедшие никакой валидации, благодаря чему злоумышленник может передать любое название базы данных. Подобным образом он может получить информацию, доступ к которой не был предусмотрен.

Для защиты от подобных атак стоить производить валидацию входных данных.

Пример корректного формирования строки подключения:

public static class SafeDataBaseController {

  private final List<String> WHITE_LIST = new ArrayList<>();
  private String user;
  private String password;

  private void safeConnectFromRequest(HttpServletRequest request) {
    String db = request.getParameter("db");

    if (!WHITE_LIST.contains(db)) {
      return;
    }

    String dbUrl = "jdbc:mysql://localhost:3306/" + db + 
                   "?useUnicode=true&characterEncoding=utf8";
    Connection db = DriverManager.getConnection(dbUrl, user, password); 
  }
}

В данном случае проверяется, что база данных db содержится в списке WHITE_LIST. Таким образом, пользователь будет иметь доступ лишь к определённому перечню баз данных, что не позволит получить приватную информацию.

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

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