Stochastic Code, Deterministic Defense: Assessing the Security Blind Spots in GenAI-Driven CI/CD Pipelines
本研究通过实证表明,传统的确定性安全工具无法检测出生成式人工智能在 CI/CD 流水线中引入的、具有上下文相关性且语法有效的漏洞,从而凸显了对概率性、意图感知验证框架的迫切需求。
原始论文采用 CC BY 4.0 许可(https://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一个这样的世界:软件不再仅仅是由人类在键盘上敲击出来的,而是由一个超级聪明的机器人通过“梦幻”生成的——它根据以往所见的内容,去猜测下一个词、下一行代码以及下一个函数。这就是生成式人工智能(Generative AI,简称 GenAI)的领域,这项技术正在迅速改变我们构建数字工具的方式。在现代技术世界中,这些工具通常在一个被称为 CI/CD 流水线的高速工厂中进行组装。你可以把这条流水线想象成一条传送带,代码在这里被编写、测试、打包,并在几秒钟内被发送到互联网上。
多年来,守卫这条传送线的保安一直是确定性扫描器(deterministic scanners)。它们就像是拿着剪贴板、严格执行“禁令清单”的保安。如果它们看到特定的危险模式——比如某种已知的开锁工具或禁忌咒语——它们就会拦截代码。它们非常擅长捕捉那些显而易见的坏家伙。但转折点在于:GenAI 不仅仅是在复制粘贴旧的错误招式;它每次都会创造出新的变体,就像爵士乐手在即兴演奏一段旋律。科学家和工程师面临的重大问题是:我们的旧式严厉保安,能否抓住一位演奏着听起来完美无瑕、实则暗藏杀机的爵士乐手? 本文深入探讨了这一谜团,探讨我们现有的安全工具是否对 AI 所犯下的那些独特且不可预测的错误视而不见。
“无声衰减”的故事
在这项研究中,研究人员 Mohammed Bedjaoui、Sidi Mohammed Benslimane 和 Mohammed Yassine Kazi Tani 设计了一个数字实验,旨在观察当你让一个本地 AI 机器人为现实世界的应用编写代码,并尝试用标准安全工具对其进行检查时会发生什么。他们不仅仅是在猜测;他们进行了 50 次受控模拟,就像在实验室里进行疯狂科学实验一样,以观察 AI 是否能让一个“坏主意”溜过安全守卫。
设置:机器人作家与严厉的守卫
团队构建了一个现代软件工厂的微缩版本。他们使用了一个本地 AI 模型(一个名为“Code Llama”的机器人)来编写两类代码:
- 逻辑缺陷 (V1): AI 被要求为网站编写一个安全检查。它编写的代码看起来完美无缺且符合所有语法规则,但它忽略了一个关键步骤:它实际上并没有检查用户是否真的是其声称的身份。这就像是一个夜店保安,他检查了你的身份证,却忘了核对照片是否与你的脸部相符。
- 基础设施漂移 (V3): AI 被要求为服务器编写指令(一个 Kubernetes 清单)。它编写的指令在语法上是正确的,但设置了一个过于简单的“健康检查”。这就像一名医生,他只检查病人是否还在呼吸,却忽略了心脏是否还在跳动。即使软件内部已经完全损坏,服务器仍会保持“存活”状态。
测试:旧工具能发现新的错误吗?
一旦 AI 写好代码,它就会通过一个标准的安全流水线,经过三个著名的“保安”:Semgrep、Trivy 和 Kube-linter。这些工具是行业标准,旨在通过寻找特定模式来捕捉已知错误。
结果令人震惊。在 50 次实验运行中:
- 在逻辑缺陷场景下,AI 成功生成了通过构建过程的代码 46 次;在基础设施漂移场景下,生成了 48 次。这些代码在功能上是“有效”的,足以被发布。
- 当安全工具扫描这些代码时,它们百分之百未能检测到漏洞(或者在一次特定计数中为 96%,其中 48 次中仅有 2 次误报)。
- 统计分析表明,这并非仅仅是运气不好;这些工具错过错误的概率小于 0.001 (p < .001)。
重大揭示:“盲点”
论文得出结论,我们的安全系统中存在一个巨大的“盲点”。AI 编写的并不是“邪恶”的代码;它编写的是侧重于功能性而非安全性的代码。因为代码遵循了所有的语法规则,所以那些确定性扫描器(拿着剪贴板的保安)会说:“一切正常!”并放行。
研究人员将此称为**“无声衰减”**(Silent Decay)。在这种场景下,软件工厂持续平稳运行,指示灯始终为绿色,安全警报从未响起,但最终产品从根本上说是破碎且不安全的。该研究明确排除了这样一种观点,即这些工具失败是因为代码太乱或产生了“幻觉”式的胡言乱语;代码很整洁、有效,只是偏离了安全的核心要点。
这意味着什么
作者认为,我们不能再依赖旧的代码检查方式了。如果代码是由概率型 AI(一种通过猜测和变化输出的 AI)生成的,那么确定性扫描器(一种寻找固定模式的工具)将始终会错过那些微妙的、依赖于上下文的错误。论文建议我们需要一种新型的防御手段——一种能够理解代码“意图”而非仅仅是代码“形状”的防御。他们提议使用其他的 AI 代理来审计代码,或者使用结合了人类理解力与数学逻辑的“神经符号”(neuro-symbolic)方法。
简而言之,这项研究证明了在 AI 时代,来自安全扫描器的“绿灯”并不意味着代码是安全的。它仅仅意味着代码在纸面上看起来很好。真正的危险隐藏在行与行之间的缝隙中,在那里,AI 的创造力超越了我们检查它的能力。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。