论文
DebugHarness:模拟人类动态调试以进行自主程序修复
DebugHarness: Emulating Human Dynamic Debugging for Autonomous Program Repair
摘要
修补复杂软件中的严重安全缺陷仍然是一项重大挑战。虽然模糊器等自动化工具可以有效地发现错误,但修复根深蒂固的底层错误(例如释放后使用和内存损坏)仍然需要专家进行劳动密集型的手动分析。新兴的 大语言模型 (LLM) 代理尝试自动化此管道,但它们通常将错误修复视为纯粹的静态代码生成任务。这些方法仅依赖于静态工件,因此错过了诊断复杂的内存安全违规所必需的动态执行上下文。为了克服这些限制,我们引入了 DebugHarness,这是一种由 LLM 支持的自主调试代理工具,可通过模拟人类系统工程师的交互式调试实践来解决复杂的漏洞。 DebugHarness 不只是检查静态代码,而是主动查询实时运行时环境。在可重现崩溃的驱动下,它利用模式引导的调查策略来制定假设,交互式地探测程序内存状态和执行路径,并通过闭环验证周期合成补丁。我们在 SEC-bench 上评估 DebugHarness,SEC-bench 是真实世界 C/C++ 安全漏洞的严格数据集。 DebugHarness 成功修补了大约 90% 的已评估错误。与最先进的基线相比,这产生了超过 30% 的相对改进,表明动态调试显着增强了 LLM 诊断能力。总体而言,DebugHarness 为自动程序修复建立了一种新颖的范例,弥合了静态 LLM 推理与低级系统编程的动态复杂性之间的差距。