一、漏洞概述
12月9日,绿盟科技CERT监测到网上披露Apache Log4j远程代码执行漏洞(CVE-2021-44228),由于Apache Log4j2某些功能存在递归解析功能,未经身份验证的攻击者通过发送特别构造的数据请求包,可在目标服务器上执行任意代码。漏洞PoC已在网上公开,默认配置即可进行利用,该漏洞影响范围极广,建议相关用户尽快采取措施进行排查与防护。
12月10日,绿盟科技CERT发现Apache Log4j 2.15.0-rc1 版本仅修复LDAP和增加了host白名单,非默认配置下可以被绕过利用;官方对此发布了Apache Log4j 2.15.0-rc2版本(与官网的2.15.0稳定版相同)进行修复,增加了对urI异常的处理。
12月12日,官方又发布了Apache Log4j 2.15.1-rc1版本,直接禁用了JNDI功能,如果相关业务需要用到lookup功能,建议升级到此版本并手动将log4j2.formatMsgNoLookups默认设置为false。
Apache Log4j2是一款开源的Java日志框架,被广泛地应用在中间件、开发框架与Web应用中,用来记录日志信息。
漏洞成功复现截图:
Log4j 2.15.0-rc1绕过复现截图:
漏洞细节 | 漏洞PoC | 漏洞EXP | 在野利用 |
已公开 | 已公开 | 已公开 | 存在 |
参考链接:
https://issues.apache.org/jira/projects/LOG4J2/issues/LOG4J2-3201?filter=allissues
二、影响范围
受影响版本
- 2.0-beta9 <= Apache Log4j <= 2.15.0-rc1
注:
- Apache Log4j 1.X版本的应用,若开发者对JMS Appender利用不当,可对应用产生潜在的安全影响。
- Apache Log4j 2.15.0-rc1版本中已将log4j2.formatMsgNoLookups默认设置为true,在没有更改此默认配置的情况下,Log4j 2.15.0-rc1版本不受该漏洞影响。
供应链影响范围:
已知受影响应用及组件:
Jedis
Logging
Logstash
HikariCP
Hadoop Hive
ElasticSearch
Apache Solr
Apache Struts2
Apache Flink
Apache Druid
Apache Log4j SLF4J Binding
spring-boot-strater-log4j2
Camel :: Core
JBoss Logging 3
JUnit Vintage Engine
WSO2 Carbon Kernel Core
更多组件可参考如下链接:
https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core/usages?p=1
不受影响版本
- Apache Log4j 2.15.0-rc2(与官网的2.15.0稳定版相同)
- Apache Log4j 2.15.1-rc1
三、漏洞检测
3.1 人工检测
1、相关用户可根据Java jar解压后是否存在org/apache/logging/log4j相关路径结构,判断是否使用了存在漏洞的组件,若存在相关Java程序包,则很可能存在该漏洞。
2、若程序使用Maven打包,可查看项目的pom.xml文件中是否存在下图所示的相关字段,若版本号为小于2.15.0-rc2(测试版)或2.15.0(稳定版),则存在该漏洞。
3、若程序使用gradle打包,可查看build.gradle编译配置文件,若在dependencies部分存在org.apache.logging.log4j相关字段,且版本号为小于2.15.0-rc2(测试版)或2.15.0(稳定版),则存在该漏洞。
3.2 攻击排查
1、攻击者在利用前通常采用dnslog方式进行扫描、探测,常见的漏洞利用方式可通过应用系统报错日志中的”javax.naming.CommunicationException”、”javax.naming.NamingException: problem generating object using object factory”、”Error looking up JNDI resource”关键字进行排查。
2、攻击者发送的数据包中可能存在”${jndi:}” 字样,推荐使用全流量或WAF设备进行检索排查。
3.3 产品检测
绿盟科技远程安全评估系统(RSAS)与WEB应用漏洞扫描系统(WVSS)、网络入侵检测系统(IDS)、综合威胁探针(UTS)已具备对该漏洞的扫描与检测能力,请有部署以上设备的用户升级至最新版本。
关于RSAS的升级配置指导,请参考如下链接:
https://mp.weixin.qq.com/s/SgOaCZeKrNn-4uR8Yj_C3Q
3.4 申请云检测
绿盟科技面向用户提供远程检测服务,因该漏洞的检测存在一定风险,相关客户如需要申请云检测,请联系销售或项目经理沟通,或用个人的公司邮箱发邮件至rs@nsfocus.com,在正文中提供需要扫描的资产清单,可以扫描的时间,联系方式,服务人员会与您联系。
7x24h客服咨询热线:400-818-6868转2
四、漏洞防护
4.1 官方升级
1、目前官方已发布Apache Log4j 2.15.1-rc1(测试版)及Apache Log4j 2.15.0(稳定版)修复该漏洞,建议受影响用户可将Apache Log4j所有相关应用到以上版本,下载链接:https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.1-rc1或https://logging.apache.org/log4j/2.x/download.html
ps:若用户目前已经升级为Log4j 2.15.0-rc1或Log4j 2.15.0-rc2版本,默认配置下已不受该漏洞影响;请确定相关业务是否需要使用lookup功能,如果需要开启,请考虑升级到Log4j 2.15.1-rc1版本进行解决。
注:防止升级过程出现意外,建议相关用户在备份数据后再进行操作。
2、升级供应链中已知受影响的应用及组件:见前文《二、影响范围》的供应链影响范围。
4.2 产品防护
针对此漏洞,绿盟科技网络入侵防护系统(IPS)、WEB应用防护系统(WAF)与下一代防火墙 (NF)已发布规则升级包,请相关用户升级规则,以形成安全产品防护能力。安全防护产品规则版本号如下:
产品规则升级的操作步骤详见如下链接:
IPS:https://mp.weixin.qq.com/s/DxQ3aaap8aujqZf-3VbNJg
WAF:https://mp.weixin.qq.com/s/7F8WCzWsuJ5T2E9e01wNog
NF:https://mp.weixin.qq.com/s/R3k_KJm4O52bxy794jjo4A
WAF自定义规则防护:
- -规则库管理-自定义规则中,点击新建,创建三条自定义规则
规则一:parameter_name 正则包含
\$\s*\{\s*(date|java|marker|ctx|lower|upper|jndi|main|jvmrunargs|sys|env|log4j|:)\s*:[\x20-\x7e]+
点击添加,加入到约束条件中
规则二:检测对象parameter,参数名称*,正则包含
\$\s*\{\s*(date|java|marker|ctx|lower|upper|jndi|main|jvmrunargs|sys|env|log4j|:)\s*:[\x20-\x7e]+
规则三:
检测对象Header 参数名称* 正则包含
\$\s*\{\s*(date|java|marker|ctx|lower|upper|jndi|main|jvmrunargs|sys|env|log4j|:)\s*:[\x20-\x7e]+
规则四:
检测对象URI-path参数名称* 正则包含
\$\s*\{\s*(date|java|marker|ctx|lower|upper|jndi|main|jvmrunargs|sys|env|log4j|:)\s*:[\x20-\x7e]+
2、四个规则都创建完之后,安全管理-策略管理-自定义策略中选择新建
3、新建自定义策略,策略中选择刚才创建的四条自定义规则
外加规则四log4j2-uri
4、自定义策略创建完之后,到需要防护站点下面选择创建的自定义策略
5、有虚拟站点的情况,注意检查虚拟站点中是否也勾选了对应策略
4.3 临时防护措施
若相关用户暂时无法进行升级操作,可先用下列措施进行临时缓解:
1、添加jvm参数启动:-Dlog4j2.formatMsgNoLookups=true
2、在应用的classpath下添加log4j2.component.properties配置文件,文件内容为:log4j2.formatMsgNoLookups=true
3、设置系统环境变量 LOG4J_FORMAT_MSG_NO_LOOKUPS=true
注:当且仅当Apache Log4j >= 2.10版本时,可使用1、2、3的任一措施进行防护。
4、使用下列命令,移除log4j-core包中的JndiLookup 类文件:
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
5、采用人工方式禁用JNDI,例:在spring.properties里添加spring.jndi.ignore=true
6、建议使用JDK在11.0.1、8u191、7u201、6u211及以上的高版本,可在一定程度防止RCE。
7、限制受影响应用对外访问互联网,并在边界对dnslog相关域名访问进行检测。
部分公共dnslog平台如下:
ceye.io
dnslog.link
dnslog.cn
dnslog.io
tu4.org
burpcollaborator.net
s0x.cn
4.4 平台监测
绿盟企业安全平台(ESP-H)与绿盟智能安全运营平台(ISOP)已经具备针对此漏洞的检测能力,部署有绿盟科技平台类产品的用户,可实现对漏洞的平台监测能力。
安全平台 | 升级包/规则版本号 |
ESP-H(绿盟企业安全平台) | 使用最新规则升级包 attack_rule.1.0.0.1.1048648.dat |
ISOP(绿盟智能安全运营平台) | 升级攻击识别规则包至最新 attack_rule.1.0.0.1.1048648.dat |
声明
本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。
绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。