前言
Log4j2作为java代码项目中广泛使用的开源日志组件,它的一个严重安全漏洞对于全球的软件供应链生态来讲不亚于一场新冠病毒的影响,任何企业的代码项目沾上它都有可能给企业带来致命的安全风险。
全球新一轮的产业数字化升级对开源软件的依赖日益提升,从而催生开源生态的蓬勃发展,而开源软件的全球化和开放共享的特性使得任何一个非常底层和基础的开源组件的漏洞都有可能像一个新冠病毒一样快速传播,对全球的数字化产业带来无法估量的影响。而这种影响的持续时间可能是3~5年,甚至更长。
比新冠病毒更可怕的是,像Log4j2这样的基础组件其实还有很多,它们出现安全漏洞的概率可远远要比新冠病毒的概率要高的多。我们来看一组数据:Log4j2的依赖血缘:我们统计了1~4层的依赖血缘关系,直接和间接Log4j2的开源组件总计有17万个,也就是说有至少17万个开源组件是受Log4j2漏洞影响。GitHub作为全球最大的开源代码托管平台,抽样分析发现至少5.8%的java开源项目受该漏洞影响。截止目前,距离官方第一次发布修复版本已近一周时间,GitHub上还有89%的受影响项目仍然没有修复。在java语言的开源组件流行度排行中,Log4j2列第13位,也就意味着至少存在几十个这样的高影响度组件,一旦爆发漏洞,实际带来的影响都是类似的。
这样一组数据背后意味的是什么?是失控。这样的失控让我们不禁要思考,全球开源软件供应链生态风险控制体系是严重缺失的,开源软件蓬勃发展的背后似乎潜藏着巨大的危机,从软件供应链的生产商、分发平台、企业应用方其实都缺乏足够的风险意识和控制能力,这无疑会给企业和企业用户的信息安全带来非常大的潜在风险。
一、关于Log4j2漏洞对开源生态的影响分析
1)其他开源组件的依赖
我们对log4j2的1~4层依赖关系进行了统计分析,可以发现直接依赖log4j2的组件有个,第二层依赖有超过3万个,第三层有超过9万个,第四层有超过16万个,总共有超过个组件。
将其绘制成图的形式进行展现,可以直观地发现右上黑色点的log4j2不光自身影响的组件多,还间接影响到了很多其他的热门组件,例如中间黄色点的elasticsearch和绿色点的druid,以及左上紫色点jedis、左下红色点mybatis均被大量引用。
2)java应用项目的影响
通过对GitHub和Gitee中的应用级项目依赖进行统计,我们发现约有5.8%的java项目直接使用了log4j2。筛选star大于的「高星」项目,其中约有13.3%直接使用了log4j2。
在GitHub中有人创建了项目来展现本次漏洞对企业和项目的影响(