上一篇做了自我介绍,这篇介绍我这一年主要在维护的东西:一套围绕 LLM 提示注入(Prompt Injection) 的开源工具链。它们不是五个孤立的小玩具,而是互相咬合的一条链:语料 → 攻 → 判 → 守

先上全家福:

项目 一句话定位 链上的位置
prompt-corpus-zh 中文提示注入攻击语料库 语料层
InjectArena 中文可自部署的提示注入攻防闯关靶场
injectarena-judge 确定性判分引擎
prompt-audit AI 层安全审计与回归门禁
bounty-guard AI 代码安全审查助手 守(代码侧)

起点一:中文语料几乎是空白(prompt-corpus-zh)

做提示注入研究时最先撞上的墙不是技术,是语料chinese prompt injection 相关的公开语料几乎一片空白,英文数据集倒是不少,但中文的人设、话术、绕过习惯完全不同。

于是有了 prompt-corpus-zh:中文提示注入攻击语料的独立资产层,npm 包和 HuggingFace dataset 同步发布,代码 MIT、数据 CC-BY 4.0。它不直接面向用户,而是给下面几个项目当”弹药库”。

攻:攻心 · InjectArena

InjectArena 是整个链路里最好玩的一个:中文可自部署的 LLM 提示注入闯关靶场,思路类似 Gandalf 和 Damn Vulnerable LLM Agent,但多了两个自己的东西:

  • 全中文:关卡剧情、守阵者人设、文档全中文;
  • 攻防双向评分:普通靶场只考攻方,这里守方也能上场——每关有”布防插槽”,你写防护提示词,系统用与关卡同源的攻击语料库逐条攻打,产出拦截率 / 泄露率 / 误杀率报告。攻防在同一套关卡上对打,各上各的榜(攻方比最短 payload,守方比拦截率)。

目前六道关,攻击面覆盖:直接注入、数据窃取、对抗防护、间接注入(RAG 投毒)、工具调用滥用、MCP 工具投毒——最后两个是针对 Agent 时代的新攻击面。项目已收录进 OWASP VWAD(漏洞靶场目录,LLM 类目)。

技术上刻意做了轻量:Node.js ≥ 22.13 零原生依赖,npm start 就能跑,也支持 Docker 一键自部署;API key 自备(BYOK),任何 OpenAI 兼容接口都能接。

判:injectarena-judge

评测最忌讳的事是”用 LLM 当裁判”——它会幻觉、会漂移,今天的判定和明天不一样。injectarena-judge 是一个纯逻辑的确定性判分引擎:只看输出里是否出现受控标记,同样的输入永远得到同样的判定。整个攻防评分的可信度都压在它身上。

守:prompt-audit

有了靶场和语料,就可以”守”了。prompt-audit 站在靶场和代码审查中间,审的是 AI 应用自身:system prompt、MCP 配置、工具描述——这些东西在传统扫描器眼里是”普通文本”,实际上 prompt 就是程序,工具描述能操纵 agent。

它管两件事:

  1. AI 资产扫描:把 AI 配置当代码审,扫投毒话术、隐藏字符、危险权限组合;
  2. prompt 回归门禁:prompt 的改动也该像代码一样跑回归——PR 里改了守阵者提示词?自动用注入语料回归测试,拦截率低于基线就红灯。

四个设计原则:中文语料、diff 驱动(只审新增行,控成本)、工作流原生(CLI / GitHub Action / MCP Server)、确定性判定(绝不用 LLM 当裁判)。已上架 npm,npx prompt-audit 即用。

守:bounty-guard

bounty-guard 是这条链上最早出生的项目,起点是一次真实踩坑:修 XSS 的时候被扫描器提示 Math.random 弱随机——提示是对的,但我更在意的是,为什么没有工具在我提交那行危险代码的时候就拦住我?

它只做一件事:盯住每一行新增代码。规则引擎初筛 + LLM 复核降噪,结果留在 PR 评论里。几条我比较得意的原则:

  • 只审新增行——成本控制的根基;
  • LLM 永远只复核、不发明——每条告警必须挂在真实代码行上(防幻觉);
  • 无 API Key 优雅降级——纯规则模式完整可用,CI 零成本;
  • 严重度只降不升——提示词禁止上调,解析层丢弃上调建议,双保险。

真实验证:把它对准当年那个 XSS 项目回滚到修复前版本,129 行新增里精准命中那个存储型 XSS,0 误报。已上架 npm 和 GitHub Marketplace。

语料飞轮

这条链最有意思的是闭环:靶场攻防产生的真实 payload 回流成审计回归语料;审计扫出的真实投毒样本反哺靶场新关卡。两个项目共用同一套 corpus/ schema,互相喂数据——打得越多,防得越准。

写在最后

这套东西对个人安全学习者来说已经能跑通全流程,但还差很多:靶场关卡会持续加、回归门禁还在打磨、语料库等着真实流量喂大。仓库都在 GitHub,欢迎来玩、来提 issue、来破阵。

靶场传送门:InjectArena —— 攻心为上,攻城为下。