软件中的信息泄漏可能会无意中泄露私人数据,但很难检测和修复。尽管已经提出了几种检测泄漏的方法,例如基于静态验证的方法,但它们需要专业知识,而且耗时。最近,HyperGI引入了一种动态的、基于超测试的方法,可以检测并生成信息泄漏的潜在修复。它的适应度函数试图平衡信息泄漏和程序正确性,但正如该工作的作者指出的那样,在保持程序语义和减少信息泄漏之间可能存在权衡。
在这项工作中,我们询问是否有可能在更现实的程序中自动检测和修复信息泄漏,而无需专业知识。我们的方法称为LeakReducer,它将程序正确性和信息泄漏之间的权衡明确编码为一个多目标优化问题。我们将LeakReducer应用于一组泄漏程序,包括众所周知的心跳错误。它在玩具应用方面与HyperGI相当。此外,我们证明了它可以在实际应用中发现并减少泄漏,并且我们在Pareto方面看到了不同的解决方案。经调查,我们发现,帕累托阵线有助于某些类型的信息泄漏,但并非全部。