作者:墨云科技VLab Team
原文链接:https://mp.weixin.qq.com/s/cJ65VXdHzSelIptJ5TIW_A
漏洞简述
2021年3月24日,墨云安全V-Lab实验室向Apache官方报告了OFBiz产品的反序列化漏洞,2021年4月28日Apache OFBiz发布了致谢信息。
时间线
- 2021年3月24日向Apache OFBiz报告了此漏洞
- 2021年3月26日Apache OFBiz给出修复方案
- 2021年3月30日Apache OFBiz在github上提交了修复漏洞代码
- 2021年4月2日Apache OFBiz分配CVE编号CVE-2021-29200
- 2021年4月28日Apache OFBiz发布致谢信息
影响版本
Apache OFBiz < 17.12.07
漏洞分析
3月21日有一些安全厂商发了Apache OFBiz CVE-2021-26295反序列化漏洞的风险通知,接下来两天有一些公众号写了关于这个漏洞的分析文章,用的都是URLDNS POC,使用URLDNS显然是不能去验证是否存在漏洞的。
复现漏洞一般都是查看修复代码,根据修复代码去构造POC。CVE-2021-26295漏洞的修复代码链接是
https://github.com/apache/ofbiz-framework/commit/af9ed4e/
对反序列化漏洞有了解的应该知道重写resolveClass方法是用来防御反序列化漏洞。新增的代码是想阻止class名称中包含"java.rmi.server"字符的。看下完整的SafeObjectInputStream类。
SafeObjectInputStream类采用黑名单和白名单来防御反序列化漏洞。但是这里的黑名单判断有点问题,注意看72行和77行代码,这里判断在黑名单列表里面直接return null了并没有抛出异常。正确的修复方案应该是使用throw new InvalidClassException去抛出异常。使用return null反而让在黑名单列表的class提前返回,不会执行到下面的白名单列表检查。看到这里我不仅仅知道了之前的OFBiz反序列化漏洞的POC,而且知道能用之前的1day当0day玩。
根据SafeObjectInputStream类resolveClass方法的两次return null,可以得知两个POC都跟"java.rmi.server"和"org.apache.commons.fileupload"有关。分别对应ysoserial的JRMPClient和FileUpload1。
OFBiz把commons-fileupload升级到1.3.3了,默认配置下没有漏洞,如果配置了SERIALIZABLE_PROPERTY可序列化也会产生漏洞。
JRMPClient POC是可以进行利用的。首先使用ysoserial的JRMPListener启动一个JRMP端口,在跟OFBiz发送JRMPClient POC让OFBiz服务端来请求恶意的JRMP端口来达到攻击目的。具体这方面文章网上挺多的,这里就不详解了。
我把我了解的这些情况总结成一份报告发给Apache OFBiz后,OFBiz在3月26日给我一份修复方案。
在这里OFBiz做了三处改动。在之前的
"java.rmi.server"和"org.apache.commons.fileupload"的return null代码改成了抛出异常。把之前的"java.rmi.server"范围缩小到了"java.rmi"。这里黑名单范围缩小的改动当时还不清楚是为什么,过了段时间有人公布了weblogic低版本jdk中的一个0day其中使用到了java.rmi.MarshalledObject作为二次反序列化来绕过黑名单检查。漏洞作者也应该跟OFBiz提交了一份报告。关键代码如下:
OFBiz让我跟他确认修复方案是否还有问题时,我又看了一次SafeObjectInputStream类
这里使用whitelistPattern.matcher去匹配类名,但是并没有判断开始位置,可能会存在安全风险的。假如class名称是xxx.java.xxx也会通过白名单列表的检查。但是要证明有安全风险我得找出存在这样的风险。于是我花了一些时间去寻找class名称是xxx.java.xxx的类。很遗憾最后没有找到能利用的,最后回复OFBiz邮件确认没有问题。后来阿里的一位安全研究员在这里找到了漏洞CVE编号是CVE-2021-30128。不过OFBiz的修复方案是在黑名单列表新增了CVE-2021-30128绕过的关键字,并没有去判断class的开始位置,可能后面还是会被绕过的。
修复建议
下载并更新到最新版本的Apache OFBiz:
https://downloads.apache.org/ofbiz/apache-ofbiz-17.12.07.zip
本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/2026/