Уязвимость внедрения CRLF при использовании slf4j LOGGER в Veracode (CWE 117)

Это регистратор slf4j, и я пытался зарегистрировать ошибку с двумя параметрами сообщений.

catch(ExecutionException executionException) {

LOGGER.error("TimeoutException caught , Error: " + SSG_TIMEOUT.getErrorText() 
       + ". Message: " +executionException.getMessage());    
}  

SSG_TIMEOUT.getErrorText() приводит к строке "TimeOut error encountered"

Вещи, которые я использовал

  1. Код ручной очистки

    return entry.replace("\t", "\\t").replace("\b", "\\b").replace("\n", 
        "\\n").replace("\r", "\\r").replace("\f", "\\f").replace("\u0000", 
        "\\0").replace("\\a", "\\a").replace("\\v", "\\v").replace("\\e", 
        "\\e").replaceAll("\\p{Cntrl}", "").replace("'", "\\'").replace("\"", 
        "\\\"").replace("\\", "\\\\");
    
  2. StringEscapeUtils.escapeJson(String errorMessage)

  3. Построитель строк для добавления строки + escapeJson(StringBuilder.toString())

Тем не менее я вижу проблему в моем отчете Veracode.

Какие-либо предложения?


person Amrit Gopal Singh    schedule 01.12.2020    source источник


Ответы (1)


Прежде всего, первые 2 метода дезинфекции верны, просто они не поддерживаются Veracode.

Перед использованием метода следует посетить раздел О поддерживаемых функциях очистки в https://help.veracode.com/r/review_cleansers

Итак, для вышеуказанной проблемы сработало StringUtils.normalizeSpace(). StringUtils.escapeJava также можно использовать, но он кажется устаревшим.

Солн:

    catch(ExecutionException executionException) {

    LOGGER.error("TimeoutException caught , Error: " + 
    StringUtils.normalizeSpace(SSG_TIMEOUT.getErrorText() 
    }  
person Amrit Gopal Singh    schedule 08.12.2020
comment
Спасибо @amrit-gopal-singh за предоставленный список моющих средств, признанных Veracode! Я провел 3 дня, копаясь в их отчетах, CVWE, OWASP и т. д., применяя черный список, белый список, экранирование и замену напрасно, пока не нашел ваш комментарий и не понял, что veracode распознает только java.net.URLEncoder.encode() из JSE. - person Rusi Popov; 09.03.2021