Исправление Checkmarx Java для подделки журнала — очистка пользовательского ввода

#java #spring-boot #spring-mvc #checkmarx #secure-coding

#java #весенняя загрузка #spring-mvc #checkmarx #безопасное кодирование

Вопрос:

Кто-нибудь может предложить надлежащий процесс очистки / проверки, необходимый для переменной CourseType в следующем методе getCourses. Я использую эту переменную для записи в файл журнала.

Я пробовал HtmlUtils.htmlEscape () но не получил ожидаемых результатов.

Спасибо!

 @RequestMapping(value = "/retriveCourses", method = RequestMethod.GET)
@ResponseBody
public List<Course> getCourses(@RequestParam(value = "courseType", required = false) String courseType) {

}
  

Комментарии:

1. Можете ли вы добавить часть кода, в которую вы записываете, в журнал?

2. Привет .. спасибо за ответ. Я записываю @RequestParam в журнал следующим образом -logger.info («Тип курса » HtmlUtils. htmlEscape (CourseType)). Это позволяет подделать журнал.

Ответ №1:

похоже, что инструмент Checkmarx в этом случае корректен.

Уязвимость «Подделки журналов» означает, что злоумышленник может создавать журналы действий, чувствительных к безопасности, и создавать ложный контрольный журнал, потенциально вовлекая невиновного пользователя или скрывая инцидент.

При использовании htmlEscape некоторые специальные символы будут экранированы:

  • amp;amp< представляет < знак.
  • amp;amp> представляет > знак.
  • amp;ampamp; представляет amp; знак.
  • amp;ampquot; представляет " метку.

Это не приведет к экранированию или удалению символов новой строки / EOL / tab, которых следует избегать, чтобы сохранить целостность журналов.

Рекомендации по наилучшей практике, позволяющие избежать подделки журналов, следующие:

  1. Обязательно замените все соответствующие опасные символы. пример:

    cleanInput = input.replace('t', '-').replace('n', '-').replace('r', '-');

  2. Проверяйте все входные данные, независимо от источника. Проверка должна основываться на белом списке. Принимайте только данные, соответствующие указанной структуре, а не отклоняйте неправильные шаблоны. Проверьте: тип данных, размер, диапазон, формат, ожидаемые значения.

Надеюсь, это решит вашу проблему.

Ответ №2:

  1. Взгляните на серию шпаргалок для ведения журнала — OWASP в разделе «Коллекция событий»

  2. По-прежнему лучший кодировщик OWASP Java Encoder => Решить 2. из @yaloner

  3. В OWASP также есть проект, который поможет вам справиться с внедрением журналов ведения журнала безопасности OWASP => Решить проблему 1. из @yaloner

Взгляните на них, и проблема будет решена

Комментарии:

1. Прямые ссылки на рассматриваемые проекты: github.com/OWASP/owasp-java-encoder и github.com/javabeanz/owasp-security-logging