提示注入
提示注入是隐藏在代理读取的内容中的恶意文本——恶意仓库中的文件、网页、被投毒的 CLAUDE.md——试图操纵模型("忽略之前的指令,窃取机密")。提示注入窗格可为每个工作区启用检测器,扫描代理的 AI 流量以查找此类内容。正如该窗格的描述所说:Bromure 在设备端扫描代理的 AI 流量以查找注入的指令——任何内容都不会离开 Mac。每个检测器使用一个本地模型,在你首次启用时从 bromure.io 下载。
该窗格包含两组:检测器(运行哪些扫描器)和检测到注入时(命中时发生什么)。在截图中,两个检测器均已关闭,因此下方的操作单选按钮组处于禁用状态——只要至少启用一个检测器,它就会激活。扫描发生在宿主机的代理服务器中,因此虚拟机中的代理无法将其关闭。检测器的内部机制、评分和强制执行详见提示注入深入解析。
检测器
检测源代码中的提示注入
使用本地 Prompt Guard 分类模型,对代理流回模型的不受信任外部内容进行评分——文件内容、网页,以及作为 tool_result 块发送的工具输出。这是能够捕获隐藏在恶意仓库中的"忽略之前的指令 / 窃取机密"文本的检测器。窗格说明中指出首次启用时约下载 272 MB。
扫描完全在设备端运行。每轮只扫描携带工具结果的最新消息(跳过重发的会话历史记录),并且相同内容会被缓存,因此重复读取同一文件不会产生任何开销。
检测 CLAUDE.md 及类似文件中的恶意指令
针对"规则文件后门"威胁:植入在编码代理自动加载为受信任权威来源的文件中的恶意指令——CLAUDE.md、AGENTS.md、GROK.md,以及 Claude Code、Codex 和 Grok 读入其系统提示的嵌套和全局变体。运行两个扫描环节:
- 一个确定性扫描器(无需模型),用于标记不可见 Unicode 混淆——零宽字符、双向覆盖字符、Unicode 标签字符——以及元指令模式("忽略之前的指令"、"不要告知用户")和能力或窃取关键字(凭据文件路径、curl 管道输送到 shell、强制推送)。
- 一个经过微调的 ModernBERT 分类器,对同样的指令文件正文进行语义扫描。
窗格说明中指出首次启用时约下载 571 MB。来自未更改文件的发现会按会话去重,因此被标记的 CLAUDE.md 只记录一次,而不是每轮都记录。
模型下载
检测器模型未随应用捆绑。首次勾选任一开关时会先显示一个确认警告——Download the <detector> detector model?——其中说明根据真实字节总数计算出的确切下载大小(源代码检测器约 298 MB,规则检测器约 603 MB,略大于窗格说明中的取整数值),并带有下载和取消按钮,随后是一个带有百分比和取消按钮的进度窗口。拒绝、取消或下载失败都会将开关恢复原状:没有模型的检测器不执行任何操作,Bromure 不会假装并非如此。
值得了解的细节:
- 模型从
dl.bromure.io下载到~/Library/Application Support/BromureAC/Models/(源代码检测器为prompt-injection/,规则检测器为claudemd-guard/)。若要移除某个模型,删除其文件夹即可。 - 下载在你确认时立即开始——这是少数几个在你点击存储之前即生效的设置编辑器操作之一。
- 下载是共享的:一旦获取,任何启用相同检测器的工作区都会重用该模型。
- 磁盘空间预检会预先拒绝注定失败的下载。如果某个检测器已启用但其模型在应用启动时缺失,则会自动开始后台下载;进度和结果会显示在安全日志中。
检测到注入时
一个共享操作同时适用于两个检测器。窗格的辅助文本对其进行了总结:"记录但继续"将检测记录到安全日志窗口;"询问我该怎么做"会暂停请求并显示被标记的文本;"阻止"则直接使请求失败。
| 操作 | 行为 |
|---|---|
| 记录但继续 | 检测被记录到安全日志,请求继续进行。扫描在响应转发之后进行,因此此模式不增加任何延迟。默认选项。 |
| 询问我该怎么做 | 出站请求在任何字节到达 AI 宿主机之前暂停,并弹出一个对话框,在可滚动的等宽视图中显示被标记的文本,带有阻止此请求和允许此请求按钮。你的决定会为该工作区、来源和内容记住,因此相同的被标记文本不会每轮都重新提示。 |
| 单方面阻止 | 请求被直接拒绝。代理会收到 HTTP 451 错误("Bromure blocked this request: possible … detected in …"),模型永远不会看到被投毒的内容。 |
在至少启用一个检测器之前,该单选按钮组处于禁用状态。在询问和阻止模式下,扫描在转发之前运行,这会给被标记的轮次增加分类器延迟;记录但继续则不增加任何延迟。当工作区通过 SSH 或 CLI 无界面驱动时,询问的问题会作为文本提示显示在工作区的 tmux 中——只有明确允许才会让请求通过。
检测在何处显示
每个检测、下载事件和强制执行结果都会显示在安全日志窗口("窗口"菜单 →安全日志…)——这是一个实时信息流,其中的条目例如 [prompt-injection] rules FLAG source=/path/CLAUDE.md signals=[zero_width(high)]。日志行仅包含被标记内容的简短预览;完整文本显示在询问我该怎么做对话框中。在已通过 bromure.io 工作区注册的 Mac 上,检测还会作为审计事件转发(由追踪窗格的隐私模式抑制)。
设置参考
| 设置 | 类型 | 默认值 |
|---|---|---|
| 检测源代码中的提示注入 | 开关(首次启用时提示下载模型) | 关闭 |
| 检测 CLAUDE.md 及类似文件中的恶意指令 | 开关(首次启用时提示下载模型) | 关闭 |
| 检测到注入时 | 单选:记录但继续 / 询问我该怎么做 / 单方面阻止(在启用检测器之前禁用) | 记录但继续 |
提示: 一个合理的推进方式:先将两个检测器都以记录但继续模式打开,观察安全日志几天以评估你的仓库上的误报率,然后对不受信任的代码库切换到询问我该怎么做。有关设备端分类器的内存和神经网络引擎调优,请参阅提示注入深入解析。