2009 年 4 月 23 日
所有使用 OAuth 授权流程(也称“3-legged OAuth”)的符合 OAuth Core 1.0 协议的标准实现都受到影响。
攻击从攻击者访问(诚实的)消费者网站开始,视情况登录他自己的账户。攻击者启动 OAuth 授权流程,但不是按照从消费者那里进行重定向以获取授权,而是保存授权请求 URI(其中包含请求令牌)。稍后,攻击者说服受害者点击包含授权请求 URI 的链接,以批准向受害者的受保护资源授予(诚实的)消费者的访问权限。
通过点击链接,受害者将继续攻击者发起的请求,包括(诚实的)消费者向攻击者颁发的请求令牌。请注意,受害者被重定向到服务提供商的合法批准页面,并由服务提供商提示批准(诚实的)消费者。而受害者无法检测到攻击正在进行。
在受害者授予批准后,攻击者可以使用保存的请求令牌完成授权流程,并访问(诚实的)消费者网站作为其服务的一部分所公开的任何受保护资源。如果攻击者在(诚实的)消费者网站上拥有账户,则该访问权限可能会在未来的访问中持续存在。
消费者网站上的XSRF 保护措施无法缓解此攻击。
建议服务提供商立即实施适当的监控以检测漏洞利用尝试。
已发布 OAuth Core 1.0 修订版 A 规范以解决此问题。强烈建议所有实现更新到新版本。
建议服务提供商向其用户提供足够的提示信息,告知他们从不受信任的位置启动授权流程的风险(请参阅下文的建议措辞)。此警告应显示在尚未升级到修复此问题的规范版本的消费者网站的授权界面中。如果服务提供商和消费者已就其他缓解程序达成一致,则可以取消此警告。
授权页面上建议的措辞
“此网站已在 SERVICE_PROVIDER_DOMAIN_NAME 中注册,以进行授权请求,但尚未配置为安全地发送请求。如果您授权访问,但并未在 CONSUMER_DOMAIN_NAME 中启动此请求,可能导致 CONSUMER_DOMAIN_NAME 的其他用户访问您的数据。我们建议您拒绝访问,除非您确信您直接在 CONSUMER_DOMAIN_NAME 中启动了此请求。”
没有报告利用此攻击的安全漏洞。