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。或者我后面单独出一篇文章深入分析一下。
后话
FB的漏洞时间曝光后,Facebook CEO马克·扎克伯格(Mark Zuckerberg)迅速对该事件作出回应,称:“这是个非常严重的安全问题,我们正在非常认真地对待。”
Facebook 是全球最大的社交平台,有22亿的用户。在创立至今的15年里,这家公司也较少发生黑客攻击导致信息泄漏的事件。严格来讲,较大规模和影响恶劣的黑客事件,仅发生过一两次。
2013年,某个程序员自己搞砸了代码,代码核验也未发现,导致超过600万用户的联系资料泄露。
大约在2014、15年,数据分析公司 Cambridge Analytica 滥用 FB 的开发者平台,对超过8700万用户进行非法的数据挖掘,出售给部分美国本土竞选的参选团队,用于干预大选,FB 的高层官员明知此事却没有任何作为。
今年年初,扎克伯格曾因这一丑闻出席国会听证会。FB 被迫接受调查,股价在当时一度蒸发数百亿美元。
如今调查仍未结束,FB 还没从 Cambridge Analytica 丑闻缓过劲来,就又发生了黑客入侵。
当然,严格来讲,FB 也是受害者。遗憾的是,同情它的人越来越少了。这次 FB 公告发出后,网上一片骂声,基本意思就是:
“费那么大劲研究如何挖掘我们的数据赚钱,怎么就不能多研究研究你们的漏洞。”
在事件发生后,美国主流媒体的报道中不约而同地引用了扎克伯格之前听证会上的宣誓:
“我们有责任保护你们的数据,如果我们没法做到,那么我们也不配给你们提供服务。”
参考资料:
Facebook 又被黑客涮了,这次又坑了快一亿用户!(https://www.pingwest.com/a/177864)
OAuth研究&学习笔记(http://www.tasfa.cn/index.php/2016/03/26/note_of_oauth/)
【本文是51CTO专栏作者Hollis的原创文章,作者微信公众号Hollis(ID:hollischuang)】