作者:腾讯安全平台部研发安全团队 Martin
16日凌晨,众多推特“大V”突然集体转发诈骗信息 —— “只要给特定账号汇入等值1000美元的比特币,就能获得双倍返还”,受影响账户包括:前总统奥巴马、比尔盖茨、巴菲特、马斯克和苹果公司等。
推特官方很快介入调查,并于三小时后给出初步调查结果:“员工受钓鱼攻击,内部系统和工具被攻击者滥用”。
事件很快攻占各大媒体头条,对平台安全的质疑声四起。
并由此引发蝴蝶效应,推特面临公关危机,股价受累。当今万物互联,作为重要媒介,越来越多政商名流、企业等通过推特等社交媒体宣布重大政策决定,此类攻击甚至有可能掀起现实世界的乱局。
从公开信息分析,本次安全事件与“认证鉴权、访问控制”相关。历史上,通过内部安全测试、TSRC等渠道,腾讯安全团队曾提前发现并处置过多起类似安全风险。
2013年,腾讯微博也曾差点经历类似的“惊魂时刻”。因存在一个CGI鉴权漏洞,若被攻击者利用,能以任何人的账号发微博。当时漏洞由国内著名白帽子、知道创宇CSO SuperHei发现并提交给腾讯安全应急响应中心(TSRC),接到报告后TSRC很快就联合业务修复了漏洞。同时内部展开排查,又修复了数个类似问题。
图:该次事件的TSRC应急响应过程
为保护用户隐私数据,近年来,腾讯各团队积极开展安全内建。透过本次事件,结合内部实践经验,从系统研发及运营视角,我们简单梳理了风险及建议。
管理系统在内网一定“高枕无忧”吗?本次推特的安全事件,无疑敲响警钟 —— 风险也有可能来自内部。甚至有时内部“作恶”并非是有意的,员工可能成为攻击者的“提线木偶”。从披露的推特管理后台看,此次事件暴露出许多系统设计可吸取的教训。
安全,再怎么严谨都不为过。当前,业界推行的“零信任”安全理念,或许是更好的安全防御思路。即:每个用户、设备、服务或应用程序都是不可信任的,必须经历身份和访问管理过程才能获得最低级别的信任和关联访问特权。这意味着,不应将内外网作为是否可信的“边界”,访问控制应精细到个体级别,尤其是特权接口、敏感数据。
从应用视角看,原则上,只有用户能接触、操作自身的数据。如因业务需要,员工或运营系统访问、操作敏感接口和数据,均应审批并留存日志,方便定期审计、回溯。
在业界,相关理念已有实践。如,针对云原生服务架构,Google提出的BeyondProd(https://cloud.google.com/security/beyondprod)模型。相关要点可概括为:
异曲同工,类似理念在腾讯业务也已有落地实践,如:微信 —— 全程票据系统。是由微信团队设计的一套数据保护机制,其方案核心是:用户登录后,后台会下发一个票据给客户端,客户端每次请求带上票据,请求在后台服务的整个处理链条中,所有对核心数据服务的访问,都会被校验票据是否合法,非法请求会被拒绝,从而保障用户隐私数据只能用户通过自己的客户端发起操作来访问。
一如前文所述的“腾讯微博”案例,业务中的权限控制类逻辑漏洞,也能产生类似此次事件的效果。从TSRC历史报告来看,由于此类问题与业务逻辑高度相关,无法设计通用的自动化检测手段,正逐年成为各类业务面临的首要风险。
漏洞主要分三类:
我们建议,业务开发阶段遵循以下原则:
1) “零信任”,系统/接口开启默认鉴权。除非敏感功能外,所有接口/功能校验权限;
2) 禁止将参数值作为判断用户身份或权限的依据。应从登录态判断用户并根据用户角色、权限等级进行鉴权;
3) 健全访问控制相关的人工及自动化测试用例。开发过程中,按功能设计需求,编写单元测试用例进行自测。对于核心的业务逻辑,采用自动化测试用例的方式覆盖,避免持续的变更过程中因疏忽导致漏洞产生;
在此背景下,结合Google BeyondProd和微信全程票据方案,安全团队也正与公司系统框架中台协同预研 —— RPC票据。我们认为它可能会是一种更为彻底、有效的数据保护和逻辑漏洞收敛手段。相关技术细节与实践经验,敬请期待后续TSRC分享。方案可简述为:
“应对一场被3亿人关注的安全事件,一点也不好笑”。曾负责推特安全团队的Charlie Miller如是说。
作为从事安全防御方向的同行,深知其中不易。有时攻击只要击破一个点,而防御往往需要考虑千百种情况,往往面临更大挑战和不确定因素。正如Google安全总监Heather对此次事件评论的那样“这就是为什么我看到同行面临困境时,一点也笑不出来的原因。”。
居安思危,在访问控制方向的安全防御建设,仍任重道远。欢迎与我们携手,一同探索零信任、数据保护、逻辑漏洞收敛方面的方案与经验。
参考资料
[1]《从无到有:微信后台系统的演进之路》
https://www.infoq.cn/article/the-road-of-the-growth-weixin-background/
[2] Google BeyondProd
https://cloud.google.com/security/beyondprod