经知道创宇安全研究团队确认,此漏洞是由于开发人员没有正确按照OAuth2授权机制的开发文档使用OAuth2,导致攻击者能够实施跨站请求伪造(CSRF)通过第三方网站来劫持用户在目标网站的账户。
劫持流程:
虚拟测试:
攻击者想通过自己的微 博劫持并登录受害人的账户
如上图所示,正常的授权流程,用户点击授权后便不再可控,剩下的工作由第三方应用和授权服务器(资源提供方)进行交互来完成。而攻击者可以阻止授权流程的正常进行,将中间的关键URL截取下来,诱骗用户访问,成功后可以将受害人的账户绑定到攻击者的微 博账户上。此后,攻击者可以使用微 博的账户自由登入受害人的主站账户及浏览器账户,任意查看和修改用户的隐私数据。
受到OAuth2 CSRF漏洞影响的部分网站列表(测试后):
安全厂商:360网站 360浏览器 …
it媒体:CSDN 中关村在线 …
团购:糯米团购 …
资讯:果壳 …
购物分享:蘑菇街 …
电商:聚美优品 …
视频:优酷 乐视网 CNTV …
招聘:大街 …
婚介:百合网 …
轻博客:点点 …
SNS :开心网 …
知道创宇安全研究团队对于OAuth2 CSRF漏洞防御,建议如下:
1)对于开发人员:
1,授权过程中传递state随机哈希值,并在服务端进行判断。
2,在绑定过程中,应强制用户重新输入用户名密码确认绑定,不要直接读取当前用户session进行绑定。
3,限制带有Authorization code参数的请求仅能使用一次(避免重放攻击)
4,推荐使用Authorization Code方式进行授权,而不要使用Implicit Flow方式。这样access token会从授权服务器以响应体的形式返回而不会暴露在客户端。
2)对于普通用户:
定期查看重要网站的第三方帐号绑定页面,检查是否有陌生的其他帐号绑定到自身账户,如果发现应立即取消绑定或授权。