java - 在 Veracode 中使用 slf4j LOGGER 时出现 CRLF 注入(inject)漏洞 (CWE 117)

标签 java security veracode crlf-vulnerability

这是一个 slf4j 记录器,我一直在尝试使用 2 个消息参数记录错误。

catch(ExecutionException executionException) {

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

SSG_TIMEOUT.getErrorText() 结果为字符串“遇到超时错误”

我用过的东西

  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 报告中看到了这个问题。

有什么建议吗?

最佳答案

首先,前两种清理方法是正确的,只是 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() 
    }  

关于java - 在 Veracode 中使用 slf4j LOGGER 时出现 CRLF 注入(inject)漏洞 (CWE 117),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65086887/

相关文章:

java - 比较两个使用断言转换为对象的json列表

java - 将变量传递给 JSP Java 中的方法

c# - 在网站的 bin 文件夹中包含 csc.exe 的安全问题

php - PHP 开发人员需要了解哪些有关 https/安全套接字层连接的知识?

cordova - Ionic 3 cordova-plugin-advanced-http 主机不匹配问题

java - HTTP header 中 CRLF 序列的不当中和

java - 在 Tomcat 服务器重新启动之前无法可靠地从数据库加载数据

java - Maven POM 多环境配置文件

c++ - 关于如何以编程方式与 nmap 集成的任何想法?

java - ESAPI 库中是否有验证可以确保 Veracode SAST 扫描中不会出现 CWE-93 漏洞?