新发布SkillSec:把 Skills 安全从恶意检测,升维到能力审计SkillSec了解更多 →
安全研究

AI 生成代码的安全风险:数据、机理与治理

安势研究院·2026.07.02·3 分钟阅读

AI 已经在写你公司相当比例的代码——这不是预测,是现状。真正的问题是:这些代码的安全水位如何?实证研究给出的答案并不乐观。

数据怎么说

  • 早在 2021 年,纽约大学团队的《Asleep at the Keyboard》就发现:在高风险场景下,GitHub Copilot 生成的程序约 40% 存在可利用漏洞。
  • 2025 年 Veracode 对 100 余个模型、80 个编码任务的横向测试显示:约 45% 的任务中 AI 引入了 OWASP Top 10 级别的安全缺陷,且这一比例并未随模型迭代明显下降——模型写的代码能跑得更好,却没有更安全。
  • 斯坦福的对照实验则揭示了更危险的一层:使用 AI 助手的开发者写出的代码更不安全,但他们对自己代码安全性的信心反而更高

安全缺陷率没有质变,代码产量却在数量级增长。固定的漏洞率乘以暴涨的分母,等于漏洞绝对数量的洪水。

四个风险机理

训练语料带病。模型从海量公开代码中学习,也把其中的老旧写法、弃用 API 和典型漏洞模式一并学了进去。

上下文缺失。模型看不到你的威胁模型:这段输入来自不可信用户吗?这个接口暴露在公网吗?缺少这些语境,它会默认“乐观场景”。

提示不含安全约束。开发者的指令几乎总是“实现这个功能”,而不是“安全地实现这个功能”。研究反复证明,不明确要求,模型就不会主动加固。

幻觉依赖(slopsquatting)。模型会以可观比例虚构不存在的包名,攻击者批量抢注这些名字即可守株待兔——AI 时代特有的仿冒包攻击,我们在供应链投毒的演化一文中有更多案例。

治理:把检测放到“生产时刻”

如果代码在秒级产生,安全就不能停留在“上线前扫一遍”。四个可落地的动作:

  • 实时检测:在代码写下的同刻完成分析——无论作者是人还是 AI。这要求引擎理解业务语义与数据流,而不是逐条匹配规则,否则误报会在 AI 的产量下把团队淹没。安势 CleanCode Security Agent 将误报率控制在 15% 以下、增量扫描小于 60 秒,正是为这个节奏设计的。
  • 修复闭环:检测、研判、修复收敛进同一个回合,让 AI 引入的问题由 AI 当场修掉,而不是进入积压队列。
  • 依赖准入:对 AI 建议引入的每一个依赖做存在性与信誉校验,掐断幻觉包与仿冒包。
  • CI 卡点兜底:流水线上保留最终关卡,让绕过实时检测的代码在合入前被拦下。

给工程组织的三个度量

没有度量的治理只是姿态。建议把三个指标纳入研发效能看板:

  • AI 代码占比与漏洞密度分开统计:知道 AI 写了多少,还要知道 AI 写的那部分每千行引入多少缺陷,两条曲线分开看才能定位问题。
  • 检测时延:从代码写下到问题被发现的时间。目标是从“天”压缩到“秒”,这直接决定修复成本——上下文还在开发者脑子里时修复,与两周后从积压队列里捞出来修复,成本差一个数量级。
  • 修复闭环率:检出的问题有多少在同一开发回合内被修掉。这是衡量“检测工具”与“安全能力”差距的唯一指标。

相应地,安全团队的角色也在变:从逐行审查代码的“守门人”,转为规则与上下文的供给者——把企业的威胁模型、安全编码规范、可用组件白名单编码进 AI 的工作上下文与流水线卡点,让每一次生成都在约束内进行。管一个水龙头的时代结束了,现在要管的是水厂。

AI 不会放慢速度等安全。团队能选择的,只是让安全跑进生产时刻,还是留在事后追赶。

AI 生成代码Vibe Coding代码安全SASTCleanCode

相关阅读

技术解读

SBOM 不止是合规清单:从“我用了什么”到“我能承受什么”

很多团队把 SBOM 当成一份交差用的清单。但真正有价值的 SBOM,是能驱动决策的:哪些漏洞可被利用、哪条依赖该先修、哪个许可证会带来风险。