Apache Log4j 被披露存在一个反序列化漏洞(CVE-2017-5645)。攻击者可以通过发送一个特别制作的2进制payload,在组件将字节反序列化为对象时,触发并执行构造的payload代码,带来数据泄露的风险。
漏洞详情见下文:
漏洞编号
CVE-2017-5645
漏洞名称
Apache Log4j反序列化漏洞
漏洞描述
攻击者发送一个特别制作的2进制payload,在组件将字节反序列化为对象时,触发并执行构造的payload代码。该漏洞是由于在处理ObjectInputStream时,接收函数对于不可靠来源的input没有过滤。
因此,通过给TcpSocketServer和UdpSocketServer添加可配置的过滤功能以及一些相关设置,可以有效的解决该漏洞。
漏洞利用条件和方式
远程利用
漏洞影响范围
- 受影响版本:Apache Log4j 2.0-alpha1 – Apache Log4j 2.8.1
- 不受影响版本:Apache Log4j 2.8.2
漏洞检测
查看Apache Log4j是否在受影响版本内。
漏洞修复建议(或缓解措施)
- 使用 Java 7+的用户应立即升级至2.8.2版本,或者避免使用socket server的相关类,参考链接。
- 使用Java 6的用户应该避免使用TCP或者UDP的socket server相关类,您也可以手动添加2.8.2版本更新的相关代码来解决该漏洞。
- 目前官方发布了2.9最新版本 ,强烈建议您更新并使用最新版本。
官方补丁:
https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc1
临时解决方案:
- 设置jvm参数 “-Dlog4j2.formatMsgNoLookups=true”
设置“log4j2.formatMsgNoLookups=True”
系统环境变量“FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS”设置为“true”
关闭对应应用的网络外连,禁止主动外连