-赛博昆仑漏洞技术分析-
前言
3月8日,Apache Dubbo 官方发布漏洞公告,Dubbo泛型调用存在反序列化漏洞,漏洞编号为 CVE-2023-23638。
3月9日,赛博昆仑CERT根据补丁确定了漏洞原理,复现了该漏洞,并发出风险通告,本篇文章记录下漏洞的应急过程。
https://github.com/apache/dubbo-samples/tree/master/2-advanced/dubbo-samples-generic/dubbo-samples-generic-call/dubbo-samples-generic-call-provider
https://github.com/apache/dubbo/commit/4f664f0a3d338673f4b554230345b89c580bccbb#diff-c9002571855ba4e5eb625b72c81307ed8bf189f5ab757652320cc843738040b7
最新版对传入参数类型是否继承Serializable进行了校验。
根据漏洞描述,dubbo泛型调用存在反序列化漏洞。当使用dubbo的泛型时,会用PojoUtils处理传入的参数。
可以传入一个自定义的SerializeClassChecker覆盖SerializeClassChecker类中的INSTANCE ,就可以关闭黑名单检验,然后反序列化任意类。
调用过程中会经过hessian的序列化和反序列化,SerializeClassChecker不继承序列化接口,在hessian序列化的过程中会报错,但是反序列化不会校验是否存在序列化接口。可以在exp的项目中重写一个继承Serializable的SerializeClassChecker,再运行发送给provider端。
关闭OPEN_CHECK_CLASS
参考链接