用途
AI-Generated Code Security Auditor 是一个应用安全审查技能,面向由 AI 助手(如 Copilot、Cursor、Claude Code、v0、Lovable、bolt 等)脚手架生成或“vibe coding”出来的应用。它针对编码助手默认引入的、可预测的失败模式进行审查:把 API 密钥内联进代码、Supabase 项目行级安全(RLS)未真正生效、把用户输入直接拼进系统提示等。目标是在攻击者之前发现这些问题,证明其真实可利用,并给出可一次提交完成的修复。
主要能力
密钥泄露检测
- 标记任何到达客户端代码路径的硬编码凭据:API 密钥、令牌、数据库 URL、内联私钥。
- 识别更隐蔽的泄露:位于客户端暴露前缀(NEXT_PUBLIC_、VITE_、PUBLIC_、EXPO_PUBLIC_)后的密钥、被编译进发布 JS 包的密钥、被前端可达代码导入的 Supabase service_role 密钥。
- 区分真正危险(客户端代码中的有效密钥)与无害(设计上就公开的 publishable/anon 密钥),以保持精度。
- 每个泄露密钥发现都会给出在提供方处的具体轮换步骤,因为从代码中删除值并不能解除泄露。
数据库授权验证
- 把“RLS 已启用”当作待验证的声明:RLS 开启但无策略会拒绝一切,USING (true) 则允许所有人,两者都是常见的 AI 默认。
- 排查 Supabase 与 Postgres 授权漏洞:公开表缺少 RLS、USING (true) 全开放策略、存储桶全局可读、策略检查用户可控的角色字符串而非已认证用户身份。
- 标记基于 user_metadata 的授权:已登录用户可通过 auth API 修改自己的 user_metadata 并给自己授予任意角色,特权逻辑必须基于仅服务端可写的 app_metadata。
提示注入检测
- 追踪请求形态输入(req.body、查询参数、.json()、表单数据)从源头到 LLM 汇聚点,当它落入更高风险位置时告警:系统提示、无角色边界的单条指令加输入字符串,或同时授予模型工具与函数调用能力的调用。
- 对文档化的安全模式保持静默:不可信内容位于独立的 user 角色消息中且无工具。
- 每个提示注入发现都如实说明:检测为启发式、置信度为中、需开发者手动验证。
闭环与诚实报告
- 扫描、修复、重扫:按最严重优先以平实语言呈现发现,由开发者批准修改内容,再重扫确认哪些已解决、哪些仍存在、是否引入新问题。
- 不夸大覆盖范围或合规性:报告代码可见的分母与免责声明,不给出“你已合规”或“% 安全”这类会被误读为保证的数字。
使用方式
- 本地静态扫描:对仓库以静态代码方式运行,无网络出口、无账号、无遥测。按文件类型路由:客户端可达代码与发布包查密钥,SQL 与迁移查 RLS,LLM SDK 调用点查注入。
- 分类与解释:按最严重优先排序,先用平实英语描述风险再给术语;每个发现给出源头、汇聚点、具体利用方式与一次提交修复;启发式发现标注为中置信度。
- 与开发者的编码助手协作修复:逐条或按严重度提出修复,不提供在开发者背后编辑的全有或全无按钮;技能只呈现变更,由开发者的编码助手应用,技能自身不写文件。
- 重扫并如实告知:按指纹与上次扫描比对,区分已解决、仍存在、新引入;对发现的密钥确认轮换步骤已完成。
适用场景
- 使用 Next.js、Supabase、边缘函数、LLM SDK 等现代无服务器与 LLM 应用栈的项目。
- 由 AI 助手脚手架生成、需要上线前安全审查的应用。
- 需要把发现映射到 CWE 与 OWASP LLM Top 10 以纳入现有风险登记与合规证据的团队。
限制
- 提示注入与污点分析为启发式,故意保守,模糊流程会保持静默而非猜测;置信度为中,需人工验证。
- 默认只读,不编辑或删除文件。
- 不报告合规百分比或安全保证,只报告代码可见的覆盖范围与免责声明。
- 输出中不打印原始密钥值,只报告类型、位置与脱敏预览。
- 具体支持的平台、收费、价格等信息暂未提供。