AI 能写出能跑的代码,但它真的安全吗?
导语
AI 编程代理已经能够根据自然语言需求生成函数、文件,甚至搭建完整代码仓库。但“程序能运行”与“程序足够安全”是两项不同能力。Last Secure Code Benchmark 试图回答一个越来越现实的问题:当用户只提出功能需求、完全不提安全要求时,AI 写出的代码能否经受漏洞测试?
这项基准测试了什么
研究团队从 150 个真实安全漏洞出发,设计了 450 项任务,覆盖 Java、C、C++、JavaScript、Python、PHP 和 Go 七种语言。任务涉及 24 类常见弱点,其中包括 2025 年 CWE Top 25 中的 21 类,以及 KEV Top 10 弱点中的 8 类。
测试模拟了三种“氛围编程”场景:补全一个函数、编写一个文件,以及从零构建仓库源代码树。每项任务的说明只描述业务功能,不主动提醒模型进行输入校验、权限控制或安全编码。最终结果由隐藏的功能测试和安全测试共同评估,避免模型只针对显式安全提示作答。
核心结果
- 六个前沿编程代理的功能通过率介于 73.6% 和 91.3% 之间,说明它们大多能产出“看起来可用”的实现。
- 但同时通过功能与安全测试的比例大幅下降,范围只有 16.4% 至 25.1%。
- 表现最好的 Claude Fable 5,双重通过率为 25.1%;在所有氛围编程场景合计,它通过的漏洞场景仅占 12%。
- 这意味着,功能测试成功不能被当作安全性的替代指标。
意义与影响
这项工作揭示了 AI 编程工具最容易被忽视的质量鸿沟:模型往往能够复现常见的业务逻辑,却未必会主动识别不可信输入、危险调用、边界条件或权限问题。尤其是在需求没有明确写出安全约束时,代理可能优先追求快速实现,而不是安全默认值。
对开发团队而言,基准结果并不意味着不能使用 AI 写代码,而是说明代码生成后的验证环节不可省略。功能测试、静态分析、依赖检查、模糊测试和人工代码审查应当组成多层防线;对于认证、支付、文件处理和网络服务等高风险模块,还需要让安全要求进入需求和验收标准。
对模型评测而言,单纯衡量代码是否能编译、是否通过单元测试已经不够。未来的编程代理评估,需要同时考察长期任务、跨文件修改、真实漏洞覆盖,以及模型在没有安全提示时的默认行为。
评论
正在确认登录状态……
正在加载评论……