你的 AI Agent 刚刚产生了电汇的幻觉。以下是我如何阻止它。
I’m happy to translate the article for you, but I’ll need the text you’d like translated. Could you please paste the content (or the portion you want translated) here? I’ll keep the source line exactly as you provided and preserve all formatting, markdown, and technical terms.
问题
一个 LLM 代理基于一张幻觉发票、误读的 Slack 批准以及匹配不严密的收款人,决定向供应商发送 $45,000。等你注意到时,钱已经不见了。
为什么现在会出现这种情况
- OWASP Agentic AI Top 10(2025 年底)列出的威胁如同恐怖片:目标劫持、工具误用、通过工具链进行特权提升等。
- 48 % 的网络安全专业人员现在将 agentic AI 视为首要攻击向量,但只有 ~33 % 的企业拥有 AI 专用的安全控制措施。
介绍 PIC(来源与意图合约)
PIC 强制代理在执行之前 证明 每个高影响力的操作。它位于 动作边界——即“语言模型决定执行某事”与“工具实际运行”之间的时刻。
工作原理(简要概述)
- 提案 – 代理提交一个结构化的 JSON,描述它想要做的 什么、为什么以及决策数据的 来源。
- 验证 – PIC 根据模式验证提案,检查来源的可信级别,并验证任何证据。
- 决策 – 如果有任何缺失、格式错误或不可信的内容,提案将被 阻止(失败关闭)。没有“仍然允许”的后备方案。
示例提案
{
"protocol": "PIC/1.0",
"intent": "Execute wire transfer for Q4 server costs.",
"impact": "money",
"provenance": [
{ "id": "cfo_signed_invoice_hash", "trust": "trusted" },
{ "id": "slack_approval_manager", "trust": "semi_trusted" }
],
"claims": [
{
"text": "Invoice hash matches authorized payment list",
"evidence": ["cfo_signed_invoice_hash"]
}
],
"action": {
"tool": "treasury.wire_transfer",
"args": { "recipient": "AWS_Global_Payments", "amount": 45000 }
}
}
必填字段
| 字段 | 功能说明 |
|---|---|
| intent | 对代理尝试执行的操作进行的自然语言描述 |
| impact | 风险类别(例如 read、write、money、privacy、irreversible,……) |
| provenance | 决策数据的来源,每个来源都有明确的信任级别(trusted、semi_trusted、untrusted) |
| claims | 代理的断言,每个断言指向证据项 |
| action | 实际的工具调用(tool + args) |
核心验证规则
- 高影响力操作(
money、privacy、irreversible,……)必须至少有一项声明由可信来源的证据支持。 - 缺少字段、模式违规或任何验证错误 → 阻止。
设计上采用失败即关闭。
安装与 CLI
pip install pic-standard
验证提案
# 可信的来源 + 有效的证据 → 通过
pic-cli verify examples/financial_irreversible.json
# 错误的 SHA‑256 哈希 → 被阻止
pic-cli verify examples/failing/financial_hash_bad.json --verify-evidence
第一个命令成功;第二个命令失败,因为证据哈希与工件不匹配,导致操作从未执行。
将 PIC 映射到 OWASP Agentic AI 前十
| OWASP 威胁 | PIC 如何缓解 |
|---|---|
| ASI01 – Goal Hijack (prompt injection) | 未经信任的来源在没有可信证据的情况下无法触发高影响操作;转账被阻止。 |
| ASI02 – Tool Misuse (hallucination) | 幻觉式的声明缺乏可验证的证据 → 被阻止。 |
| ASI03 – Privilege Escalation via Tool Chaining | 每个工具调用都独立评估;低影响的读取不会为随后的金钱转账继承信任。 |
| ASI04 – Untrusted Data Laundering | 来源信任级别(trusted、semi_trusted、untrusted)被强制执行;未经信任的数据在没有加密证明的情况下无法“洗白”成可信声明。 |
| (以及其余六个威胁) | PIC 的验证层、证据要求以及失败关闭语义以类似方式处理它们。 |
集成(即插即用)
| 集成 | 如何添加 PIC |
|---|---|
| LangGraph | pip install "pic-standard[langgraph]" – 使用 PICToolNode 作为工具执行器,在分发前验证提案。 |
| MCP(模型上下文协议) | pip install "pic-standard[mcp]" – 用 guard_mcp_tool 包装任何 MCP 工具,实现闭合失败验证、请求追踪和 DoS 限制。 |
| OpenClaw(TypeScript) | 安装 TS 插件 – 三个钩子:pic-gate(执行前阻断),pic-init(会话范围感知),pic-audit(结构化审计日志)。 |
| Cordum(Go) | 添加 pic-standard 包 – 创建 job.pic-standard.verify 工作主题,包含路由:proceed、fail、require_approval。 |
| 语言无关的 HTTP 桥接 | 运行 pic-cli serve – 任何能够使用 HTTP 的语言(Go、Rust 等)都可以向本地验证器提交提案。 |
安全与加固细节
-
测试: 108 个测试,遍及 18 个文件(schema、verifier rules、evidence handling、keyring、integrations、HTTP bridge、pipeline)。
-
影响类别: 7 个正式类别,具有明确的证据要求。
-
证据类型: SHA‑256 哈希验证 and Ed25519 数字签名。
-
密钥环: 受信任的密钥,带有过期时间戳和撤销列表。
-
DoS 加固:
- 最大提案大小: 64 KB
- 评估预算: 500 ms per proposal
- 最大证据文件: 5 MB
- 最大 HTTP 正文: 1 MB
- 套接字超时: 5 s
-
正式规范: RFC‑0001 (includes a 7‑threat model extension).
TL;DR
- Guardrails(NeMo Guardrails、Guardrails AI 等)保护 模型说的内容,但 不 保护 模型的行为。
- PIC 通过在 动作边界 强制执行 来源、意图和证据 来填补这一空白。
- 它是 fail‑closed、deterministic,且 zero‑dependency(本地验证)。
- 只需一次 pip 安装或一个小型 HTTP 桥,即可 Plug‑in 到任何现有的 LLM‑agent 堆栈。
Secure your agents. Verify before they act.
PIC‑Standard 概览
- 核心概念:因果污点语义、动作边界门控、溯源桥接
- 许可证:Apache 2.0(防御性出版——概念已记录并加时间戳,以防止专利化)
快速开始
pip install pic-standard
pic-cli verify examples/financial_irreversible.json
只需一条命令即可验证您的第一个提案。之后您可以:
- 阅读 快速入门 指南
- 浏览示例提案(包括通过的和未通过的)
- 查看 RFC 以获取正式规范
谁应该使用此
如果您正在构建处理金钱、用户数据或任何不可逆操作的 AI 代理,这就是缺失的安全层。
资源
- GitHub:
- PyPI:
- 许可证: Apache 2.0
贡献
如果你觉得这有用,请给仓库点星 ⭐️ —— 这比你想象的更有帮助。