一、漏洞背景
Apache Log4j2 是对 Log4j 的升级,它比前身 Log4j 1.x 版本的功能更加强大,该组件被广泛用于日常的开发、测试和生产环境中,根据MVN Repository显示有接近7000的项目引用了 Log4j2。
而本次漏洞造成的主要原因就是 Log4j2 提供的 ”Property Support“ 特性所造成的,利用该特性可以在打印日志的时候引用配置好的属性,并替换到日志当中,支持从配置文件、系统变量、环境变量、线程Context以及事件中存在的数据中引用所需的变量到日志中,功能十分强大。
在org.apache.logging.log4j.core.lookup包中提供了一系列的插件,支持用户从自定义的渠道来获取属性,其中JndiLookup插件(官方文档说明:https://logging.apache.org/log4j/2.x/manual/lookups.html#JndiLookup)允许用户通过JNDI来检索变量。由于其中未对查询地址做好过滤,导致产生JNDI注入漏洞,从而造成代码执行、命令执行等风险。该漏洞利用难度低、影响范围极大,可能在未来几年被广泛利用,成为日志调用的“噩梦”,本文会针对已知以及潜在的攻击面进行一个简要的分析。
二、影响范围
- Apache Log4j 2.x < 2.15.0-rc2(2.15.0-rc1 被绕过)
- 以下是MVN Repository显示的使用该组件的热门应用
三、 攻击面分析
根据漏洞组件引入的方式不同,可以分为两种情况:
- 直接使用:项目里直接引用 log4j2 作为日志记录;
- 间接使用:项目里引入的第三方库或者框架本身使用 log4j2;(相比于前者,此种方式更加不易被发现与修复)
四、已知影响项目
下列是目前已知的受影响项目,其中不乏主流的组件、框架以及应用服务。
- Apache Struts2
- Apache Solr
- Apache Druid
- Apache Flink
- ElasticSearch
- flume
- dubbo
- Redis
- logstash
- kafka
- …
五、Ghidra 等客户端漏洞利用链
ghidra 是 NSA 在2019年开源的逆向工具,作为可以与 IDA 竞争的存在,在安全研究领域有着不错的声望。由 M01N 安全研究员第一时间发现,ghidra 项目中也引用了存在漏洞的 Log4j2 组件,并向官方 Repo 提交了 issue。
该问题不禁让我们联想到了之前 IDA 后门反制安全研究员的操作,是否能构造特殊的可执行文件,让研究员在分析的过程中来触发 JNDI 注入漏洞呢 ?答案是可以的。经过我们的分析构造,成功编译出了可以让 ghidra 在逆向分析时触发日志记录的可执行文件,通过将该文件伪造成恶意的样本投递出去,吸引安全研究员前来分析,在其打开样本文件的时候就会成功触发漏洞进行远程代码执行,实现对其反制的目的。另外 Ghidra 用户可以在互联网上自行部署服务,为软件逆向工程提供协作服务器,其中潜在着远程触发漏洞的风险,裸露的 Ghidra Server 可能被攻击者利用该漏洞获取服务器控制权限。
Java 作为主流开发语言,类似的安全工具和开发软件都有可能会存在这种利用方式,在针对安全研究员和开发人员的鱼叉攻击场景下,恶意攻击者可能通过这种攻击方式直接代码执行拿下内网的办公机器,危害性很强。因此可以发现 Log4j2 带来的攻击面不止存在于企业对外提供的服务中,在涉及到 Java 日志记录的任何场景下都有可能存在新的攻击面。
六、Cobalt Strike 影响分析
漏洞爆发后,我们听到一些 CS 也受到影响的消息,并且网上一度盛传着一张在 CS 认证过程中触发漏洞的截图。我们针对 CS 的 Jar 包进行了深入的分析,发现 CS 4.0 – 4.4 中使用的 Log4j 版本为 1.x 版本,从目前披露的信息来看 CS 暂不受影响,但这个漏洞影响范围还在扩大,未来还需持续关注是否会出现新的影响。
七、小结
本次 Log4j2 组件由于其使用范围广,推动修复工作量很大,未来的一段时间内,该漏洞影响会持续存在,我们会持续关注并挖掘潜在的漏洞利用攻击链。
版权声明
本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。