核弹级别的开源组件Log4J的远程执行漏洞爆出来之后,整个安全行业都忙着修复。各种漏洞分析文章,各家的工具来修复,阻击漏洞纷纷出场。目前本漏洞被CNVD标识为CNVD-2021-95914,被NVD暂编为CVE-2021-44228。目前2.0 到2.14.1之间的任意版本,以及log4j-2.15.0-rc1均受此漏洞影响,修复版本为log4j-2.15.0-rc2(注意:github上停在了log4j-2.15.0-rc2, maven官方以log4j-2.15.0-rc2版本发布了log4j-2.15.0)。下文均以CNVD-2021-95914代称此漏洞,将有漏洞的log4j所有版本简称为log4j.
由于log4J几乎遍布Java应用,人工筛查哪些应用包含此组件困难极大。软件成分分析(SCA)是解决此困难的工具。而我们通过筛查对比目前市场上可用的能响应CNVD-2021-95914扫描的SCA工具,发现情况并不如意。其中涉及不少技术挑战,尚不能被目前的工具所解决。本文逐个剖析这些挑战:
1 漏洞定位:log4j的真正漏洞代码出现在log4j-core的子组件。修复其他组件不一定能有效消除漏洞。很多产品都产生了误报的行为,让客户白忙一场。(图1)
![](https://img-blog.csdnimg.cn/img_convert/57435fecae56833cef51b05e450cd4c1.png)
Log4j-core 漏洞定位
CNVD-2021-95914真实影响的是log4j-core这个组件,但由于log4j的<group_id>org.apache.loggin