Анализатор обнаружил, что для конфигурации используются данные из внешнего источника. Это может привести к возникновению дефекта безопасности.
Уязвимости такого типа относятся к категории рисков OWASP Top 10 Application Security Risks 2021: A5:2021 - Security Misconfiguration.
Приведём пример:
public void ExecuteSqlQuery(....) { .... string catalog = Request.QueryString["catalog"]; using (SqlConnection dbConnection = IO.GetDBConnection()) { dbConnection.ConnectionString = $"Data Source=....; " + $"Initial Catalog={catalog}; " + $"User ID=....; " + $"Password=....;"; .... } .... }
В этом примере формируется строка подключения к БД. В параметр 'Initial Catalog' записываются данные, не прошедшие никакой валидации, благодаря чему злоумышленник может передать любое название каталога. Подобным образом он может получить информацию, доступ к которой не был предусмотрен.
Для защиты от подобных атак стоит производить валидацию входных данных. Пример корректного формирования строки подключения:
public void ExecuteSqlQuery(...., HashSet<string> validCatalogNames) { .... string catalog = Request.QueryString["catalog"]; if(!validCatalogNames.Contains(catalog)) return; using(SqlConnection dbConnection = IO.GetDBConnection()) { dbConnection.ConnectionString = $"Data Source=....; " + $"Initial Catalog={catalog}; " + $"User ID=....; " + $"Password=....;"; .... } .... }
В данном случае проверяется, что 'catalog' содержится в коллекции 'validCatalogNames'. Таким образом, пользователь будет иметь доступ лишь к определённому перечню каталогов, что не позволит получить приватную информацию.
Данная диагностика классифицируется как: