Есть ли проверка в библиотеке ESAPI, которая может гарантировать, что уязвимость CWE-93 не появится при сканировании veracode SAST?

Я выполнил SAST-сканирование своего кода на платформе Veracode и обнаружил эту уязвимость в функции электронной почты Java, которую я использую для отправки писем из своего приложения. Ниже приводится следующая уязвимость: неправильная нейтрализация последовательностей CRLF ("CRLF Injection") (CWE ID 93).

message.setSubject(subjectOfEmail);

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


person Shaan Anshu    schedule 01.07.2019    source источник


Ответы (3)


Посетите эту страницу в справочном центре Veracode, на которой перечислены библиотеки проверки, которые исправят определенные классы ошибок:

https://help.veracode.com/reader/DGHxSJy3Gn3gtuSIN2jkRQ/y52kZojXR27Y8XY51KtvvA

Существует множество библиотек ESAPI, которые исправят недостатки CWSE 93, в том числе

org.owasp.esapi.Encoder.encodeForHTML
person Jon Janego    schedule 02.07.2019

Если все, что вы хотите предотвратить в этом случае, — это проблема внедрения заголовков (с чем связан CWE ID 93), посмотрите на класс ESAPI org.owasp.esapi.StringUtilities. В частности, статический метод stripControls(), вероятно, именно то, что вам нужно. Использование Encoder.encodeForHTML(), вероятно, будет кодировать больше, чем вы хотите, поскольку оно предполагает контекст HTML. (Конечно, вы можете захотеть это, если вы беспокоитесь о предотвращении XSS в заголовках Subject определенных клиентов веб-почты. Как правило, эти клиенты уже должны иметь встроенную в них защиту, поэтому, если вы закодируете это, оно может в конечном итоге быть закодировано дважды и не отображается правильно.)

Имейте в виду, что если вы используете StringUtilities.stripControls(), ваш механизм SAST Veracode может по-прежнему помечать ваш код для CWE, хотя я не уверен, что он распознает метод этого класса как удаление флага taint в этом конкретном случае. (Но вы всегда можете упомянуть об этом в качестве смягчающего комментария.)

person Kevin W. Wall    schedule 06.07.2019

Используйте метод ESAPI decodeForHTML(), как показано ниже.

ESAPI.encoder().decodeForHTML(subjectOfEmail)

person Mayur Jain    schedule 10.07.2019