2021年12月10日,国家信息安全漏洞共享平台(CNVD)收录了Apache Log4j2远程代码执行漏洞(CNVD-2021-95914),此漏洞是一个基于Java的日志记录工具,为Log4j的升级。作为目前最优秀的Java日志框架之一,被大量用于业务系统开发。
Apache Log4j2 丨阿里云「流量+应用+主机」三重检测防护指南
漏洞情况
此次危机由Lookup功能引发,Log4j2在默认情况下会开启Lookup功能,提供给客户另一种添加特殊值到日志中的方式。此功能中也包含了对于JNDI的Lookup,但由于Lookup对于加载的JNDI内容未做任何限制,使得攻击者可以通过JNDI注入实现远程加载恶意类到应用中,从而造成RCE。
影响范围
Log4j2做为apache推出的一款主流日志框架,使用范围广大,经阿里云安全团队验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响。
单从Maven仓库中看,存在漏洞的Log4j-core的直接应用就高达将近七千:
而在直接应用了Log4j-core的依赖中,就包含了SpringBoot、JBoss、Solr等十分流行的框架,
漏洞几乎影响所有使用Log4j2 2.15.0的用户,包含2.15.0-rc1也已经有绕过手法流出。
针对此漏洞,阿里云快速响应,已更新各安全产品规格,实现流量+应用+主机侧的全面防御,阿里云安全也建议Apache Log4j2用户尽快采取安全措施阻止漏洞攻击。
云上流量检测
双重防护
第一重:Web应用防火墙规则更新
面对漏洞的来势汹汹,Web应用防火墙作为流量防控先锋军,在原有规则上已具备JNDI注入防护能力,目前已更新对Apache Log4j 2.x的JNDI注入利用的增强防护规则:
(图:阿里云Web应用防火墙规则更新情况)
第二重:云防火墙双向拦截
阿里云云防火墙也已完成规则更新,可对利用Apache Log4j2 远程代码执行漏洞发起的dnslog访问、反弹shell、jndi注入等攻击,以及此漏洞的探测结果外联行为等实时检测,并及时进行拦截。
用户可按如下步骤进行检测防御:
1.云上客户可以通过【云防火墙->攻击防护->防护配置->威胁引擎运行模式】一键开启拦截模式,开启后云防火墙将自动拦截攻击行为。
2.虚拟补丁能有效的帮助企业用户争取漏洞修复时间,避免应用程序的修复重启给业务带来不必要的风险与中断,通过【虚拟补丁->自定义选择】可以查看当前虚拟补丁类型、明细和当前动作。
3.入侵防御界面通过对攻击聚类,实时显示攻击来源、攻击分布、阻断目的/来源TOP信息,方便进行溯源分析、事件排查和应急防御。
阿里云云上RASP
天然防护
不同于传统基于流量特征的防御方式,RASP(Runtime Application Self-Protection)作为一款基于行为和应用运行时上下文的防御产品,不会陷入特征穷举,而更加关注「正常基线」,即一个应用的正常使用行为有哪些,如果这个行为(如命令执行)不属于该功能的正常操作,则会进行拦截。
而此次的Log4j2漏洞,作为一款日志框架,相比起记录日志等类型的正常行为,进行命令注入、执行,本身就是一个明显的异常行为。RASP在默认规则下,会拦截掉所有因反序列、JNDI注入导致的命令执行、任意文件读取、恶意文件上传等危险行为。此次漏洞,系Log4j2的JNDI功能造成的命令执行漏洞,完全处在RASP覆盖场景之中,无需新增规则也能默认防御。
用户可按如下步骤完成检测防御:
1、登录ARMS控制台;
说明:探针版本要求>=2.7.1.3,应用首次开启接入ARMS应用安全,需要重启应用实例才会生效
2、在左侧导航栏,选择应用安全 > 攻击统计页面:
(图:阿里云RASP成功捕获到Log4j2漏洞利用与探测行为)
当受到Log4j2远程代码执行漏洞攻击时,ARMS应用安全会识别上报攻击行为事件,客户还可以通过配置告警规则,通过短信、钉钉、邮件等渠道接收攻击告警通知。
3、危险组件自动检测:在左侧导航栏,选择应用安全 > 危险组件检测,针对三方组件依赖自动分析关联CVE漏洞库并提供修复建议。
4、危险组件全量自查,用户可通过搜索查看所有接入应用是否包含Log4j组件,并确定Log4j组件的版本
(图:阿里云RASP在组件中发现Log4j组件)
阿里云安全建议
修复升级
1
排查应用是否引入了Apache Log4j-core Jar包,若存在依赖引入,且在受影响版本范围内,则可能存在漏洞影响。请尽快升级Apache Log4j2所有相关应用到最新的 Log4j-2.15.0-rc2 版本,地址:https://github.com/apache/Logging-Log4j2/releases/tag/Log4j-2.15.0-rc2
2
升级已知受影响的应用及组件,如 spring-boot-starter-Log4j2/Apache Struts2/Apache Solr/Apache Druid/Apache Flink
3
可升级jdk版本至6u211 / 7u201 / 8u191 / 11.0.1以上,可以在一定程度上限制JNDI等漏洞利用方式。
安全建设
1
尽可能杜绝对外开放端口,加强对企业内部应用的证书验证管控,最大可能减少外网攻击面;
2
在外网开启Web应用防火墙+RASP组合,采取基于行为和应用运行时上下文的防御产品;
3
在安全配置评估中,严格控制开源软件安全,并自建内部安全版本库,及时更新;
4
建立多层检测防御体系,采用内网多层隔离,并全面提升威胁检测能力。
我有话说: