笔者与近日从互联网应用安全提供商知道创宇安全研究团队处得悉,目前有一项严重危害用户隐私的漏洞刚刚被发现,包括旅游,招聘,娱乐,SNS交友,各大电商等各类网站均会被影响。经知道创宇安全研究团队测试,该安全漏洞在国内使用第三方登录机制的网站中普遍存在,甚至知名的安全厂商360的网站平台以及360浏览器也存在这个问题。由于此类攻击不受同源策略等浏览器的安全限制,且不易被目标发现,因此危害严重。一旦被利用,用户的帐号会被永久劫持,账户信息会被任意浏览和改动。由于之前出现过关联类漏洞,疑似已经有攻击者开始利用这个漏洞进行实际攻击,请广大网民确认自身账号信息是否已遭恶意劫持,及时采取措施保护自身账号。
经知道创宇安全研究团队确认,此漏洞是由于开发人员没有正确按照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)对于普通用户:
定期查看重要网站的第三方帐号绑定页面,检查是否有陌生的其他帐号绑定到自身账户,如果发现应立即取消绑定或授权。