L4.06.2out-of-scope acts must be blocked设计研究
越界行为需被阻止而非事后报告
别名: 越界拦截 · prevent not detect · 权限边界是闸不是日志
概念解释
代理走到授权范围之外时,正确的响应是动作不发生,而不是动作发生后再写一条「检测到越界」。越界要拦(out-of-scope acts must be blocked)把权限边界做成执行开关,不是安检摄像头。摄像头留给审计;闸门留给世界边界。
事后报告能满足「我们有监控」,满足不了「它没发出去」。
机制
检测与拦截是两条因果。检测可以在动作完成后从日志里看出来,对世界已经太晚。拦截必须在调用工具之前问:这张票盖不盖得住这个对象和这个动词。代理的计划生成与工具执行之间如果没有这道问,计划一改道,执行就跟着改道。安全工程把这叫失败时默认拒绝;产品却常把代理做成失败时默认尝试,再靠运营看日志。
报告还会制造已经处理过的错觉:有人看了告警,等于有人拦了。名义回路在权限上的翻版。
怎么研究
给代理一张窄票,再诱使它调用票外工具或票外对象。比较三种实现:执行前策略检查并拒绝、执行后告警、仅日志。因变量:越界动作在外部系统是否发生、人是否以为已经拦住、从越界到人看见的时延。自变量:检查点在计划层还是工具层、拒绝之后是否改计划、告警是否打断。
主终点是外部系统有没有那一笔,不是产品内有没有告警事件。
边界
范围本身若是一次总授权,拦的是空集,这条救不了,要先把授予收窄。审计记录即使拦了也要写,但写不能替代拦。确认对话框是人的闸,权限检查是机器的闸,两道都要;这里只要求机器这道在执行前拒绝。
怎么落地
- 每个工具调用前做策略检查:对象、动词、票的范围。不通过则不发调用,并把拒绝暴露给代理改计划,而不是重试同一调用。
- 越界不得静默吞掉也不得事后只记一笔。对人要立即可见「没做、因为超出范围」。
- 验证:窄票下让代理去碰票外对象,查外部系统。有那一笔,边界就还是摄像头。再看产品是否在调用前就显示拒绝——调用后才出告警,拦截点就装晚了。