Java deserialization vulnerability is a severe threat in practice. Researchers have proposed static analysis solutions to locate candidate vulnerabilities and fuzzing solutions to generate proof-of-concept (PoC) serialized objects to trigger them. However, existing solutions have limited effectiveness and efficiency. In this paper, we propose a novel hybrid solution ODDFUZZ to efficiently discover Java deserialization vulnerabilities. First, ODDFUZZ performs lightweight static taint analysis to identify candidate gadget chains that may cause deserialization vulner-abilities. In this step, ODDFUZZ tries to locate all candidates and avoid false negatives. Then, ODDFUZZ performs directed greybox fuzzing (DGF) to explore those candidates and generate PoC testcases to mitigate false positives. Specifically, ODDFUZZ applies a structure-aware seed generation method to guarantee the validity of the testcases, and adopts a novel hybrid feedback and a step-forward strategy to guide the directed fuzzing. We implemented a prototype of ODDFUZZ and evaluated it on the popular Java deserialization repository ysoserial. Results show that, ODDFUZZ could discover 16 out of 34 known gadget chains, while two state-of-the-art baselines only identify three of them. In addition, we evaluated ODDFUZZ on real-world applications including Oracle WebLogic Server, Apache Dubbo, Sonatype Nexus, and protostuff, and found six previously unreported exploitable gadget chains with five CVEs assigned.
翻译:Java反序列化漏洞在实践中是一种严重的威胁。研究人员提出了静态分析和模糊测试解决方案以定位候选漏洞和生成触发它们的序列化对象的概念证明(PoC)。然而,现有解决方案的有效性和效率有限。在本文中,我们提出了一种新型混合解决方案ODDFUZZ,以高效地发现Java反序列化漏洞。首先,ODDFUZZ执行轻量级静态污点分析,以识别可能导致反序列化漏洞的候选机构链。在此步骤中,ODDFUZZ试图找到所有候选者并避免假阴性。然后,ODDFUZZ执行定向灰盒模糊测试(DGF)以探索这些候选者并生成PoC测试用例以减少假阳性。具体而言,ODDFUZZ采用结构感知的种子生成方法来保证测试用例的有效性,并采用新颖的混合反馈和步进策略来引导定向模糊测试。我们实现了ODDFUZZ的原型,并对流行的Java反序列化存储库ysoserial进行了评估。结果表明,ODDFUZZ可以发现34个已知机构链中的16个,而两个最先进的基线仅识别其中三个。此外,我们还在Oracle WebLogic Server,Apache Dubbo,Sonatype Nexus和protostuff等实际应用程序上进行了ODDFUZZ的评估,并发现了六个之前未报告的可利用的机构链,其中五个CVE已被指定。