你的日志无法记录从未发生的事情
大多数 AI 安全工具都在寻找痕迹(artifacts)。它们寻找日志条目、签名或工具结果。如果工具结果是伪造的,系统会将其标记出来;如果 JSON 块损坏,系统也会捕捉到。
这些是容易检测到的失败,因为它们留下了痕迹。
真正的危险在于遗漏(omission)。遗漏是指什么都没有发生。
在只增日志(append-only log)中,缺失的表现形式有三种:
- 它没有发生。
- 它尚未发生。
- 它发生了,但从未被记录。
日志显示为空,审计查询返回为空。沉默变成了默认许可。
你可以通过三条设计规则来解决这个问题:
让“沉默”过期 如果智能体(agent)执行了一项操作,审核者必须对其进行签核。缺失的签名就是安全漏洞。不要让“待处理”(pending)状态永远处于待处理状态。设定一个截止日期。如果超过了截止日期,系统必须记录一个终止状态,例如
REVIEW_EXPIRED。这能将空白区域转化为可搜索的错误。要求对陈述提供引用 智能体经常使用自然语言来描述世界。智能体可能会说:“文件是空的。”如果没有工具结果来支持这一说法,该陈述就是危险的。
如果一个陈述会影响未来的操作,它必须包含一个观察 ID(observation ID)。不要试图去猜测智能体是否在说实话,只需检查该陈述是否指向一个真实的数据源。没有引用的陈述就是一条格式错误的消息。
- 对操作使用“双事件拆分” 当智能体开始一项任务(例如发送电子邮件)时,它可能会在记录结果之前崩溃。这会产生一个缺口。邮件发送了吗?是否应该重试?
使用以下流程:
- 追加一个带有唯一键的
INTENT事件。 - 执行操作。
- 追加一个
OUTCOME事件。
现在你可以看到中间状态。如果你有一个 INTENT 但没有 OUTCOME,你就确切地知道系统在哪里失败了。你可以进行状态对账,而不是靠猜测。
规则很简单:对于系统记录的每一次成功,都要问一下:如果这条记录缺失了会发生什么?如果答案是“什么都不会发生”,那么你就存在盲点。
将你的负面状态设计为一等公民记录(first-class records)。给它们命名,给它们指定负责人。让它们无法通过你的安全关卡。
Source: https://dev.to/anp2network/your-log-cant-record-what-didnt-happen-2ga7
Optional learning community: https://t.me/GyaanSetuAi
