C4.17.3Cross-user command injection设计研究

归属错误会让一人的动作被系统当作另一人发出的指令

别名: 归属错误 · 指令串户 · 跨用户误执行

概念解释

归属错误(misattribution)不是「手势没被认出」,而是手势被认对了、却记到了另一个人的会话上。甲正在确认支付、翻阅病历或拖动时间轴,乙的一次轻扫被当成甲的确认或拖动。对甲来说,界面在自己没做相应动作时跳了一步;对乙来说,一次无心或指向别人的动作产生了自己看不到的后果。错误的形态是跨用户的指令注入,不是识别率数字上的一次漏检。

机制

命令流水线通常是:检测到动作 → 分类 → 送到「当前会话」。若会话指针绑错人,分类器越自信,错误执行越干净,也越难被当事人用「再做一次」纠正——再做一次仍可能继续记在错误账户上。共享屏幕上后果尤其隐蔽:乙可能站在侧面,看不到甲的对话框,甲也看不到乙的手。手术导航、课堂答题器、家庭账号切换这类把「当前用户」与权限、隐私、计费绑在一起的场景,一次串户就会跨过本该隔离的边界。撤销栈若按会话分列,被注入的那一方甚至没有对应的撤销入口。

怎么研究

设计「一人处于高后果中间态、另一人做低后果或无关动作」的脚本,例如甲停在确认框、乙向同伴挥手。记录:错误命令是否执行、执行在谁的会话、甲是否察觉、乙是否知道自己触发了系统。把这类事件与「动作未被识别」分开编码。改变两人相对角度和屏幕朝向,观察可见性如何影响发现与报告延迟。不要只用总体准确率汇总,否则串户会被平均掉。

边界

若两人本来就在操作同一共享对象(一起拖一张地图、一起刷照片),「记到谁账上」的危害下降,问题转成并发编辑冲突。单用户头显里另一人的手不会进入同一输入流,这条错误形态不出现。危害随会话隔离强度而变:公共查询终端上的串户多半是恼人的跳页;绑定支付、电子病历或门禁时,同一次错误会变成安全事件。儿童模仿大人手势时,分类器往往「更对」,串户风险不降反升。

怎么落地

  • 在审计日志里单独记下「分类正确、用户错误」事件,不要并进识别失败计数。
  • 高后果步骤在执行前用发送者可感知的身份复核(高亮那个人、读出名字、或要求面向屏幕的短确认),阻断「侧面一只手完成了正面那个人的对话框」。
  • 让撤销落在被改动的那份会话上,并让被注入的一方能看到「刚才不是你的手」。用双人脚本走查支付、删除、提交,而不是只走单人快乐路径。

延伸

  • 同组C4.17.1 多人共处传感范围时,系统需要判定当前动作归属哪个人 · C4.17.2 归属判定依赖身份特征而非动作本身 · C4.17.4 仲裁规则需要对用户可预期,如先到先得、最近者优先
  • 相邻C4.27 手势与后果等级的解耦 · C4.30 旁人与第三方的处置
  • 站内检索misattribution · cross-user command · session isolation

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/C4.17.3