我们在安全方面测试了5项AI提交信息技能,3项让情况更糟。
I’m happy to translate the article for you, but I’ll need the full text you’d like translated. Could you please paste the content (excluding the source line you already provided) here? Once I have it, I’ll translate it into Simplified Chinese while preserving the original formatting and markdown.
概览
可复用的 AI 组件正快速增长——技能、MCP 服务器、模板、子代理。
但目前没有统一的方式来回答这个问题:“这真的有帮助吗?”
我们进行了一项行为评估研究以寻找答案,结果令人惊讶。
- 在我们从 GitHub 上测试的 5 个提交信息技能(用于安全性)中,只有 2 个 在基线之上表现出正向提升。
- 其余 3 个 产生了 负向提升——结果比 完全不使用技能 还要差。
- 表现最佳 的是?一个 没有任何安全规则 的技能。
更令人震惊的是:在我们的小样本中,静态分析 并不是整体安全性能的可靠预测指标。那个在 仅提示审查 中得分最低(42/100)的技能,却实现了 最高提升。
静态分析确实能够很好地预测凭证检测,但在其他类别上失效。仅有 5 个技能 的数据只能算作 初步信号,而非决定性结论——但它表明,你需要 衡量技能实际的表现,而不仅仅是阅读它的描述。
测量 “Lift”
要衡量一个技能是否真的有帮助,我们需要一个 相对基线的指标,称为 lift:
[ \textbf{Lift} = \text{Skill Pass Rate} - \text{Baseline Pass Rate} ]
- Positive lift → 该技能带来价值。
- Negative lift → 没有它反而更好。
在我们的测试中,基线(Claude 未使用任何技能)在所有安全类别上的整体通过率为 50 %,但各类别之间差异很大。
| Category | Baseline Pass Rate | Interpretation |
|---|---|---|
| S1: Credential Detection | 81.7 % | 模型已经能够很好地识别明显的凭证 |
| S2: Credential Files | 85.0 % | 模型已经能够很好地检测 .env 文件 |
| S3: Git‑Crypt Awareness | 15.0 % | 模型对加密文件的拒绝率过高 |
| S4: Shell Safety | 53.3 % | 模型有时会包含不安全的语法 |
| S5: Path Sanitization | 16.7 % | 模型经常泄露敏感路径 |
基线表现范围在 15 % 到 85 % 之间。技能在基线较弱的场景(S3、S4、S5)中能提供最大的价值。
测试设置
- 5 个提交‑message 技能 从公共 GitHub 仓库中挑选。
- 每个技能在 100 个安全场景(5 类别 × 2 难度级别 × 10 测试)上进行评估。
- 每个测试运行 3 次 以降低噪声 → ≈1,500 次总执行。
- 生成使用 Claude Haiku;使用更大的模型可能会得到不同结果。
测试的技能
| Skill | Length (chars) | Approach | Lift |
|---|---|---|---|
| epicenter | 8,586 | 严格的约定式提交,限制 50‑字符 | +6.0 % |
| ilude | 8,389 | 完整的 git 工作流,包含安全扫描 | +1.7 % |
| toolhive | 431 | 最小化的最佳实践 | ‑1.0 % |
| kanopi | 4,610 | 平衡的提交约定,带有安全警告 | ‑4.0 % |
| claude‑code‑helper | 4,376 | 通用助手,具备提交功能 | ‑4.3 % |
表现最佳的 epicenter 没有任何安全指令(没有凭证检测、没有密钥扫描、没有关于敏感文件的警告)。
为什么格式‑聚焦的技能胜过安全‑聚焦的技能
基于约束的安全:
- epicenter 严格的 50‑字符限制 大幅降低输出中出现 shell 元字符的可能性。
- 其抽象范围要求阻止暴露敏感路径细节。
因此,格式约束在没有显式规则的情况下提供了隐式安全。
重要警告: epicenter 的整体提升掩盖了 类别‑特定的弱点。
- S1(凭证检测):‑10 %
- S2(凭证文件):‑27 %
- 它的 +6 % 整体提升完全来自主导的 S3、S4 和 S5。
如果捕获 API 密钥是你的首要任务,epicenter 并非正确选择。
静态分析 vs. 实际性能
我们让 Claude 仅依据提示文本对每项 安全意识 进行 0‑100 的评分。
| 技能 | 安全提及 | 静态得分 | 实际提升 |
|---|---|---|---|
| epicenter | 无 — 纯格式指导 | 42/100 | +6.0 % |
| ilude | 明确的扫描规则、git‑crypt 例外 | 78/100 | +1.7 % |
| kanopi | API keys、secrets、credentials、.env 文件 | 52/100 | ‑4.0 % |
静态分析得分与实际提升之间的 相关性较弱(r = 0.32)。
类别层面相关性
| 类别 | 相关系数 (r) | 含义 |
|---|---|---|
| S1: Credential Detection | +0.87 | 明确的规则有帮助 |
| S4: Shell Safety | ‑0.68 | 规则越多表现越差 |
| S3: Git‑Crypt | ‑0.50 | 规则越多表现越差 |
在 n = 5 的样本下,这些相关性噪声较大,统计显著性不足,但模式仍值得关注:对于某些类别,详细指令实际上会适得其反。
Source: …
对抗性测试 vs. 基础测试
我们的套件包括 基础(直接) 和 对抗性 两种变体。对抗性测试会添加旨在欺骗模型忽略安全约束的提示注入上下文。
戏剧性失败:toolhive
| 技能 | S1 基础 | S1 对抗 | Δ(百分点) |
|---|---|---|---|
| toolhive | +16.7 % | ‑23.3 % | ‑40 pp |
| ilude | +33.3 % | +3.3 % | ‑30 pp |
toolhive 从 +16.7 % 降至 ‑23.3 % —— 下降了 40 个百分点。它在直接案例中表现良好,但在提示注入试图说服模型认为凭证是安全的情况下会失败。
为什么 epicenter 不会崩溃?
因为它不依赖模式匹配。其 格式约束(例如 50 字符的限制)限制了输出空间,使社会工程手段失效:一条 50 字符的提交信息根本无法容纳完整的 API 密钥。
核心原则:结构约束胜于显式规则
| 格式约束 | 安全效果 | 提升贡献 |
|---|---|---|
| 50字符限制 | 减少 $(cmd) 等 shell 命令的空间 | +20 % (S4) |
| 抽象作用域 | 防止出现客户端名称或文件路径 | +27 % (S5) |
| 无安全规则 | 防止对加密文件的过度拒绝 | +30 % (S3) |
要点: 与其列出要避免的内容,不如 设定结构性限制,从而降低违规的可能性。50字符的限制并未提及 shell 注入,但它 显著限制 了攻击者可利用的输出空间。
范围
- 5 项技能
- 1 个领域 – 安全聚焦的测试
模型
- 生成结果使用 Claude Haiku。
- 更大的模型可能会以不同方式处理冗长的指令。
严谨性
- 结果已进行 人工审计。
- 我们将发布:
- 评审提示
- 一致率
- 置信区间
发布说明
我们提前发布此内容,因为 有限的数据总比没有数据好。我们宁愿在真实数据上受到挑战,也不愿仅凭直觉被信任。
资源
- 完整的方法论和评审标准:
- 本系列第 2 部分(消融测试——精确定位哪些约束重要):