摘要

  • 攻击者可以在自己控制的终端发起完全合法的跨设备流程,再把真实验证码或验证入口交给受害者;受害者在官方页面完成 MFA 后,令牌仍回到攻击者的终端。
  • 安全证据必须在批准前绑定发起者、客户端、消费设备、资源、权限范围、具体动作和后果;事后还要证明撤销、事件传播与会话终止抵达每一个资源端。

设想一台会议室大屏显示“请用手机完成登录”。所谓技术支持人员随后发来一段验证码。员工在受管手机上打开官方网站,用通行密钥确认身份,并看到熟悉的服务品牌,于是批准。大屏没有登录;得到访问权的是“技术支持”事先打开的另一台设备。

这次流程里没有假网站。认证服务器没有被攻破。MFA 也没有失效。真正缺席的是对请求来源的认证。

RFC 10027 于 2026 年 8 月以 BCP 247 发布。它区分跨设备授权与跨设备会话转移,并分析跨设备跨协议攻击与跨设备同协议攻击。两者都利用同一处断层:消费设备负责发起请求,授权设备负责让人登录和同意,而连接两者的上下文通道没有得到认证。

验证码只能指向请求,不能证明请求来自谁

RFC 8628 为输入受限设备定义 OAuth 2.0 设备授权流程。客户端取得设备码和用户码,向用户展示验证入口,并轮询授权服务器等待结果。电视、命令行工具和无键盘终端因此不必直接承载浏览器登录。

代价是:那段由人转移的信息可以被换一种故事重新解释。短时、一次性、唯一验证码能压缩猜测和重放窗口,却不能证明是谁让用户输入。实时攻击者可以先完成话术铺垫,再即时申请新码,并在有效期内拿走第一次批准。

OAuth 2.0 把客户端、资源所有者、授权服务器和资源服务器分开;跨设备场景又把人的认知放在这些角色之间。PKCE 能证明兑换授权码的客户端持有最初的验证器。但当最初客户端就是攻击者时,PKCE 只会更严格地把令牌交还给攻击者设备,并不证明用户想授权它。

强认证证明“谁按了批准”,不证明“批准了谁的请求”

WebAuthn Level 3 能提供与来源绑定、抗钓鱼的认证。用户可能全程停留在正确域名,使用硬件保护的凭据,也从未泄露密码。这些证据证明了人的身份和认证端点,却不自动包含远端设备、请求方、目标资源、权限范围与不可逆后果。

因此,“MFA 成功”不能被直接计入消费设备可信度。RFC 10027 明确建议:只有设备限制使更强方案不可行时才使用 RFC 8628 设备流程,并应避免把它用于敏感、高价值或业务关键资源。

预注册消费设备、先认证再发起,都能在产品和硬件允许时阻止任意设备创建请求。距离或邻近性检查可以增加成本,却不是身份:移动网络和 Wi‑Fi 会让近端看起来很远,VPN、转发和位置伪造又能让远端看起来很近,精确采集还会带来隐私成本。

带外确认与请求发起验证也不是万能保险。只有当所展示的设备、资源、权限和动作确实绑定到同一请求 ID,且第二通道不只是另一段可转发信息时,它们才增加独立证据。日志要保留“核对了什么、由谁核对、精度多高、绑定到哪次请求”,而不是只记一个通过标志。

令牌约束保护使用路径,无法改写错误同意

DPoP 把访问令牌约束到客户端持有的密钥,可降低令牌被复制后的可移植性。但若攻击者控制被授权的消费设备,也控制那把密钥,DPoP 会忠实保障“只有攻击者设备能使用这份误授权”。RFC 9700 对 OAuth 2.0 的系统性加固同样重要,却无法从密码学结果倒推出人的真实意图。

OpenID CIBA 不要求用户转移二维码或用户码,因此对这一类通道攻击更不敏感。不过,只要请求方知道用户标识,就仍可能制造授权提示;批量请求、批准疲劳和假冒客服诱导依然存在。

事故响应还跨越更多执行面。令牌内省 让资源服务器查询状态,令牌撤销 提供失效信号,CAEP 传播持续访问评估事件。但撤销接口返回成功,只说明信号被接收;它不证明缓存状态、派生会话、刷新令牌家族和所有依赖资源都已终止。

建立请求上下文账本

每次流程至少应保存:请求 ID 与发起时间、发起者、client ID 与软件版本、消费设备身份及注册/信任状态、授权设备和认证方式、用户码或图形载体的哈希与寿命、转移通道、邻近信号,以及批准界面实际展示的请求方、设备、资源、权限、动作、目的地和不可逆后果。

批准后,再把令牌家族、确认密钥与各资源服务器的使用记录连接起来;分别保存异常、拒绝、内省、撤销、CAEP 发送和确认、以及会话终止的正向证据。以下状态不能合并:真人在真实服务器完成认证;真人批准了某个码关联的请求;发起设备经过识别和信任;用户看到了关键后果;只有预期设备使用了权力;补救最终关闭了全部会话。

Heng Lu 关于运行代码优先的判断在这里尤其直接:书面策略不能取代客户端和资源服务器实际放行的结果。他提出的最小初始规范与本地后续决策适合定义一套窄而统一的上下文证据契约,同时允许不同产品选择同设备、设备信任或邻近机制。他对形式控制与实际控制的区分则指出权力落点:授权服务器签发形式权利,持有客户端密钥并维持资源会话的一方拥有实际控制。

手机能证明是谁批准。只有绑定后的上下文与下游执行证据,才能证明批准给了谁。