← 最新论文
💻 计算机科学

State-inferer: LLM-Driven State Machine Extraction and Formal Verification for Secure Protocol Implementations

本文介绍了 State-inferer,这是一个结合了程序切片、大语言模型和形式化模型检测的白盒框架,用于从源代码中准确提取并验证协议状态机,实现了卓越的转换级准确度,并发现了 TLS、IKEv2 和 SSH 实现中四个此前未知的安全漏洞。

原作者: MengCheng Ju, Xi Chen, XieLi Zhang, Mingliang Zhu, Guanping Zhang, Dongliang Zhao, ChunXiang Gu

发布于 2026-11-09
📖 1 分钟阅读☕ 轻松阅读

原作者: MengCheng Ju, Xi Chen, XieLi Zhang, Mingliang Zhu, Guanping Zhang, Dongliang Zhao, ChunXiang Gu

原始论文采用 CC BY 4.0 许可(https://creativecommons.org/licenses/by/4.0/)。 ✨ 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

数字世界的安全性在很大程度上依赖于那些支配计算机如何相互通信的无形规则。这些被称为网络协议的规则,旨在确保数据能够安全地从发送者传输到接收者,同时验证身份并守护秘密。这些协议的核心在于其运作方式就像一个严格的剧本:一台计算机必须处于特定的状态,接收到特定的消息,然后才能进入一个新的状态,之后方可继续执行。如果计算机跳过了某个步骤,或者在错误的状态下接受了消息,整个系统都可能遭到破坏,从而导致攻击者绕过安全检查或窃取敏感信息。几十年来,安全专家一直试图验证运行在服务器上的实际代码是否完美遵循了这一剧本。然而,代码往往是混乱的,充满了隐藏变量和复杂的逻辑,标准的测试工具难以对其进行完整映射。当程序的实际行为与其编写的设计发生背离时,危险的缺陷就会隐匿在显眼之处,等待被利用。

来自解放军信息工程大学的研究团队开发了一种新方法来解决这个问题,创建了一个名为 State-inferer 的工具,它充当了复杂计算机代码与它本应遵循的逻辑规则之间的翻译官。该工具并非试图一次性读取整个代码库,也不是通过向程序发送随机消息来猜测其行为,而是将代码分解成微小且易于处理的部分。它使用一种称为“程序切片”(program slicing)的技术,追踪特定数据在软件中移动时的变化路径,从而隔离出导致计算机切换状态的精确逻辑。这个过程就像是在一团乱麻中追踪一根单线,以观察它究竟通向何处,同时忽略其余的杂乱部分。通过专注于这些特定的线条,该系统可以重建程序遵循的精确事件序列,包括标准工具经常遗漏的隐藏内部条件。

研究人员随后将这些重建的序列输入到一个大语言模型中,这是一种经过训练、能够理解并推理代码的类型人工智能。不同于以往仅要求 AI 阅读大段文本的尝试,该系统为协议中的每一次状态转换都提供了一小段专注的代码片段。这使得 AI 能够在不被无关信息淹没的情况下,看到状态变化的完整上下文。随后,AI 构建了一张完整的程序行为图谱,不仅记录了触发变化的各类消息,还记录了实现该变化必须成立的内部变量。最后,研究人员使用形式化验证引擎将这张图谱与官方安全规则进行比对。该引擎扮演着严谨审计员的角色,系统地测试程序可能采取的每一种路径,以检查其是否违反了规则,例如在安全连接尚未完全建立时就发送数据。

在对包括 TLS、IKEv2 和 SSH 在内的七种不同的主流安全协议开源实现进行测试时,这种新方法表现出了极高的准确性。它对代码行为的识别准确率达到了 95.2%,显著优于现有的最佳工具(后者仅能达到约 78.9%)。这种差异不仅仅是细微误差的问题;新工具成功捕捉到了其他方法完全错失的复杂内部逻辑,例如由内部计时器或资源检查而非外部消息驱动的状态转换。事实上,研究人员发现,由于旧方法依赖于一种忽略了这些内部细节的简化程序视图,它们往往无法察觉近一半的关键转换。通过捕捉全貌,该工具得以发现四项此前未知的软件漏洞。这些缺陷此前从未被发现,其严重程度足以被分配正式的安全标识符,并报告给软件维护者进行修复。

其中一个最重要的发现是,这些缺陷并非仅仅是理论上的可能性,而是真实的、可被利用的弱点。在一个案例中,该工具发现服务器可能会被诱骗,在完成必要的密钥交换之前就接受关键的安全消息,从而有效地绕过了身份验证。在另一个案例中,一项缺失的检查允许服务器处理无止尽的消息流,从而可能耗尽其资源。这些发现凸显了当前软件分析领域的一个关键差距:仅仅观察输入和输出不足以了解程序的真实运作方式。研究人员证明,通过将精确的代码分析与人工智能的推理能力相结合,构建出一个程序内部逻辑的完整且准确的模型是可能的。这种方法不需要修改软件,也不需要研究人员手动追踪每一行代码,因此是一种可以审计保护我们数字基础设施的复杂系统的可扩展方法。

该研究还解决了以往依赖基于文本相似度检索代码方法的局限性。那些方法之所以经常失败,是因为它们无法将协同工作以改变程序状态的不同函数连接起来。相比之下,新系统遵循实际的数据流和控制流,确保提供给人工智能的上下文是完整且连贯的。这使得系统能够生成专门针对每个独特实现中的变量和逻辑而定制的安全检查,而不是应用一个可能会偏离目标的通用模板。其结果是一个能够适应不同编码风格的差异,并仍能产生可靠系统行为模型的框架。

最终,这项工作代表了我们对待软件安全方式的一种转变。它不再认为我们必须要么手动检查每一行代码,要么依赖只能看到表象的黑盒测试。相反,它提供了一种深入机器内部的方法,去理解机器是如何思考和反应的。研究人员发现,通过将代码视为一组可以被切片、分析和验证的逻辑步骤,他们可以找到那些隐藏多年的错误。虽然该工具是在开源项目上进行的测试,但该方法为保障运行互联网的海量专有系统提供了路径。自动提取并验证复杂协议状态机的能力,意味着安全检查可以比以往任何时候都更彻底、更快速,从而有可能防止那些困扰了数字世界数十年的安全漏洞。研究结果证实,协议“应当做什么”与“实际做了什么”之间的差距正是危险所在,而缩小这一差距需要对代码本身进行更深入、更精确的审视。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →