本地权限对话框上的远程编码代理程序 Can Deadlock

2026年8月13日2 次浏览来源:Dev.to阅读原文

远程编码代理中最恶心的失败模式不是坏补丁.

这是没有人能看到的许可提示。

在工作站开始长期工作,离开办公桌,待会再通过电话查看.

特工到达一个需要批准的命令.

如果该请求仅作为桌面 UI 中的一种模式存在, 则该任务在技术上没有失败 。

它只是永远停止。

这更糟糕。

失败的工作是可观察到的。

一个隐藏的等待看起来是健康的 直到有人注意到没有工作移动。

许可提示是协议状态 修补的起点是小改变 你如何模型批准。

许可请求不是UI状态 。

做这项工作的人拥有持久的国家。

生命周期应该看起来更像这样: 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被答 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被问 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 被 桌面对话框、 电话屏幕、 CLI 或 Web 控制器只是该状态上的一个视图 。

关闭窗口不能抹去它。

连接不能创建第二个请求 。

两个控制器一定不能解决不同的请求,因为屏幕上碰巧有一个呆板的按钮.

这也改变了远程控制协议的需求.

控制器应能够取得待批准的就业状况,提交一个申请ID的答案并观察由此产生的事件。

它不应该成为文件系统或运行时代理仅仅点击“ 允许 ” 。

需要从断线中幸存下来的东西 有待处理的请求至少需要稳定的请求身份证、自己的工作/会议、所要求的行动和资源,以及足够的命令信息,以便确定同时提出的请求。

答案也需要一个身份。

如果请求待决,答案必须失败。

重播同样的答案应该是无害的。

在同一ID下重放不同的答案不应悄悄地覆盖第一个决定.

这听起来很挑剔 直到电话重新连接到一个防弹网 并重审最后一个命令 因此,这是“独断专行”和“代理人两次操纵”的区别。

邮箱也需要限制.

被破坏或敌对的工具不应能够以无限制的序列式批准请求数填充无人主机.

重新雇用工人是单独迈出的一步,坚持“批准”的旗帜是不够的。

运行的工人必须消耗答案,应用到待处理的准确请求中,记录答复的来源,然后从邮箱中取出请求.

如果工人在这些步骤之间发生碰撞,恢复应能够确定答案是排队、应用还是完全解决。

答复来源问题。

用户批准,自动政策和系统拒绝不是同一个审计事件,即使它们都解锁了同一个未来.

当许可事件流消失时,安全行为不是假设批准.

尚未完成的工作应当关闭或有明确的理由取消。

否则,运输失败就会悄悄地变成更广泛的权威。

一旦协议存在,UI就是容易的部分,手机UI真的可以成为两个按钮:批准和拒绝.

但这些按钮是最后5%。

困难的部分是使请求具有耐用性,路由正确会话,重放安全性,可审计性,有约束性,并关闭故障.

还有一个界限值得明确:应用程序一级的工具核准不是操作系统安全赠款。

远程控制器可以批准应用程序已经能够执行的代理动作.

它不能合法地制造操作系统没有给予的无障碍,屏幕记录或类似的主机权限.

我建了BitFun, 这就是我们如何处理离散的工作批准:目标拥有一个持续的许可信箱;控制员通过请求ID回答;工人用其源头应用答复并标记它解决了.

同样的权限事件随后可以到达桌面和远程控制表面而无需使控制器成为运行时间.

执行情况在此开放来源:https://github.com/GCWing/BitFu

分享