ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

HAVENLON 不完美主体 | #03 善意,也不能成为安全边界

HAVENLON 不完美主体 | #03 善意,也不能成为安全边界 安全行业长期习惯讨论恶意恶意攻击者、恶意代码、恶意内部人员、恶意 Prompt、恶意输入、恶意行为。大量安全模型都隐含着一个自然前提——真正危险的事情往往来自某个主体试图突破边界、欺骗系统或者获得它本不该拥有的能力。这个前提没有错但 AI Agent 让另一个问题变得越来越重要如果一个主体完全没有恶意却仍然做出了危险行动怎么办它没有绕过权限没有窃取 Credential没有攻击系统甚至没有任何伤害用户的意图。它只是误解了任务、拿到了不完整的上下文、相信了错误信息、被外部内容诱导或者在复杂环境里做出了看似合理实则错误的判断。危险仍然发生了。一个主体可以完全善意却仍然成为危险行动的来源。如果安全边界建立在这个主体应该不会故意做坏事之上它从一开始就不够坚固。一、安全擅长防坏人不太擅长防好人做错事传统安全模型很容易理解攻击者他有目标、有动机会主动寻找漏洞、伪造身份、绕过规则、利用系统边界之间的缝隙。因此安全系统只需不断提高攻击成本——加强认证、缩小权限、保护 Credential、检测异常、隔离高风险环境。在这种模型里风险与恶意高度相关。但现实中还有另一类事故管理员删除了错误的资源财务人员向错误账户转账开发者在错误环境里执行了正确命令操作员根据过期信息做出了完全合理的判断。这些人没有恶意甚至严格按流程工作结果仍然错误。我们过去把它们叫作人为失误这个词听起来像运营问题而不是安全问题。可如果一个错误动作最终造成数据删除、资产损失、生产中断或权限扩散从现实结果看它与攻击并没有本质区别。区别只在于一个是故意的一个不是而系统承受的后果完全一样。安全边界如果只能阻止恶意却无法阻止错误它保护的就只是动机而不是结果。AI Agent 正在把这个原本属于人为失误的问题正式推入安全工程。二、善意并不等于理解正确善意描述的是主体的目的正确描述的是主体对现实的理解这两个维度之间没有必然关系。一个 Agent 可以非常忠实地执行用户要求却误解了用户真正想要什么。用户说把昨天没有响应的客户处理一下Agent 可能把处理理解成自动关闭工单而用户想要的只是整理名单并提醒销售。Agent 没有违背用户它甚至在努力完成任务问题只是它理解错了。这种错误很特殊它不是权限错误不是身份错误不是恶意行为也不能简单归结为模型幻觉。它本质上是一次 Intent Interpretation Failure——主体对意图的理解与真正意图之间发生偏差。在人类世界里这种事每天都在发生一句话说得不够清楚一个需求被误解一个上下文没有补全最终通过交流、确认和返工被修正。但当主体拥有直接执行能力之后误解不再只是沟通成本。当理解能力与执行能力绑定在一起时误解就不再只是语义问题而是执行风险。三、错误上下文可以让正确推理得到错误结果我们常把 AI 风险归结为模型不够聪明但很多危险行动并不来自推理能力不足。恰恰相反一个模型完全可能在错误的上下文中进行相当优秀的推理然后得出危险结论。输入数据是过期的系统状态已经变化用户只提供了一半事实Agent 读到的是旧版本文档某个外部服务返回了不完整信息任务依赖的前提已经失效——在这些情况下即使推理链条内部毫无破绽最终行动仍然可能错误。这与传统软件差别很大。传统程序依赖确定性输入条件不满足就走另一条分支Agent 面对的却是开放世界中的语义信息它必须自己判断哪些信息重要、哪些内容可信、当前状态是否足够明确、是否还需要继续查询、是否已经拥有足够证据执行下一步。这些判断本身就带着不确定性。正确推理建立在错误上下文之上仍然会得到错误行动。所以 Agent 的风险无法只靠提高模型能力消除因为再强的推理也无法从缺失的信息中推出真实世界。不完美主体的问题也不能只理解成模型会犯低级错误——真正的问题是任何主体对现实的观察都是有限的。四、幻觉真正危险的地方不是说错而是做错关于大模型幻觉的讨论已经很多说错一个事实编造一个不存在的引用错误解释一段代码生成一个并不存在的 API。在聊天机器人时代这些主要表现为信息质量问题用户看到答案后自己决定是否相信中间还隔着一层人类判断。Agent 改变的是模型输出不再停留在文本。它可能继续调用工具、修改文件、发送邮件、执行 SQL、调整云配置、发起付款、签署交易。幻觉停留在语言层时是错误信息幻觉直接连接执行层时就可能成为现实行动。因此真正需要关注的不只是 Hallucination Rate还有 Hallucination-to-Execution Path一条错误信息究竟需要经过多少次独立验证才能改变现实如果答案接近于零那么模型越强问题反而可能越严重——高能力 Agent 不只是更会回答问题也更会把自己的判断转化为行动。幻觉本身未必危险危险的是幻觉拥有执行权。模型可以不断变好但执行系统仍然需要假设它可能错。五、诱导不一定改变权限只需要改变判断Agent 面临的另一类典型问题是外部诱导。传统攻击试图改变系统能力拿到账号、获取 Token、提升权限、突破网络边界。而对 Agent 来说攻击者可能不需要做到这些他只需要改变 Agent 对当前任务的理解——网页里的一段恶意文本一封精心设计的邮件第三方文档中的隐藏指令带有误导信息的 Issue甚至一个看起来完全正常的业务数据字段。这些内容一旦被当成可信上下文就会影响后续判断。此时攻击者并没有拿到 Agent 的 Credential也没有直接调用任何敏感 API他只是影响了一个已经拥有合法能力的主体后面的所有动作仍然由这个合法主体自己完成。这与社会工程学的结构高度相似攻击者没有攻破银行系统他只需要说服一个拥有合法权限的人转账。现在那个人开始变成 Agent。最有效的攻击不一定需要夺走主体的能力只需要改变主体使用能力的理由。这也是为什么 Prompt Injection 很难只被当成输入过滤问题——它攻击的其实是主体的判断边界而当判断权与执行权集中在同一个主体身上诱导就会直接转化成现实后果。六、没有恶意也可能形成完整的危险链设想这样一个流程用户要求 Agent 整理供应商付款把已经确认的全部处理掉。Agent 读取邮件、读取 ERP、读取一份共享文档其中一份文档的信息已经过期某封邮件里的付款状态也存在歧义。它综合这些信息判断某笔款项已通过内部确认于是调用 Payment API。Credential 合法权限合法额度合法接口合法交易成功。整个过程没有攻击者没有绕过控制没有任何人故意做坏事每个组件都按照设计运行但钱仍然转错了。很难说这只是一次AI 错误因为从架构角度看还有一个更值得追问的问题为什么一个不确定的判断可以直接获得改变现实的资格如果系统已经知道主体可能误解、可能缺少上下文、可能被错误信息影响却仍然允许一次单主体判断直接驱动现实执行这本身就是架构层面的风险放大。不完美不是事故允许不完美直接控制现实才可能成为事故。安全设计的目标不是消灭所有错误那不可能。真正可工程化的目标是限制错误的传播。七、善意系统容易制造一种错觉它应该没问题恶意主体天然让人警惕善意主体则会降低警惕。如果一个 Agent 是企业自己部署的模型来自可信供应商调用发生在内部网络Credential 由企业签发任务来自公司员工很多组织自然会认为风险已经足够低。这种判断会让控制边界不断向后退允许更多 Tool给予更大的 Context扩大访问范围缩短审批流程提高自动执行比例直到某一天一个错误判断直接进入现实。危险之处在于系统不是因为不安全而出事而是因为它看起来足够可信。这与许多传统事故非常像——最危险的生产操作往往不是陌生攻击者突然拿到 Root而是一个大家都熟悉、权限完全正常的人在错误的时间执行了一条完全合法的命令。信任本身没有问题问题在于把信任当成边界。我相信它是一种关系不是一种控制机制。八、善意为什么不能被编码成安全属性安全属性必须具备一个基本特点能够被验证。身份可以验证签名可以验证Token 有效期可以验证角色关系可以验证设备状态可以验证策略条件可以验证。但这个主体是善意的几乎无法被严格验证。一个 Agent 此刻没有攻击意图不代表它理解正确一个员工长期可信不代表他今天没有看错一个服务没有被攻陷不代表它收到的数据正确一个模型经过 Alignment也不意味着每一次工具调用都符合用户的真实目的。善意是一种动机状态而安全边界面对的是现实动作两者之间存在天然鸿沟。可靠的执行系统不能问这个主体是不是好人也不能问这个模型总体上是否可信它必须问更具体的问题这次动作的条件满足了吗对象匹配吗状态正确吗证据完整吗任务边界仍然有效吗参数在允许范围内吗有没有出现冲突信息。这些问题都比主体是否善意更可验证。安全工程真正应该依赖的是可验证条件而不是主观可信度。安全边界不能建立在它不会故意做错之上而应该建立在即使它想错也做不出边界以外的事之上。九、善意主体最需要的不是更多信任而是更清楚的边界当一个 Agent 表现良好我们的自然反应是给它更多权限先让它读然后让它写再允许自动提交最后让它直接执行。这很符合直觉因为在人类组织里信任积累通常带来授权扩大——员工表现稳定就承担更多职责合作伙伴长期可靠就减少审核管理者经验丰富就获得更大决策权。但 Agent 不是普通员工。它可能拥有机器速度、持续运行能力和巨大的操作规模因此长期表现良好并不能推出可以放弃执行边界。成熟的做法可能恰恰相反Agent 越强自动化比例越高能够产生的现实影响越大执行边界就越需要清晰。这不是因为不信任它而是因为一个高能力的善意主体一旦判断错误影响也更大。控制不是对智能的不尊重而是对能力规模的匹配。能力越大安全越不能建立在善意之上。十、成熟的系统会默认所有主体都可能好心办坏事不完美主体最重要的价值之一是它改变了威胁建模的起点。过去我们主要问如果攻击者获得权限怎么办如果 Credential 泄露怎么办如果管理员恶意怎么办。这些问题仍然需要回答但未来还要加上另一组如果 Agent 误解任务怎么办如果状态信息不完整怎么办如果上下文彼此冲突怎么办如果模型非常自信但判断错误怎么办如果用户自己下达了一个不完整的指令怎么办如果审批人理解错了怎么办如果 SaaS 返回错误结果怎么办。这里没有敌人但仍然存在风险。这其实是一种更完整的安全观因为它不再依赖必须先出现攻击者系统才需要保护自己系统只需要承认任何参与者都可能成为错误来源。一旦接受这个前提设计就会改变Unknown 不再默认继续Conflict 不再由某一个主体自行解释Missing 不再依赖猜测Expired 不再沿用旧判断。这些状态需要进入显式的控制逻辑因为主体的不完美不是异常而是常态。十一、从防恶意走向限制错误这并不意味着攻击者模型可以放弃恰恰相反未来的系统需要同时面对两件事一边防止恶意主体主动突破边界一边防止善意主体无意越过边界。两类风险看起来不同最后却指向同一条设计原则——不要让任何单一主体拥有把任意判断直接变成现实的能力。恶意主体会故意滥用能力善意主体会错误使用能力从执行控制的角度看它们的共同问题都是 Action 是否具备独立约束。如果系统能确保任何现实动作都必须满足明确边界那么它同时降低了恶意行为和非恶意错误的风险。这也是 Execution Control 与检测攻击者思路的差别它不必先回答这是攻击还是失误它更关心这个动作是否满足执行条件——条件满足则允许条件不满足则拒绝条件未知则拒绝或进入受限状态。这种思路的优势在于它不需要理解主体的心理也不需要证明某个 Agent 是善意还是恶意它只约束现实。安全不必先判断谁是坏人才能决定什么不能发生。十二、可靠的安全不应该依赖大家都想把事情做好任何组织的正常运行都需要一定程度的信任人与人之间需要信任企业需要信任员工系统需要信任服务用户也需要信任 AI。问题不在于要不要信任而在于信任是否被当成了最终的安全边界。成熟的工程系统允许信任存在但不会让系统安全完全取决于信任是否永远正确。这和桥梁设计不会建立在司机都会认真驾驶之上是一个道理——护栏的存在不是因为工程师认为司机有恶意而是因为司机可能疲劳、分心、误判或失控。我们不需要把 Agent 想象成敌人也不需要假设它总有一天会背叛人类。真实的问题要简单得多它只是可能犯错。这已经足以成为安全设计的前提。前两篇分别讨论了合法主体不一定是正确主体、合法动作不一定是正确动作这一篇再补上一层即使一个主体完全善意也不能因此获得未经约束的执行资格。因为现实不会根据动机撤销后果。一次善意的错误付款钱仍然转出一次善意的错误删除数据仍然消失一次善意的错误操作机器仍然启动。执行一旦完成现实不会因为它不是故意的而自动恢复。即使这个主体真心想把事情做好它仍然只能在明确边界内让事情发生。这才是不完美主体想表达的核心。不是怀疑所有人也不是怀疑所有 AI而是承认一个最普通也最难逃避的事实任何能够行动的主体都可能理解错现实。成熟的系统不要求主体永远正确它只要求一件事——错误不能因为善意就自动获得进入现实的资格。
返回列表