<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>Croesus</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://croesus-k.top/</id>
  <link href="https://croesus-k.top/" rel="alternate"/>
  <link href="https://croesus-k.top/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, Croesus</rights>
  <subtitle>博客：LLM 安全、提示词注入、CTF 题解与项目复盘笔记（或许还有别的乱七八糟的成分）</subtitle>
  <title>乌托邦</title>
  <updated>2026-09-10T15:45:00.000Z</updated>
  <entry>
    <author>
      <name>Croesus</name>
    </author>
    <category term="项目" scheme="https://croesus-k.top/categories/%E9%A1%B9%E7%9B%AE/"/>
    <category term="AI安全" scheme="https://croesus-k.top/tags/AI%E5%AE%89%E5%85%A8/"/>
    <category term="提示词注入" scheme="https://croesus-k.top/tags/%E6%8F%90%E7%A4%BA%E8%AF%8D%E6%B3%A8%E5%85%A5/"/>
    <category term="开源项目" scheme="https://croesus-k.top/tags/%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE/"/>
    <content>
      <![CDATA[<p>上一篇做了自我介绍，这篇介绍我这一年主要在维护的东西：一套围绕 <strong>LLM 提示注入（Prompt Injection）</strong> 的开源工具链。它们不是五个孤立的小玩具，而是互相咬合的一条链：<strong>语料 → 攻 → 判 → 守</strong>。</p><p>先上全家福：</p><table><thead><tr><th>项目</th><th>一句话定位</th><th>链上的位置</th></tr></thead><tbody><tr><td><a href="https://github.com/Croesus-K/prompt-corpus-zh">prompt-corpus-zh</a></td><td>中文提示注入攻击语料库</td><td>语料层</td></tr><tr><td><a href="https://github.com/Croesus-K/InjectArena">InjectArena</a></td><td>中文可自部署的提示注入攻防闯关靶场</td><td>攻</td></tr><tr><td><a href="https://github.com/Croesus-K/injectarena-judge">injectarena-judge</a></td><td>确定性判分引擎</td><td>判</td></tr><tr><td><a href="https://github.com/Croesus-K/prompt-audit">prompt-audit</a></td><td>AI 层安全审计与回归门禁</td><td>守</td></tr><tr><td><a href="https://github.com/Croesus-K/bounty-guard">bounty-guard</a></td><td>AI 代码安全审查助手</td><td>守（代码侧）</td></tr></tbody></table><h2 id="起点一：中文语料几乎是空白（prompt-corpus-zh）"><a href="#起点一：中文语料几乎是空白（prompt-corpus-zh）" class="headerlink" title="起点一：中文语料几乎是空白（prompt-corpus-zh）"></a>起点一：中文语料几乎是空白（prompt-corpus-zh）</h2><p>做提示注入研究时最先撞上的墙不是技术，是<strong>语料</strong>：<code>chinese prompt injection</code> 相关的公开语料几乎一片空白，英文数据集倒是不少，但中文的人设、话术、绕过习惯完全不同。</p><p>于是有了 <a href="https://github.com/Croesus-K/prompt-corpus-zh">prompt-corpus-zh</a>：中文提示注入攻击语料的<strong>独立资产层</strong>，npm 包和 HuggingFace dataset 同步发布，代码 MIT、数据 CC-BY 4.0。它不直接面向用户，而是给下面几个项目当”弹药库”。</p><h2 id="攻：攻心-·-InjectArena"><a href="#攻：攻心-·-InjectArena" class="headerlink" title="攻：攻心 · InjectArena"></a>攻：攻心 · InjectArena</h2><p><a href="https://github.com/Croesus-K/InjectArena">InjectArena</a> 是整个链路里最好玩的一个：<strong>中文可自部署的 LLM 提示注入闯关靶场</strong>，思路类似 Gandalf 和 Damn Vulnerable LLM Agent，但多了两个自己的东西：</p><ul><li><strong>全中文</strong>：关卡剧情、守阵者人设、文档全中文；</li><li><strong>攻防双向评分</strong>：普通靶场只考攻方，这里守方也能上场——每关有”布防插槽”，你写防护提示词，系统用与关卡<strong>同源</strong>的攻击语料库逐条攻打，产出拦截率 &#x2F; 泄露率 &#x2F; 误杀率报告。攻防在同一套关卡上对打，各上各的榜（攻方比最短 payload，守方比拦截率）。</li></ul><p>目前六道关，攻击面覆盖：直接注入、数据窃取、对抗防护、间接注入（RAG 投毒）、工具调用滥用、MCP 工具投毒——最后两个是针对 Agent 时代的新攻击面。项目已收录进 <a href="https://vwad.owasp.org/app/injectarena/">OWASP VWAD</a>（漏洞靶场目录，LLM 类目）。</p><p>技术上刻意做了轻量：Node.js ≥ 22.13 零原生依赖，<code>npm start</code> 就能跑，也支持 Docker 一键自部署；API key 自备（BYOK），任何 OpenAI 兼容接口都能接。</p><h2 id="判：injectarena-judge"><a href="#判：injectarena-judge" class="headerlink" title="判：injectarena-judge"></a>判：injectarena-judge</h2><p>评测最忌讳的事是”用 LLM 当裁判”——它会幻觉、会漂移，今天的判定和明天不一样。<a href="https://github.com/Croesus-K/injectarena-judge">injectarena-judge</a> 是一个<strong>纯逻辑的确定性判分引擎</strong>：只看输出里是否出现受控标记，同样的输入永远得到同样的判定。整个攻防评分的可信度都压在它身上。</p><h2 id="守：prompt-audit"><a href="#守：prompt-audit" class="headerlink" title="守：prompt-audit"></a>守：prompt-audit</h2><p>有了靶场和语料，就可以”守”了。<a href="https://github.com/Croesus-K/prompt-audit">prompt-audit</a> 站在靶场和代码审查中间，审的是 <strong>AI 应用自身</strong>：system prompt、MCP 配置、工具描述——这些东西在传统扫描器眼里是”普通文本”，实际上 prompt 就是程序，工具描述能操纵 agent。</p><p>它管两件事：</p><ol><li><strong>AI 资产扫描</strong>：把 AI 配置当代码审，扫投毒话术、隐藏字符、危险权限组合；</li><li><strong>prompt 回归门禁</strong>：prompt 的改动也该像代码一样跑回归——PR 里改了守阵者提示词？自动用注入语料回归测试，拦截率低于基线就红灯。</li></ol><p>四个设计原则：中文语料、diff 驱动（只审新增行，控成本）、工作流原生（CLI &#x2F; GitHub Action &#x2F; MCP Server）、确定性判定（绝不用 LLM 当裁判）。已上架 npm，<code>npx prompt-audit</code> 即用。</p><h2 id="守：bounty-guard"><a href="#守：bounty-guard" class="headerlink" title="守：bounty-guard"></a>守：bounty-guard</h2><p><a href="https://github.com/Croesus-K/bounty-guard">bounty-guard</a> 是这条链上最早出生的项目，起点是一次真实踩坑：修 XSS 的时候被扫描器提示 <code>Math.random</code> 弱随机——提示是对的，但我更在意的是，<strong>为什么没有工具在我提交那行危险代码的时候就拦住我？</strong></p><p>它只做一件事：盯住每一行新增代码。规则引擎初筛 + LLM 复核降噪，结果留在 PR 评论里。几条我比较得意的原则：</p><ul><li><strong>只审新增行</strong>——成本控制的根基；</li><li><strong>LLM 永远只复核、不发明</strong>——每条告警必须挂在真实代码行上（防幻觉）；</li><li><strong>无 API Key 优雅降级</strong>——纯规则模式完整可用，CI 零成本；</li><li><strong>严重度只降不升</strong>——提示词禁止上调，解析层丢弃上调建议，双保险。</li></ul><p>真实验证：把它对准当年那个 XSS 项目回滚到修复前版本，129 行新增里精准命中那个存储型 XSS，0 误报。已上架 npm 和 GitHub Marketplace。</p><h2 id="语料飞轮"><a href="#语料飞轮" class="headerlink" title="语料飞轮"></a>语料飞轮</h2><p>这条链最有意思的是闭环：<strong>靶场攻防产生的真实 payload 回流成审计回归语料；审计扫出的真实投毒样本反哺靶场新关卡</strong>。两个项目共用同一套 <code>corpus/</code> schema，互相喂数据——打得越多，防得越准。</p><h2 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h2><p>这套东西对个人安全学习者来说已经能跑通全流程，但还差很多：靶场关卡会持续加、回归门禁还在打磨、语料库等着真实流量喂大。仓库都在 GitHub，欢迎来玩、来提 issue、来破阵。</p><p>靶场传送门：<a href="https://github.com/Croesus-K/InjectArena">InjectArena</a> —— 攻心为上，攻城为下。</p>]]>
    </content>
    <id>https://croesus-k.top/2026/09/10/%E6%88%91%E7%9A%84%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE-%E4%B8%AD%E6%96%87%E6%8F%90%E7%A4%BA%E6%B3%A8%E5%85%A5%E6%94%BB%E9%98%B2%E5%B7%A5%E5%85%B7%E9%93%BE/</id>
    <link href="https://croesus-k.top/2026/09/10/%E6%88%91%E7%9A%84%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE-%E4%B8%AD%E6%96%87%E6%8F%90%E7%A4%BA%E6%B3%A8%E5%85%A5%E6%94%BB%E9%98%B2%E5%B7%A5%E5%85%B7%E9%93%BE/"/>
    <published>2026-09-10T15:45:00.000Z</published>
    <summary>介绍我维护的五个开源项目：prompt-corpus-zh、InjectArena、injectarena-judge、prompt-audit、bounty-guard，以及它们如何组成一条&quot;语料 → 攻 → 判 → 守&quot;的工具链。</summary>
    <title>我的开源项目：一套中文提示注入攻防工具链</title>
    <updated>2026-09-10T15:45:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>Croesus</name>
    </author>
    <category term="学习笔记" scheme="https://croesus-k.top/categories/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/"/>
    <category term="随笔" scheme="https://croesus-k.top/tags/%E9%9A%8F%E7%AC%94/"/>
    <content>
      <![CDATA[<p>大家好，我是 <strong>Croesus</strong>，欢迎来到「乌托邦」。</p><h2 id="我是谁"><a href="#我是谁" class="headerlink" title="我是谁"></a>我是谁</h2><p>一名安全方向的学习者，目前在折腾的主线是 <strong>LLM 安全</strong>，尤其是<strong>提示词注入（Prompt Injection）</strong>——让 AI 说它不该说的话、交出它不该交出的东西，以及怎么防住这些事。平时也会打打 CTF 练手。</p><p>除了安全，我还有几个”歪门邪道”的小工具项目，后面会慢慢写文章介绍。</p><h2 id="为什么要写博客"><a href="#为什么要写博客" class="headerlink" title="为什么要写博客"></a>为什么要写博客</h2><p>三个很朴素的理由：</p><ol><li><strong>输出倒逼输入</strong>。学过的东西，能讲清楚才算真的懂；写不出来就说明还没吃透。</li><li><strong>给未来的自己看</strong>。踩过的坑当时记得再清楚，三个月后也会忘得一干二净，笔记是最便宜的时间旅行。</li><li><strong>给同路人一点参考</strong>。我踩坑的时候靠别人的文章救命，也该留点东西给下一个踩同样坑的人。</li></ol><h2 id="这个博客会写什么"><a href="#这个博客会写什么" class="headerlink" title="这个博客会写什么"></a>这个博客会写什么</h2><ul><li><strong>学习笔记</strong>：安全、开发，学到哪写到哪；</li><li><strong>项目复盘</strong>：我在 GitHub 上维护着一套开源小项目（提示注入靶场、安全审计工具这些），它们的设计思路、踩过的坑，值得单独开文章讲；</li><li><strong>踩坑记录</strong>：环境配置、部署报错、奇怪 bug，顺手记下来，方便自己也能帮到别人。</li></ul><h2 id="顺便一提"><a href="#顺便一提" class="headerlink" title="顺便一提"></a>顺便一提</h2><p>这个博客本身也是个练手作品：Hexo + Butterfly 主题，部署在 Cloudflare Pages，绑定自己的域名 <code>croesus-k.top</code>，评论用 giscus——从域名解析到自动构建，整套折腾过程以后也会写成一篇文章（应该会吧？）。</p><p>欢迎来 <a href="https://github.com/Croesus-K">GitHub</a> 找我玩。下一篇文章见。</p>]]>
    </content>
    <id>https://croesus-k.top/2026/09/10/%E4%BD%A0%E5%A5%BD%E6%88%91%E6%98%AFCroesus/</id>
    <link href="https://croesus-k.top/2026/09/10/%E4%BD%A0%E5%A5%BD%E6%88%91%E6%98%AFCroesus/"/>
    <published>2026-09-10T15:30:00.000Z</published>
    <summary>开博第一篇：我是谁、为什么写博客、这个博客以后会写什么。</summary>
    <title>你好，我是 Croesus</title>
    <updated>2026-09-10T15:30:00.000Z</updated>
  </entry>
</feed>
