← 最新论文
💻 computer science

Evaluating and Preventing Security Smells in AI-Generated Ansible Code

本文揭示了 AI 生成的 Ansible 代码本质上包含安全漏洞,但证明了通过扩展的 CO-STAR 框架将安全基准集成到提示词中可以显著提高合规性和代码质量,使顶尖模型在无需重新训练的情况下达到近乎完美的安全性标准。

原作者: Pandu Ranga Reddy Konala, Vimal Kumar, David Bainbridge, Junaid Haseeb

发布于 2026-08-27
📖 1 分钟阅读☕ 轻松阅读

原作者: Pandu Ranga Reddy Konala, Vimal Kumar, David Bainbridge, Junaid Haseeb

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

在现代数字世界中,几乎所有在线服务的支柱都是一层庞大且隐形的计算机与软件层,即基础设施。几十年来,搭建这种基础设施需要工程师团队手动配置服务器、数据库和安全设置,这是一个缓慢且易出错的过程。为了解决这个问题,业界采用了一种称为“基础设施即代码”(Infrastructure as Code)的方法,将整个设置过程编写成文本文件,就像一份详细的食谱或蓝图一样。这些文本文件告诉计算机如何构建并保护系统,从而实现快速、一致且自动化的部署。然而,正如一份缺少食材的食谱会毁掉一顿美餐一样,这些代码文件中的一个微小错误就可能让系统处于被黑客攻击的危险之中。如果代码包含隐藏的弱点,例如未加密的密码或权限过大的访问规则,那么一旦系统启动,这些缺陷会立即转移到运行中的系统中。

最近,一种新工具进入了这一领域:人工智能编程助手。这些程序可以阅读用自然语言编写的简单请求,并自动编写构建这些系统所需的复杂代码。虽然这有望加速开发进程,但也提出了一个此前从未被回答的关键问题:这些机器编写的代码是否真的能保障系统的安全?新西兰怀卡托大学的研究人员致力于寻找答案。他们不仅是在寻找漏洞,更是在调查这些 AI 工具生成的代码是否符合政府和行业为保护数据而制定的严格现实世界安全标准。他们的研究揭示了这些 AI 工具的能力与其在无人监管时实际表现之间的惊人差距,并为在单行代码部署之前解决该问题提供了清晰的路径。

研究团队首先测试了 16 种不同人工智能模型的默认行为。他们要求每个模型编写一组特定的指令,即被称为 Ansible role 的指令集,用于设置两种常见的软件:名为 Apache Tomcat 的 Web 服务器和名为 MongoDB 的数据库系统。他们没有向这些模型提供任何特殊的安全建议、关于应避免什么的警告,也没有提供优秀的示例代码。他们只是简单地要求机器完成这项工作。结果立竿见影且令人担忧。这 16 个模型生成的代码全部包含安全缺陷。这些缺陷包括任何人都能读取的硬编码密码、缺失的敏感文件保护措施,以及可能导致系统崩溃或行为异常的错误处理缺失。当研究人员将这些 AI 生成的代码与来自公共仓库的人类开发者编写的代码进行比较时,发现 AI 代码的表现更差。它不仅仅是略有瑕疵,而是从根本上不安全,未能达到行业标准的各项基本安全要求。

研究人员随后调查了发生这种情况的原因。他们发现,问题并不在于 AI 模型缺乏编写代码的能力,而在于它们缺乏遵循复杂安全指令的能力。在研究的第二阶段,团队改变了方法。他们不再仅仅要求生成代码,而是提供了一套高度结构化的规则。他们使用了一个扩展版的提示词框架,明确列出了安全最佳实践和特定的政府安全标准。他们明确告知模型应该设置哪些权限、如何安全地管理密码以及包含哪些文档,并将这些要求视为强制性约束而非建议。这种从简单请求到详细、基于规则的指令的转变,极大地改变了结果。

当研究人员应用这种结构化方法时,结果得到了显著改善。16 个模型中有 4 个能够遵循复杂的指令,并生成了没有任何第一轮实验中所见安全缺陷的代码。表现最好的模型生成的代码达到了 95% 到 100% 的严格安全基准,这与基准线相比是一个巨大的飞跃。事实上,这个顶尖的 AI 模型表现优于平均水平的人类编写的代码,后者的达标率仅在 23% 到 43% 之间。研究表明,对于这些具备能力的模型而言,问题不在于知识匮乏,而在于当指令模糊时无法应用其知识。当规则明确且约束具体时,AI 可以在单次尝试中合成安全、高质量的代码,从而消除了在代码编写完成后进行耗时修复的需求。

研究还强调了模型之间的关键区别。表现成功的 4 个模型均为闭源系统(即其内部运作机制是不公开的),而许多开源模型则未能遵循复杂的指令。这表明,生成安全代码的能力在很大程度上取决于模型的训练方式及其在训练过程中开发出的特定能力,而不仅仅取决于其内存大小或参数数量。研究人员发现,成功的模型能够解析多层指令,理解强制性规则与建议性实践之间的区别,并在代码中一致地应用这些规则。那些失败的模型,即使在其他编程测试中得分很高,也无法维持构建安全系统所需的多种约束条件。

这项工作挑战了目前行业处理安全性的方式。传统上,安全专家会在代码编写完成后进行扫描以查找并修复错误,这一过程被称为“检测”。研究人员认为,对于 AI 生成的代码,这种方法是不够的,因为缺陷在代码创建的那一刻就已经引入了。相反,他们提出了一种“预防”方法,即将安全要求直接内置到生成过程中。通过将安全规则直接嵌入到给 AI 的指令中,组织可以确保代码从一开始就是安全的。这种方法不需要重新训练 AI 模型或改变其底层架构;它只需要改变人类与它们交流的方式。研究结论指出,尽管 AI 编程助手具有巨大的潜力,但如果没有清晰、明确的指导,它们无法被信任去生成安全的基础设施。然而,通过正确的提示词,它们可以生成不仅功能完备,而且比当今许多人类开发者所产出的代码更加安全的代码。

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

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

试用 Digest →