2018年9月28日上午9点41分,Facebook在其新闻官网(https://newsroom.fb.com )上发文表示:该公司发现了一个安全漏洞,黑客可利用这个漏洞来获取信息,可能导致近5000万用户信息的泄露。
在这篇新闻稿中,FB产品管理副总裁盖·罗森 (Guy Rosen) 撰文表示:
1、技术团队在9月25日下午发现了这个漏洞。
2、此安全漏洞是2017年7月份出现的,在2018年9月25日被识别、并于9月27日被侦测到。
3、目前 FB 基本确定,已经有黑客利用这个漏洞发动攻击。
4、9月27日早间,大约有5000万个Facebook账户受到攻击。
5、在问题发现后,FB对受影响的5000万用户的访问信息进行了重置。
6、除了受影响的5000万用户外,FB还对另外4000万用户同样做了同样的重置操作。总计影响用户9000万。
7、Facebook在9.26晚上称其已经修复了这个漏洞,并已通知美国联邦调查局(FBI)和爱尔兰数据保护委员会(Irish Data Protection Commission)等执法机关。
在披露这一消息之前,Facebook股价已经下跌了1.5%左右,消息传出后进一步走低,到收盘时下跌2.59%报164.46美元,盘中一度触及162.56美元的低点。
漏洞详情
这个安全漏洞存在于 Facebook 的“View As”功能的代码中。
由于 FB 的隐私设置极为繁琐,用户经常不知道别人看得见、看不见自己发布的某些信息。
View As 这个功能可以让用户以第三人称观看自己的账户,确认隐私设置是否符合自己要求。
FB 透露,利用这个漏洞黑客窃取了用户的“访问令牌”(access token)。
访问令牌的作用是为用户保存密码,这样用户就不用每次登陆都输一次密码验证身份。
取得令牌后,黑客可以黑进别人的账户,看到设置为不对外公开的帖文和信息。
作为应对,FB 对受到漏洞影响的5000万用户以及可能成为进一步攻击目标的另外4000万用户,进行了访问令牌重设。
什么是access token
通过官方给出的资料,我们无法确认黑客利用的漏洞中的access token到底是如何使用和泄露的。
不过我们可以拿OAuth2来介绍一下access token的作用和如何保证安全。
OAuth 2 是一种授权框架,允许第三方应用通过用户授权的形式访问服务中的用户信息,最常见的场景是授权登录;再复杂一点的比如第三方应用通过 Github 给开发者提供的接口访问权限内的用户信息或仓库信息。OAuth2 广泛应用于 web 、桌面应用、移动 APP 的第三方服务提供了授权验证机制,以此实现不同应用间的数据访问权限。
OAuth2中最典型的Authorization Code 授权模式,其大致流程如下:
我们把OAuth2的整个认证过程大致分为三个阶段。
第一阶段主要是向用户取得授权许可,对应图中的第1、2步;
第二阶段主要是申请访问令牌(access_token),对应图中的第3、4步;
第三阶段就是使用access_token获取用户数据,对应图中的第5、6步。这一过程中涉及了不少敏感参数和数据,access_token某种程度上来讲就是用户的session id。
也就是说,整个认证过程中,一旦黑客获取到了access_token,即使他不知道你的用户名和密码,也可以访问到你的用户数据。
OAuth2到底安不安全
可以这么说,OAuth2协议本身是相对安全的,至少比纯用户名、密码形式的登录要安全的多。
如果发生像FB那样的access token泄露问题的话,至少密码是没有泄露的,只要网站重置用户的access token,那么之前的旧的access token就会失效。这种情况,要比用户名和密码泄露影响会小一些。
但是,由于OAuth引入的漏洞也很多,大多是因为使用不当导致的。乌云曾披露过很多很多由于OAuth实施不正确导致的网站漏洞:
CSRF劫持第三方账号
WooYun:大麦网存在账号被劫持风险
WooYun:美丽说oauth漏洞可劫持账号
对参数没有进行验证泄露code
WooYun:腾讯微博开放平台openid、openkey截取
WooYun:搜狐微博OAuth2.0获取Authorization Code过程隐患
重放攻击
Inwatch-InHealth客户端接口若干安全bug打包
应用冒充,获取token控制用户账户
@囧虎张建伟,新浪微博Android客户端SSO授权认证缺陷
WooYun:腾讯开放平台单点登录SSO方案设计缺陷导致钓鱼风险
直接用平台方用户名和密码获取access token
WooYun:开心网android客户端暴力破解漏洞,测试2000帐号,成功132个
315晚会:安卓系统手机应用软件严重窃取用户资料
关于OAuth2的具体安全防范这里就不展开了。感兴趣的朋友可以自行Google。或者我后面单独出一篇文章深入分析一下。
欢迎工作一到五年的Java工程师朋友们加入Java架构开发:744677563
群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!
网友评论