随着反序列化技术在Java Web应用开发中的广泛应用,针对Java反序列化机制的攻击也日益增多,已严重威胁Java Web应用的安全性。当前主流的黑名单防范机制无法有效防御未知的反序列化漏洞利用,而现有的Java反序列化漏洞挖掘工具大多依赖静态分析方法,检测精确度较低。文章提出一种基于模糊测试的Java反序列化漏洞挖掘工具DSM-Fuzz,该工具首先通过对字节码进行双向追踪污点分析,提取所有可能与反序列化相关的函数调用链。然后,利用基于TrustRank算法的函数权值分配策略,评估函数与反序列化调用链的关联性,并根据相关性权值对模糊测试种子分配能量。为进一步优化测试用例的语法结构和语义特征,文章设计并实现了一种基于反序列化特征的种子变异算法。该算法利用反序列化的Java对象内部特征优化种子变异过程,并引导模糊测试策略对反序列化漏洞调用链进行路径突破。实验结果表明,DSM-Fuzz在漏洞相关代码覆盖量方面较其他工具提高了约90%。此外,该工具还在多个主流Java库中成功检测出50%的已知反序列化漏洞,检测精确度显著优于其他漏洞检测工具。因此,DSM-Fuzz可有效辅助Java反序列化漏洞的检测和防护。