Checkmarx SQL инъекция высокой степени серьезности проблемы - PullRequest
0 голосов
/ 20 марта 2020

В этом методе возникает проблема с высокой степенью серьезности:

    public void recordBadLogin(final String uid, final String reason, final String ip) throws DataAccessException {
    if (Utils.isEmpty(uid)) {
        throw new DataAccessException("User information needed to update , Empty user information passed");
    }
    try {
        String sql = (String) this.queries.get(IUtilDAO.queryKeyPrefix + UtilDAO.RECORD_FAILED_LOGIN);
        Map<String, Object> paramMap = new HashMap<String, Object>();
        paramMap.put("uid", uid.trim());
        paramMap.put("reason", (reason != null ? reason.trim() : "Invalid userid/password"));
        paramMap.put("ip", ip);
        this.namedJdbcTemplate.update(sql, paramMap);
    } catch (Exception e) {
        throw new DataAccessException("Failed to record bad login for user " + uid, e);
    }
}

Эта строка кода вызывает проблему:

String sql = (String) this.queries.get(IUtilDAO.queryKeyPrefix + UtilDAO.RECORD_FAILED_LOGIN);

запросов - это объект свойств и подготовленный оператор извлекается с учетом IUtilDAO.queryKeyPrefix + UtilDAO.RECORD_FAILED_LOGIN. И эти 2 аргумента являются константами. Логически я не понимаю, как это может вызвать проблему с SQL инъекцией, поскольку подготовленный оператор извлекается из словаря. У кого-нибудь есть идея, является ли это ложным срабатыванием или присутствует фактическая уязвимость?

1 Ответ

0 голосов
/ 21 марта 2020

Сложно сказать по приведенному примеру, но я предполагаю, что объект свойств был испорчен ненадежными данными. Большинство инструментов анализа потока кода портят всю структуру данных, если в нее помещаются ненадежные данные.

Технически это «ложное срабатывание». Но с точки зрения архитектуры это то, что должно быть исправлено - обычно плохая идея смешивать надежные и ненадежные данные в одной структуре данных. Это облегчает будущим разработчикам неправильное понимание статуса конкретного элемента и усложняет анализ кода и проблем безопасности как людьми, так и инструментами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...