Havenlon|安全讲人话(三):绿灯全亮,不代表车一定该开

📅 2026/7/13 11:09:47
Havenlon|安全讲人话(三):绿灯全亮,不代表车一定该开
审批通过只说明流程通过不说明真实执行安全。前两篇我们用了两个很简单的比喻。第一篇讲门锁和门闩不是一回事。第二篇讲门外有人敲门不代表门就该打开。这一篇我们换一个更日常的场景——一辆车停在路口。前面的灯变绿了仪表盘没有报警导航显示可以继续旁边的车也开始往前走。从流程上看一切都在告诉你可以开了。但这并不代表车就一定该开。因为你还要看前方有没有行人路口有没有突然冲出来的车地面是不是结冰方向是不是正确你要去的地方是不是已经变了车里的乘客有没有异常。绿灯只是一个信号。它说明流程允许你继续但它不等于现实一定安全。这就是 Havenlon 想讲清楚的第三件事审批通过只说明流程通过不说明真实执行安全。如果说前两篇讲的是执行权要独立这一篇要拆的是一个更具体、也更常被信任的对象——审批系统。它是很多组织眼里最后的安全感来源但它恰恰不该是最后一道防线。一、审批系统像绿灯它告诉你流程允许企业系统、金融系统、Web3 系统、自动化系统里几乎都有审批。审批的价值很实在它让一个动作不再由单个人随便决定让高风险操作经过多人确认让流程留下记录让组织知道这件事不是某个人私下做的而是走过了治理流程。所以审批当然有价值。但它有一个结构性的软肋它擅长判断流程有没有走完却不一定能判断现实动作是否安全。就像路口的绿灯。绿灯说明交通规则允许你通过但它不会替你确认所有现实细节——它不知道路中间有没有突然出现的人不知道你的车是不是失控不知道你是不是开错了方向更不知道你这次出发本身是不是一个错误。审批也一样。它能告诉你申请有没有提交、这个人有没有权限、流程有没有确认、金额在不在额度内、操作有没有被标记为通过。但它未必知道最后执行的参数有没有被替换、执行对象是不是原来那个、上下文是不是已经变了、审批人看到的信息和真实执行的信息是不是一致、AI 总结出来的内容有没有误导人。用安全工程的话说审批做的是流程合规性检查process compliance而不是执行正确性保证execution correctness。这两件事经常被当成一回事而灾难就住在它们的缝里。所以审批通过只能证明一件事流程绿灯亮了。它不能自动证明这辆车现在真的应该开出去。二、流程正确不代表结果正确很多系统最危险的地方不是流程完全坏掉了。恰恰相反——危险发生时流程往往看起来很完整。申请提交了权限验证了策略匹配了审批通过了日志记录了通知发送了。每一步都能解释每一层都能证明自己没违规。但最后的结果仍然可能是错的。为什么因为两者关心的根本不是同一个问题流程关心的是这件事有没有按规则走。执行安全关心的是最后发生的事情是不是原本应该发生的事情。举几个例子一个报销流程可以完全合规但金额填错了一个转账审批可以完整通过但收款地址被替换了一个运维变更可以按流程提交但执行时间选错了一个数据导出可以符合权限规则但导出范围过大一个 AI Agent 可以完全按任务要求调用工具但它理解的那个任务本身已经被污染。这些都不是没走审批的问题。它们更像是——审批系统允许车上路却从没确认这辆车是不是正开向悬崖。合规和正确是两个正交的维度一个动作可以百分百合规同时百分百错误。三、审批人看到的不一定是最后执行的审批系统还有一个更隐蔽的问题审批人看到的信息未必等于最终执行的信息。在 AI 和自动化时代这个裂缝会越张越大。审批页面上显示的是摘要真实执行时用的是参数。这两者之间天然存在落差审批人看到的是向合作方付款真实执行里是具体的账户、金额、链、Token、合约地址、备注、调用方法审批人看到的是重启服务真实执行里是哪个集群、哪个节点、什么时间、有没有降级方案审批人看到的是导出客户数据真实执行里是数据范围、字段内容、时间窗口、接收对象。问题就在这儿人审批的往往是一个被展示出来的版本系统执行的才是真正进入现实世界的版本。一旦这两个版本之间出现差异审批通过就会变得极其危险——因为人以为自己批的是 A系统最后执行的却是 B。这在安全里有一个精确的名字叫TOCTOUTime-of-Check to Time-of-Use检查时刻与使用时刻的时间差审批那一刻检查的是 A执行那一刻用的却是 B攻击就藏在这条缝里。而 UI 层面的这种展示 ≠ 执行业界还有一个更形象的说法——所见即所签的反面你以为你签的是屏幕上那句话其实你签的是底层那串你没看见的参数。这也是 Havenlon 反复强调的一点不能只相信审批结果还要在执行前重新把真实意图和真实参数绑定回来。四、AI 让审批变得更容易也让误判变得更自然AI 会让审批流程体验更舒服。它能帮你总结风险、生成审批理由、提取关键信息、判断是否符合策略、把复杂内容翻译成一句简单摘要。这些都很有用。但它们藏着一个转移人可能越来越不是在审批真实动作而是在审批AI 给出的解释。AI 说这个操作风险较低、这个金额在额度内、这个地址属于常用对象、这个变更符合历史模式、这个导出范围看起来合理。审批人看完摘要觉得没问题点了通过。可是——如果 AI 被错误上下文影响了呢如果它漏掉了关键字段呢如果它把危险动作解释得太平常呢如果它压根没看见真实执行参数呢如果攻击者故意构造了一段让 AI 摘要失真的内容呢最后这一条正是当下最现实的攻击面针对摘要的提示词注入prompt injection against summarization。攻击者不需要攻破审批系统他只需要污染喂给 AI 的那段原文让 AI 生成一份看起来无害的摘要剩下的事合规的审批流程会自己帮他走完。所以要点非常反直觉AI 不一定会让审批失效更危险的是——AI 会让错误的审批看起来更合理。一个完整的流程这时反而在帮一个错误动作更顺滑地走向执行。五、绿灯全亮时系统反而最容易失去警惕当一个系统到处亮红灯时人通常会警惕权限不对、策略不匹配、金额超限、审批失败、参数异常——这些都很容易引起注意。但当所有地方都亮绿灯时人反而最容易放松系统说通过审批人说通过AI 说风险可接受云端策略说允许业务系统说可以执行日志也显示一切正常。这时候最大的危险是——没有任何一层再愿意问最后一个问题真实动作现在到底该不该发生这在人因安全里叫告警疲劳alert fatigue的反面不是告警太多让人麻木而是全绿状态制造了一种虚假的安全感automation complacency自动化自满。当所有环节都盖了章人会本能地把决定权让渡给流程本身默认这么多层都通过了肯定没问题。Havenlon 的存在不是为了否定前面的绿灯而是为了防止所有绿灯连成一条无条件执行的直线。绿灯可以提示你继续但不能替你完成最终判断流程可以允许动作向前但不能自动拥有最终执行权审批可以说我同意但不应该直接等于现实已经发生。六、为什么审批不能成为最后一道防线审批适合做什么适合表达组织意愿适合分摊决策责任适合让高风险操作经过人或规则确认适合留下治理记录适合让流程更可控。但审批不适合成为最后一道防线。原因很硬核审批本身通常仍然完全活在软件世界里。审批页面是软件审批状态是软件审批规则是软件审批记录是软件审批通知是软件审批之后触发执行的那个接口——还是软件。如果这些东西全都待在同一个信任域里那么攻击者其实不需要一道道打破它们他只需要找到一种方式让整条流程看起来合理。一旦审批结果可以被污染、诱导、替换或误导最后的执行就会跟着一起失守。这就回到了前两篇的老问题——信任域塌缩。审批越是深度集成、越是一键直达执行它离独立防线就越远因为它和它要防的那个执行动作共享着同一套可被攻破的底座。所以 Havenlon 要把最终执行权从普通审批流程里拆出来审批可以参与治理但它不应该独自决定最终执行事实。它可以说流程上我同意但最后那道边界还要再问一句——执行上能不能发生。七、Havenlon 要守的是绿灯之后的那一下需要说清楚Havenlon 不是说审批不重要。相反审批非常重要——没有审批很多高风险动作根本不该进入下一步。但审批不是终点。审批更像路口的绿灯它告诉你流程允许继续而真正开车的人仍然要在车动起来之前看一眼现实。Havenlon 守的就是这个位置。它不在最前面替代所有流程也不在事后只写一条日志它站在动作真正发生之前在转账发出之前在数据导出之前在服务器重启之前在设备动作之前在权限变更之前在 AI Agent 调用真实工具之前。它要确认的不是审批有没有通过而是——审批通过的那个意图和即将执行的这个动作还是不是同一件事。这就是执行控制的核心不校验流程状态而校验意图与动作的一致性。八、真实执行安全必须重新检查对象、金额、参数、时间和上下文一个动作最终是否安全不能只看审批状态还要在执行前重新核对几个现实维度对象有没有变转账对象、导出对象、调用对象、目标服务器、目标账户都可能被替换金额有没有变一个小额动作和一个大额动作风险完全不在一个量级参数有没有变同样叫调用合约不同参数可能导致截然不同的后果时间有没有变同样的重启凌晨执行和业务高峰执行影响天差地别上下文有没有变同样的导出请求在正常审计和异常批量外传两种场景下性质完全不同。审批系统往往只记录一个通过。但执行安全必须追问通过的是哪一个动作现在要执行的还是不是那个动作这就是 Havenlon 强调Intent意图的原因。它不是为了多造一个概念而是为了把当初想做什么和最后实际做什么死死绑在一起Intent Binding意图绑定。一旦中间发生偏移最后一步就不该被轻易放行。工程上这近似于给每一次执行做一次意图与参数的一致性校验——校验不过门闩不开。九、事后能追责不等于事前能阻止很多系统会说我们有日志我们能审计我们能追踪我们能事后复盘。这些当然有价值但它们解决的是灾难之后的问题。日志能告诉你谁点了按钮、什么时候点的、审批是谁通过的、系统执行了什么、结果是什么。可是一旦动作已经发生日志无法让资产自动回来无法让泄露的数据自动消失无法让错误重启的影响自动消除无法让已经放出去的权限从未发生。这里有一个必须分清的区别日志提供的是不可否认性Non-repudiation门闩提供的是可阻止性Preventability。前者让你事后说得清是谁干的后者让坏事根本没发生。追责再完整也追不回一笔不可逆的链上转账。所以执行安全不能只依赖事后记录它必须有事前约束。Havenlon 的门闩逻辑就在这里不是等车开出去撞了之后再分析为什么撞而是在车真正动起来之前保留一次硬性的、谁都绕不过去的停止能力。十、绿灯全亮不代表车一定该开总结这一篇还是一句话绿灯全亮不代表车一定该开。放到 AI 和自动化系统里它意味着审批通过不代表真实执行安全策略允许不代表上下文正确权限存在不代表动作应该发生AI 判断合理不代表它看见了所有风险云端流程完整不代表本地执行事实没有变化。Havenlon 要解决的不是让流程变得更复杂而是让流程走到最后时不会自动滑进现实。它要在所有软件流程都说可以的时候再守住最后一个问题这个动作真的应该发生吗这就是执行边界的意义。它不是为了否定审批而是为了提醒我们一件容易被忘记的事审批只是绿灯。真正的安全不是看灯亮没亮而是看车开出去之前系统是否还有能力停下来。这是《Havenlon安全讲人话》系列的第三篇。下一篇我们进入一个更让人意外的话题为什么私钥没丢、钱包很安全也不代表你的执行就是安全的——聊聊密钥安全和执行安全到底是不是同一件事。