AI 生成代码安全风险 2026:7 大常见漏洞与自查指南

Veracode 对 400 万次代码扫描的分析显示,AI 生成代码 45% 的概率含有安全缺陷。云安全联盟(CSA)的研究把这个数字提到 62%。Georgia Tech 的 Vibe Security Radar 扫了 5600 个 vibe coded 应用,超过 2000 个标记出确认的安全问题。如果你用 Cursor、Lovable、Claude Code 等任何 AI 编程工具搭过应用,你的代码库里有可利用漏洞不是「会不会」而是「多少个」的问题。
为什么 AI 生成代码更容易出漏洞
AI 代码生成器为一件事优化:让你的功能能跑。它创建表、写查询、渲染数据,应用能运转。但它很少考虑谁还能访问数据、API key 是不是暴露在前端 bundle 里、收到意外输入会怎样。
经验丰富的人类开发者会因为过去事故留下「伤疤记忆」,AI 不会。它产出训练数据里被认为「正常」的代码,而训练数据里充满不安全的模式。
Damian Galarza 在 15 个 AI 应用中找到 69 个漏洞,平均每个应用近 5 个,这些应用的创始人都觉得已经可以上线了。
7 大最常见漏洞
1. 行级安全(RLS)被禁用 :CWE-862
最常见的发现。Beesoul 报告约 70% 的 Lovable 应用 Supabase 表关掉了 RLS。关掉 RLS 后,任何登录用户都能通过简单 API 调用读、改、删其他用户的数据。前端看着没事,后端门户大开。
2. 硬编码密钥 :CWE-798
AI 模型经常把 API key、数据库连接串、服务令牌直接写在源文件里。这些进入 Git 历史、客户端 JS bundle,或者两者都有。即使你后来移到环境变量,Git 历史里的 key 还在,要用 git filter-branch 或 BFG Repo-Cleaner 清理。
3. Webhook 没验签 :CWE-345
支付(Stripe、微信、支付宝)、第三方通知、外部回调,这些 webhook 端点需要签名校验。AI 生成代码几乎不包含这一步。没有验签,任何人能给你的端点发假回调,触发「订单标记为已支付」之类的动作。
4. 没有软删除 :CWE-404
用户删账号或数据时,AI 生成代码典型做硬 DELETE。数据永久消失,GDPR 合规(要审计记录)、计费争议(无凭据)、误删恢复都成问题。
5. N+1 查询
严格说是性能漏洞,但会造成拒绝服务。AI 生成代码经常在循环里取关联数据而不是 join 或批量。真实流量下数据库会卡死,整个应用挂掉。
6. 暴露内部错误信息 :CWE-200
出错时 AI 生成代码常把原始错误信息返回给用户。这些信息会暴露数据库 schema、表名、列类型、内部逻辑,对攻击者就是路线图。
7. 缺输入清理 :CWE-79 / CWE-89
AI 模型生成的代码默认信任用户输入。表单、URL 参数、API 请求体直接进数据库查询或 HTML 渲染,没清理。SQL 注入和 XSS 两大类高频攻击门户打开。
真实数据
| 来源 | 发现 | 规模 |
|---|---|---|
| Veracode 分析 | 45% AI 代码含安全缺陷 | 400 万次扫描 |
| 云安全联盟(CSA) | 62% AI 代码有漏洞 | 研究项目 |
| Georgia Tech Vibe Security Radar | 2000+ 应用确认漏洞 | 扫描 5600 个 |
| Beesoul 审计 | 每个应用 8-14 个发现,70% Lovable 应用 RLS 禁用 | 持续客户 |
| Damian Galarza 评估 | 15 个应用 69 个漏洞 | 15 个应用 |
| r/VibeCodeDevs 扫描 | 平均安全分 52/100 | 200+ 站点 |
| GrowExx 48 小时审计 | 自动化检查全过仍有隐藏风险 | 1 个生产 SaaS |
GrowExx 的案例特别有教育意义:他们对一个完全用 Claude Code 搭的生产 SaaS 做 48 小时深度审计,应用通过了所有自动 Linter 和测试套件,人工审计仍然发现自动化工具没标记的风险。Linter 检查语法和风格,不验证业务逻辑是否安全。
AI 不能可靠审计自己
让 AI 审自己代码听起来很省事,能抓部分问题,但盲点已经被记录得很清楚。NetSPI 做过实验:vibe code 一个应用、让 AI 审、实施 AI 建议的修复、再做人工渗透测试,渗透测试仍然发现 AI 完全漏掉的漏洞。
核心问题是 AI 模型缺少你的基础设施、威胁模型、业务规则的具体上下文。它能查常见模式(RLS 是否开、有没有像 API key 的字符串),不能推理你的多租户数据模型在并发负载下是否真正隔离客户数据,也不能判断你的 webhook 流是否能通过竞态条件被利用。
AI 辅助审计是有用的第一遍筛查,不是替代品。
自查流程
国内开发者花 1-2 小时能抓到多数严重问题。
第一步:跑免费扫描器
GitHub 上的 vibe-codebase-audit 免费开源,扫密钥、数据暴露、常见漏洞。克隆下来指向项目,看输出。
第二步:手查关键五项
1. RLS 状态:Supabase 控制台查每张表,没开就立刻开 + 加策略
2. 代码里的密钥:全代码库搜 API key、token、连接串;查 .env 是否在 .gitignore
3. Webhook 端点:找所有接外部回调的端点,确认每个都验签
4. 错误响应:触发错误看返回什么,有数据库细节就改成通用消息
5. 输入处理:表单和 API 用意外输入测试,HTML 标签塞文本字段、SQL 语法塞搜索框
第三步:AI 做第二遍
手查后用 Cursor 或 Claude 审具体文件。给聚焦提示词:「审这个文件的鉴权绕过漏洞」「检查这个 API 路由的输入校验缺口」。每个发现当建议,要你验证,不是定论。
什么时候请专业人士
| 情况 | 推荐 |
|---|---|
| 原型,无用户数据无支付 | DIY |
| 处理用户数据无支付 | DIY + 考虑专业评审 |
| 接受支付或金融交易 | 强烈建议专业审计 |
| 个人健康信息 | 必须专业审计 |
| 多租户数据隔离 | 必须专业审计 |
| 受 GDPR、等保、行业合规约束 | 必须专业审计 |
国内安全审计参考价:等保测评 ¥30000+;独立安全顾问轻量评审 ¥3000-8000;完整渗透 ¥10000-30000。境外专做 vibe coded 应用的团队(Beesoul、VibeAudits)小型 MVP 约 ¥10800 起。
一次小企业数据泄露,加上通知成本、客户流失、监管罚款,损失通常到几十万人民币。¥10000 的审计是便宜的保险。
V2EX「网络信息安全」节点和知乎「信息安全」话题下有不少国内安全人士活跃,找审计资源可以从这两个地方起步。
相关阅读
- AI MVP 到生产部署:完整的上线加固流程
- Vibe Coding 进阶技巧:用 rules 文件预防安全问题