本文首发于奇安信攻防社区
Log4j 2系列 < 2.15.0版本中存在反序列化漏洞。
奇安信代码安全实验室分析发现该组件存在Java JNDI注入漏洞。程序将用户输入的数据进行日志,即可触发此漏洞;成功利用此漏洞的攻击者可在目标服务器上执行任意代码。
奇安信代码安全实验室经验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等众多组件与大型应用均受影响。
为便于验证,复现使用的是环境 java 1.8.0_161 的较老版本。 利用工具如下: https://github.com/tangxiaofeng7/apache-log4j-poc
结果成功执行指定命令(打开macdown)。
在org.apache.logging.log4j.core.lookup Interpolator.calss lookup() 处理时,从第 190 行可以看到,它支持多种格式,其中包含jndi,故而使用jndi尝试进行攻击。
触发点在org.apache.logging.log4j.core.net JndiManager.class lookup()。 传入可能的用户输入值,即可触发攻击。
在 org.apache.logging.log4j.core.appender AbstractOutputStreamAppender.class directEncodeEvent() 调用getLayout()进行处理时,如下所示代码中添加了对于jndi调用的白名单检查。
并且,后续对 org.apache.logging.log4j.core.net JndiManager.class lookup() 基本重写,也添加了jndi检查。
jvm 启动参数
-Dlog4j2.formatMsgNoLookups=true`
在传入上述逻辑之前,org.apache.logging.log4j.core.pattern MessagePatternConverter.class format() 中 第114 行会执行检查:如果按照缓解建议添加jvm启动参数,那么此处this.noLookups即为true,则不会进入后续处理,不会触发后续反序列化流程。
1、漏洞排查 排查应用是否引入了 Apache Log4j2 Jar 包,若存在依赖引入,则可能存在漏 洞影响。
2、攻击排查
3、修复建议
(1)升级到最新版本:
请联系厂商获取修复后的官方版本:https://github.com/apache/logginglog4j2 ; 请尽快升级 Apache Log4j2 所有相关应用到最新的 log4j-2.15.0-rc2 版本,地址:https://github.com/apache/logginglog4j2/releases/tag/log4j-2.15.0-rc2 或采用奇安信产品解决方案来防护此漏洞。
(2)缓解措施:
Apache Log4j 是Apache 的一个开源项目。Log4j 是一个强大的日志操作包,是可重用组件,广泛应用于Java、 C、C++、.Net、PL/SQL 等程序中。通过各种第三方扩展,可将 Log4j 集成到 J2EE、JINI以及SNMP应用中。
近年来,攻击者越来越多地开始利用开源组件漏洞发动供应链攻击。据安全机构调查显示,开源供应链攻击事件比2020年增长了650%。虽然企业第三方风险管理的意识和预算已经增长,但这并不一定意味着所采取的措施是有效的。
奇安信代码安全事业部技术总监章磊认为,Apache Log4j RCE 漏洞之所以能够引起安全圈的极大关注,不仅在于其易于利用,更在于它巨大的潜在危害性。当前几乎所有的技术巨头都在使用该开源组件,它所带来的危害就像多米诺骨牌一样,影响深远。我们首先需要做的是梳理自身产品中所使用的软件资产,检测其中是否使用了开源组件、影响哪些资产、影响程度如何,判断受影响资产应修复到哪个版本,其它关联组件是否受影响等,最后着手修复和防御后续类似攻击。用户可通过奇安信开源卫士等工具系统化地应对此类漏洞。
章磊还表示,开源软件安全治理是一项任重道远的工作,需要国家、行业、用户、软件厂商都重视起来并投入才能达到良好效果。
奇安信开源卫士20211209.907版本已支持对Log4j 任意代码执行漏洞的检测。用户可登录 https://oss.qianxin.com 进行检测。
END
【版权说明】本作品著作权归代码卫士和奇安信CERT所有,授权补天漏洞响应平台独家享有信息网络传播权,任何第三方未经授权,不得转载。
本文分享自 WhITECat安全团队 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!