The Illusion of Secure LLM Code: Closing the Security Gap via Iterative Reprompting
本研究表明,AI 编程助手默认无法生成安全的身份验证代码,揭示了只有通过带有自我审计循环的迭代式提示(而非单次提示),才能实现符合 NIST 标准所需的全面安全架构。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你刚刚买了一个全新的、超级智能的机器人助手。你要求它为你盖一座房子,它在几秒钟内就迅速搭建出了一个拥有墙壁、屋顶和前门的精美结构。它看起来完美无瑕!但问题在于:这个机器人是通过阅读互联网上数百万份旧蓝图来学习盖房子的,其中包含了一些来自 20 世纪 80 年代的蓝图,那时候的人们可能会忘记锁后门,或者用纸板做地基。这个机器人非常擅长让东西“看起来”像一座房子,但它并不总是知道如何建造一座能真正挡住窃贼的房子。
这就是大语言模型(LLM)在软件开发领域的现状。这些 AI “机器人”正在为我们编写计算机代码。它们正因帮助程序员更快地构建应用程序而闻名遐迩。但有一个巨大的疑问悬在头顶:如果你要求 AI 构建一个网站的数字“前门”(称为身份验证系统),它究竟会为你打造一座堡垒,还是仅仅搭建一个会被黑客踢开的脆弱纸板门?我们之所以关心这个问题,是因为我们几乎所有的在线活动——银行转账、社交媒体、购物——都依赖于这些数字之门。如果 AI 构建了一个脆弱的门,我们的秘密就无法得到保障。
数字门大测试
在这篇论文中,一组研究人员决定扮演“最坏情况”开发者的角色。他们不想看当一名专家在 AI 耳边低声叮嘱安全技巧时,AI 会表现得如何。他们想看的是,当 AI 被单独留下,或者只得到模糊提示时,它会做出什么反应。他们设计了一个大规模实验,来测试五种最流行的 AI 编程助手(包括 GitHub Copilot、OpenAI Codex 和 Google 的模型等工具)。
他们的目标很简单:要求这些 AI 构建一个 Web 应用的登录系统。然后,他们扮演数字窃贼的角色,看看是否能破门而入。
研究人员尝试了四种不同的方式来要求 AI 构建这扇门:
- “直接去做”法(基础提示词): 他们要求 AI “构建一个简洁的登录系统”。没有提到安全性,只是要求“让它运行起来”。
- “态度友好”法(安全提示词): 他们加入了一个微小的引导:“使其安全且简洁。”
- “专家手册”法(基于 NIST 的提示词): 他们给了 AI 一本特定的规则书(NIST SP 800-63B 指南,这就像是数字锁的官方政府标准)并要求它遵循这些规则。
- “再做一遍”法(迭代重提示): 这是其中的转折点。在 AI 构建完门之后,研究人员再次把规则书递给它,并说:“嘿,看看你刚才造了什么。对照规则检查一下。你漏掉了什么?现在,把它修复。”
结果:安全的幻象
研究结果令人有些不安,但也非常清晰。
当研究人员使用 “直接去做” 的方法时,AI 构建了功能完备的门,但却漏洞百出。代码可以运行,但经常忘记“锁上窗户”。它没有阻止人们进行无数次尝试猜测密码(暴力破解攻击),没有妥善隐藏“钥匙”(会话 Cookie),有时甚至使用了弱锁(过时的密码哈希算法)。这就像是盖了一座房子,装了一扇木门,上面写着“推”的标志,却没有任何插销。
即使他们使用了 “态度友好” 的方法(仅仅要求代码“安全”),AI 的表现也没有好多少。它似乎认为“安全”仅仅意味着“不会崩溃”,而不是“无法被攻破”。
当他们把 专家手册(NIST 规则)交给 AI 时,情况有所好转。AI 开始安装一些插销和更好的锁具。它遵循指令使密码变得更长,并在多次尝试失败后锁定账户。但关键在于:即使手里拿着规则书,AI 仍然会遗漏安全计划中的一些关键部分。它造了一扇坚固的前门,却把后门大开。这种“单次尝试”(问一次并得到答案)的方法不足以构建一个真正安全的系统。
真正的魔法发生在 “再做一遍” 的方法中。当研究人员强迫 AI 审视自己的工作,承认自己遗漏了什么,然后进行修复时,安全性显著提升了。通过让 AI 进行“自我审计”和迭代,研究人员发现代码变得更加稳健。AI 终于记起要挂上“禁止入内”的告示牌(安全响应头),并锁好后门(CSRF 防护)。
核心启示
论文的结论是,我们不能仅仅依赖 AI 默认就能构建安全软件。如果你要求 AI “做一个登录页面”,它很可能会给你一个能用但漏洞百出的东西。即使给它一本规则书也是不够的。
目前,想要从这些 AI 助手那里获得真正安全的系统,唯一的办法是将它们视为需要不断监督的初级学徒。你必须询问:“这安全吗?”接着说“对照规则检查你的工作”,最后说“修复你遗漏的部分”。研究人员称之为 迭代重提示(Iterative Reprompting)。这就像是把一把锤子交给一个孩子并希望他盖一座安全的房子,与站在他身边,检查他的工作,并告诉他直到房子真正安全为止都要拧紧螺丝之间的区别。
简而言之,AI 是一个强大的工具,但它不是一个“设置好就不用管”的保安。在我们改变使用方式之前,我们必须成为那个手持手电筒并检查锁具的人。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。