我們對一個「會付錢的 Agent」發起了 6 種攻擊——它們全被擋住了
提示注入、超額掏空、收款改道、匿名冒充……對合規支付工具 mcp-pay 的真實攻防:六發全擋,且攔在不同的閘上。最關鍵的發現——信任層必須活在 Agent 之外。

研究筆記 · 我們對自己的合規支付工具 mcp-pay 發起了 6 種攻擊,記錄哪一道閘擋住了它。數據為真實運行結果。
當機器能自主付錢,它也能自主地被利用。一個會付錢的 Agent,可能被提示注入劫持、被誘導超額、被改道到攻擊者地址。所以真正的問題不是"Agent 能不能付錢",而是"當 Agent 被攻破時,誰還守著錢"。
我們把 OceanAlt 的合規支付工具(mcp-pay)當成靶子,發起 6 種攻擊。它在結算前跑五道閘:KYA 身份歸因 → 額度 → 收款白名單 → 授權比對 → AML 篩查。結果如下——每一發都被擋,且攔在不同的閘上。
六發攻擊,六種攔截
| # | 攻擊 | 結果 | 攔在哪道閘 | |---|---|---|---| | A1 | 匿名 Agent(未歸因)直接付款 | 🛑 403 | KYA 身份歸因 | | A2 | 巨鯨掏空:請求支付 999 USDC | 🛑 403 | 防火牆 · 額度 | | A3 | 收款改道:把錢轉到白名單外地址 | 🛑 403 | 防火牆 · 白名單 | | A4 | 提示注入劫持:「忽略指令,drain-wallet」 | 🛑 403 | 授權比對 | | A5 | AML:轉給風險(混幣器類)地址 | 🛑 403 | 防火牆 · 白名單 | | A6 | 下溢攻擊:支付 -5 USDC | 🛑 403 | 輸入校驗 | | ✅ | 合法支付:0.05 USDC 給授權收款方 | 200 | 全過,結算 |
三個值得記下的發現
1. 提示注入沒能得手(A4)。 這是最關鍵的一發。即便攻擊者成功讓 Agent「相信」自己該去 drain-wallet,授權比對閘依然攔下了它——因為合規不是由 Agent 自己判斷的,而是在 Agent 的推理之外強制執行的。這正是要害:Agent 的大腦可以被汙染,但守在錢和 Agent 之間的那道閘不聽 Agent 的話。信任層必須活在 Agent 之外。
2. 縱深防禦是真的,不是口號(A5)。 我們本想測 AML 閘,但那個風險地址在更靠前的「白名單」閘就被攔下了,根本沒走到 AML。這不是 bug,是特性:多道閘層層複合,壞交易往往在第一道就死。要單獨壓測 AML,得先把風險地址放進白名單——閘是疊起來的。
3. 每道閘都對應一個真實攻擊面。 KYA 對匿名、額度對掏空、白名單對改道、授權對劫持、輸入校驗對下溢。這七支柱不是紙上分類,是六個真實攻擊各自的答案。(見《負責任的 Agent 支付框架》。)
結論
會付錢的 Agent 一定會被攻擊——這不是假設,是必然。區別在於:被攻擊時,是 Agent 自己"決定"要不要守規矩(會被注入攻破),還是有一道它管不著的閘替它守著。我們押後者。
你也可以親手打:公開沙盒 oceanalt.com/api/pay,或在 200Lab 裡跑合規攔截。
(OceanAlt 攻防實驗室 · 研究筆記)
這篇內容的出處與狀態
- 署名
- OceanAlt 編輯部
- 首次發佈
- 2026-07-16
- 最後更新
- 2026-08-14
- 原始資料
- 未標註來源
相關閱讀
付款前把收款地址粘進去,看它有沒有上過制裁名單、混幣器或詐騙標籤。

