Evaluating the Effectiveness of LLMs in Aiding Compliance Testing of PKCS#1-v1.5
本文评估了将语法级变异与基于大语言模型的代码合成相结合,用于 PKCS#1 v1.5 实现合规性测试的有效性,发现尽管该方法成功复现了已知漏洞并发现了新的差异,但其效用受到大语言模型高发生率幻觉的严重限制,从而在运行可靠性与语义保真度之间造成了显著差距。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下你是一名严格的建筑检查员。你的工作是检查城市中建造的每一栋房子是否都完全遵循相同的蓝图。蓝图(即“规范”)规定:“前门必须是3英尺宽,屋顶必须是红色的,烟囱必须恰好10英尺高。”
在计算机安全的世界里,这些“房子”是处理加密消息(如数字签名)的软件程序。这些规则被称为 PKCS#1 v1.5。如果一个程序建造的房子与蓝图不完全匹配,它可能隐藏着黑客可以利用的后门,从而进行入侵。
问题所在:检查非常困难
检查这些房子极其困难:
- 随机猜测行不通: 如果你只是向房子投掷随机砖块,你几乎不可能偶然造出一个正好3英尺宽的门。你需要一个非常具体的计划。
- 专家工具很慢: 现有的由人类专家开发的工具可以检查蓝图的所有可能变体,但开发这些工具需要多年的深入研究和大量人工工作。这就像雇佣一个大师级建筑师团队来检查每一栋房子。
新的想法:“AI 建筑师”
研究人员提出了一个简单的问题:我们能否使用大语言模型(一种 AI)作为一个“翻译器”,将一份错误的蓝图转化为一个测试用例?
以下是他们的流程:
- 原始蓝图: 他们获取了房屋的官方规则。
- 变异器(“如果……会怎样”机器): 他们使用一个计算机程序故意以 13 种不同的方式破坏蓝图。例如,他们可能会说:“如果门是4英尺宽会怎样?”或者“如果屋顶是蓝色的会怎样?”或者“如果我们完全移除烟囱会怎样?”
- AI 翻译器: 他们将这些错误的蓝图交给 AI,并对它说:“编写一个计算机程序,按照这个错误的蓝图建造一座房子。”
- 测试: 他们运行 AI 的程序来建造这座房子,然后尝试将这座房子喂给 48 个不同的软件程序(即“建造者”),以观察这些建造者是否接受了这座错误的房子。如果一个建造者接受了一座错误的房子,则说明该建造者存在安全漏洞。
结果:两种数字的故事
好消息(运行可靠性):
AI 在遵循指令以开始工作方面表现出色。
- 99.8% 的情况下,AI 成功编写了一个运行且没有崩溃的程序。它就像一位建筑师,总是能交给你一份没有错别字或缺失页面的蓝图。
坏消息(语义保真度):
然而,AI 在实际遵循错误蓝图方面表现糟糕。
- 仅在 17.5% 的情况下,AI 真正按照错误的蓝图建造了房子。
- 在 82.5% 的案例中,AI 产生了“幻觉”。它看着错误的蓝图,心想:“噢,这看起来不对,”然后悄悄地将其修复回原始的完美蓝图,然后再进行建造。
类比:
想象你要求 AI:“建造一座带有蓝色门的房子。”
- 成功: AI 建造了一座带有蓝色门的房子。
- 幻觉: AI 建造了一座带有红色门的房子,因为它“知道”门通常是红色的,尽管你明确要求的是蓝色。它忽略了你的特定指令。
他们发现了什么?
- 他们发现了重大的漏洞: 该方法成功重现了 13 个已知安全漏洞中的 10 个(包括允许黑客伪造签名的最危险漏洞)。这证明了这个想法是行得通的。
- 他们发现了一个新漏洞: 他们在名为 LibTomCrypt 的库中发现了一个从未被报告过的新安全问题。这是因为 AI 成功建造了一座缺少特定部分(前导零字节)的房子,而该库接受了它。
- 瓶颈在于 AI,而非计划: 研究人员发现,“变异器”(破坏蓝图的机器)做得很好。问题完全在于 AI 无法坚持执行那些错误的规则。
“幻觉”的类型
研究人员对 AI 的失败进行了分类,就像医生诊断病人一样:
- “修复者”(最常见): AI 看到一条错误的规则(例如“填充长度必须小于 16 字节”)并认为“这不可能”,于是它默默地将其修复回正常规则。
- “忘了数学的数学天才”: AI 试图遵循规则,但在简单的数学计算上出了错(例如计算应该添加多少填充),导致建出的房子尺寸不对。
- “忽略”: AI 完全忽略了错误的规则部分,并建造了一座标准的房子。
总结
这篇论文表明,使用 AI 来辅助此类测试是有前景但目前不可靠的。
AI 非常擅长编写能够运行的代码(它不会崩溃),但它非常不擅长编写符合你原意的代码。它有一种习惯,会因为觉得自己比你更懂而“纠正”你的刻意错误。
研究人员得出结论:如果你想将 AI 用于这种类型的测试,你不能仅仅信任它编写的代码。你必须有一个第二层检查机制,以确保 AI 确实遵循了你特定的、错误的指令,而不是仅仅将其“修复”回正常状态。在此之前,AI 就像一个非常渴望表现、但经常忽略你“按正确方式做事”的具体命令的勤奋实习生。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。