【漏洞描述】
近日,监测到Apache官方发布了Log4j的多个漏洞通告,分别为Apache log4j JMSSink反序列化代码执行漏洞(CVE-2022-23302),Apache log4j JDBCAppender SQL注入漏洞(CVE-2022-23305),Apache log4j Chainsaw反序列化代码执行漏洞(CVE-2022-23307)。
1.CVE-2022-23302:Apache Log4j JMSSink反序列化代码执行漏洞,根据官方描述,当攻击者对Log4j配置具有写访问权限时,不受信任的数据或如果配置引用了攻击者有权访问的LDAP服务。攻击者可以提供一个TopicConnectionFactoryBindingName配置,导致JMSSink执行JNDI请求,这与CVE-2021-4104远程执行代码的方式类似。
请注意,此问题仅在专门配置为使用JMSSink时影响Log4j 1.x,Log4j默认配置时不受此漏洞影响。
2.CVE-2022-23305:Apache Log4j JDBCAppenderSQL注入漏洞,根据官方描述,Log4j 1.2.x中的JDBCAppender接受SQL语句作为要插入的值是转换器的配置参数,PatternLayout消息转换器未对输入的值进行过滤,允许攻击者通过在输入中输入精心制作的字符串来操纵SQL,实现非法查询。
请注意,此问题仅在专门配置为使用JDBCAppender时会影响Log4j 1.x,Log4j默认配置时不受此漏洞影响。
3.CVE-2022-23307:Chainsaw v2是由Log4j开发社区成员编写的与Log4j配套的应用程序,是一个基于GUI的日志查看器,该漏洞由于Apache Log4j 1.2.x中的Chainsaw存在反序列化代码执行漏洞,可能造成任意代码执行。
请注意,Log4j默认情况下未配置Chainsaw的使用,因此默认配置下不受此漏洞影响。
严重等级:高危
【影响范围】
Apache Log4j 1.x
Apache Chainsaw < 2.1.0
可能的受影响应用及组件(包括但不限于)如下:Apache Groovy、Spring Boot、Logging等
更多组件可参考如下链接:https://mvnrepository.com/artifact/log4j/log4j/usages
不受影响版本:
Apache Log4j 2.x
【修复建议】
官方升级:
官方已于2015 年停止对Log4j 1.x版本进行维护,请相关用户升级到 Log4j 2以获得安全修复,迁移方式可参考官方文档:https://logging.apache.org/log4j/2.x/manual/migration.html
1、鉴于Log4j2日前被爆出过多个高危漏洞,建议升级到以下的安全版本进行防护:
1) Apache Log4j 2.17.1-rc1(与2.17.1稳定版相同)
2) Apache Log4j 2.12.4-rc1(与2.12.4稳定版相同)
3) Apache Log4j 2.3.2-rc1(与2.3.2稳定版相同)
注:2.17.1支持Java 8及以上,2.12.4支持Java 7,2.3.2支持Java 6。
官方下载链接:https://logging.apache.org/log4j/2.x/download.html或https://github.com/apache/logging-log4j2/tags
2、对于Apache log4j Chainsaw反序列化代码执行漏洞(CVE-2022-23307),也可通过升级Apache Chainsaw至最新版的方式进行修复,官方下载链接:https://logging.apache.org/chainsaw/2.x/download.html
临时防护措施:
若相关用户暂时无法进行升级操作,可先用下列措施对上述漏洞进行临时缓解:
1、Apache log4j JMSSink反序列化代码执行漏洞(CVE-2022-23302)临时防护:
1)注释掉或删除 Log4j 配置中的 JMSSink。
2)使用下列命令,从log4j jar包中删除 JMSSink 类文件:
zip -q -d log4j-*.jar org/apache/log4j/net/JMSSink.class |
3)限制系统用户对应用程序平台的访问,以防止攻击者修改 Log4j 的配置。
2、Apache log4j JDBCAppender SQL注入漏洞(CVE-2022-23305)临时防护:
从Log4j的配置文件中删除JDBCAppender的使用
3、Apache log4j Chainsaw反序列化代码执行漏洞(CVE-2022-23307)临时防护:
不要配置Chainsaw来读取序列化的日志事件。可使用其他的接收器,例如 XMLSocketReceiver