You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求Log4j漏洞修复帮助:升级至2.17.2后仍存一处漏洞

修复log4j-1.2-api中log4j.dtd引发的Black Duck漏洞

针对你遇到的问题,这里提供几种可行的修复方案,按优先级排序:

1. 移除log4j-1.2-api依赖(最优解)

如果你的项目不需要兼容Log4j 1.x的旧代码,直接将log4j-1.2-api依赖从构建文件中移除,仅保留log4j-core和log4j-api。这样包含log4j.dtd的模块会被彻底移除,从根源消除漏洞触发的可能。

2. 禁用Log4j 2.x的DTD解析

若必须保留1.x API兼容依赖,通过配置强制关闭DTD解析功能,即使log4j.dtd存在也不会被解析,消除实际风险:

  • 在代码启动时设置系统属性:
    System.setProperty("log4j2.disableDtd", "true");
    
  • 或者在JVM启动参数中添加:
    -Dlog4j2.disableDtd=true
    

3. 打包时排除log4j.dtd文件

通过构建工具配置,在打包过程中排除该dtd文件:

  • Maven配置示例:
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-1.2-api</artifactId>
        <version>2.17.2</version>
        <exclusions>
            <exclusion>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-1.2-api</artifactId>
                <type>dtd</type>
            </exclusion>
        </exclusions>
    </dependency>
    
  • Gradle配置示例:
    configurations.all {
        exclude group: 'org.apache.logging.log4j', module: 'log4j-1.2-api', type: 'dtd'
    }
    

4. 向Black Duck提交误报申诉

如果已经采取了上述防护措施(比如禁用DTD解析),但Black Duck仍标记漏洞,可以在平台提交误报申诉,说明该文件无实际可利用风险,并提供你已实施的防护配置作为证据,请求更新漏洞状态。

内容的提问来源于stack exchange,提问作者Rakesh Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 12:05:13