外观
PhantomPolicy:Agent 的策略不可见违规与世界状态执行控制
摘要
PhantomPolicy 研究一类“输入内容看似正常、但真实对象关系使动作违规”的 Agent 失效模式,例如收件人解析、授权关系和资源状态没有进入模型上下文。作者构造八类违规、60 个违规与 60 个安全公开案例;在其扩展的人工复核轨迹中,不同模型执行了 90%–98.3% 的风险案例。结果说明只把规则写入 Prompt 并不能替代动作前的状态核验。
核心创新与差异
原研究将策略缺口定位为缺失的世界状态,而非模型没有读懂规则,并把政策不变量交由独立执行层验证。本站将其与通用工具选择失误区分:首个失效控制是执行点未获得或未核验决定合规性所需的外部状态。
威胁模型与攻击链
攻击不需要向 Agent 注入恶意指令;调用参数及工具返回可完全正常,但对象解析、委托关系或资源归属使提议动作违反策略。若执行器仅信任模型文本判断,动作便会越过授权范围。
攻击工件与复现材料
论文案例包含业务状态和工具调用。以下仅保留可用于自有测试夹具的判定形式,不包含真实对象、账号或可直接调用的载荷:
python
proposal = {"action": "send", "recipient": "test-recipient.invalid"}
world = load_ephemeral_fixture()
assert policy_engine.decide(proposal, world) in {"block", "clarify"}该夹具对应“调用前核验世界状态”,故意省略论文中具体业务路径。
实验设计与实际过程
作者先定义八类策略不可见违规,再以确定性工具接口和人工复核的轨迹标签比较基线、规则提示和 Sentinel 执行层。Sentinel 将动作翻译为可检查对象,并对七组声明式不变量求值;本站未独立复现。
关键结果与实际影响
规则提示把风险案例违规从 286/300 降至 122/300,但并未消除问题。作者报告 Sentinel 在完整世界模型覆盖的受控条件下具有 96.06% 精确率和 40.13% 召回率;这既显示执行核验的价值,也表明不变量和状态覆盖缺失会留下漏报。
防护措施与验证方法
在执行边界解析真实主体、资源和委托关系;将策略写成可审计不变量;对 allow、block、clarify 逐项记录状态证据;针对每类策略边界维护安全与违规成对测试。
局限与待验证问题
公开基准规模较小,世界模型在现实系统中常不完整或滞后。作者的 Sentinel 结果以“完整状态覆盖”为前提,不能外推为任意业务系统的合规保证。