摘要
arXiv:2503.09002v2 宣布类型: replace-cross
摘要:静态分析是用于关键系统(如操作系统核)的错误检测的强大技术。然而,设计和实现静态分析器极具挑战性,耗时且通常局限于预定义的错误模式。尽管大型语言模型(LLMs)在静态分析方面展现了一定的潜力,但由于计算限制和背景限制,直接将它们应用于扫描大型系统仍然是不现实的。
我们提出了KNighter,这是第一个通过自动从历史错误模式合成静态分析器来解锁可扩展的LLM基础静态分析的方法。我们的重要见解在于,而不是直接使用LLMs来分析庞大的系统,而是利用LLMs生成由历史补丁知识引导的特定静态分析器。KNighter通过一个多阶段合成流水线来实现这一愿景,该流水线通过原始补丁验证检查器的正确性,并采用自动化精炼过程来迭代减少假阳性。我们在Linux内核上的评估表明,KNighter生成了能够检测现有手动编写分析器忽略的多种错误模式的高精度检查器。截至目前,KNighter合成的检查器已发现Linux内核中的92个新关键性长期未发现的错误(平均4.3年);其中77个已得到确认,57个已修复,16个已经分配了CVE编号。这项工作确立了一个全新的可扩展、可靠且可追踪的LLM基础静态分析范式,通过检查器合成应用于实际系统中。