郑丽媛
多达38TB的微软内部数据遭泄露,起因竟只是一个小小的配置错误?——确实如此,你没看错。
本周云安全初创公司WizResearch发布了一则公告:微软AI研究团队在GitHub上发布大量开源培训数据时,意外暴露了38TB的额外私人数据,其中还有两名员工工作站的磁盘备份,包括了机密信息、私钥、密码和超过条内部MicrosoftTeams消息。
而这一切的源头,仅是一个配置错误的共享访问签名(SAS)令牌。
38TB内部数据遭泄露!
据Wiz介绍,微软这场规模庞大的数据泄露,早在年7月就存在了,只是在今年6月才被Wiz发现。
作为Wiz研究团队工作的一部分,他们会查找云托管数据意外暴露的情况,在互联网上扫描配置错误的存储容器。在此过程中,今年6月Wiz发现了一个属于微软AI研究部门的GitHub存储库。
这个GitHub存储库提供了用于图像识别的开源代码和AI模型,并引导开发者前往微软云存储系统AzureStorage的URL,来下载相关代码和开源模型:
乍看之下,这个URL没有任何问题,但Wiz却发现:该URL中包含了一个访问范围过于宽松的共享访问签名(SAS)令牌,被错误配置为授予整个Azure存储账户的权限——也就是说,点击该链接的人不仅可以访问开源模型,更可以共享该Azure存储账户中的全部数据!
根据Wiz扫描显示,该Azure存储账户包含38TB的额外数据,其中包括微软员工的个人电脑备份。这些备份包含敏感的个人数据,包括微软服务的密码、密钥以及来自名微软员工的多条内部MicrosoftTeams消息。
在计算机备份中找到的一小部分敏感文件样本
两名微软员工之间经过编辑的团队对话
“权限过大”的SAS令牌
说了这么久,那SAS令牌到底是什么呢?具体来说,共有3种类型的SAS令牌:账户SAS、服务SAS和用户授权SAS。而此次用于微软存储库中的,正是账户SAS令牌。
在Azure中,SAS令牌是一个经过签名的URL,可授予对Azure存储数据的访问权限,其访问范围和到期时间都可以由用户自定义:
权限可以选择“只读”和“完全控制”,范围可以是单个文件、容器或整个存储账户;
到期时间也完全可定制,用户可以创建永不过期的访问令牌。
生成帐户SAS令牌的过程很简单,用户只需配置令牌的范围、权限和到期日期,即可生成令牌。在后台,浏览器会从Azure下载账户密钥,并用密钥签署生成的令牌——整个过程在客户端完成,既不是Azure发起的事件,生成的令牌也不是Azure对象。
但也正因如此,一旦用户创建了一个权限过高且还没过期的SAS令牌时,管理员就很难发现。
例如,年7月20日微软AI开发人员首次将SAS令牌提交到GitHub存储库,并把权限到期日设为年10月5日;到了年10月6日,又把SAS令牌到期日更新为年10月6日。
从时间上来看,微软的这个SAS令牌没什么问题;但从权限范围和级别来看,其风险就很大了:不仅可以访问存储账户中的全部数据,该SAS令牌还被错误配置为“完全控制”权限而非“只读”权限。
这意味着,所有人不仅可以查看存储账户中的所有文件,都能随时删除、替换并向其中注入恶意内容。
对于这个隐患,Wiz联想到了最初这个GitHub存储库的目的:提供用于图像识别的开源代码和AI模型。Wiz分析称,存储库让用户从SAS链接下载模型数据文件,并将其输入脚本,该文件格式为ckpt,是TensorFlow库生成的一种格式,它使用Python的pickle格式化器进行格式化,而这种格式化器在设计上很容易执行任意代码。
对此,Wiz提出了一种假设:“也就是说,攻击者可以将恶意代码注入该存储账户中的所有AI模型,而每个信任微软GitHub存储库的用户都会因此受到感染。”
组织AI研究时,注意安全检查和保护措施
基于这种担忧,Wiz在6月22日就与微软分享了调查结果,两天后也就是6月24日,微软就撤销了该SAS令牌。到了7月7日,微软将新的SAS令牌上传至GitHub,并于8月16日完成了对潜在影响的内部调查。
不过值得注意的是,Wiz指出这个存储帐户似乎并没有直接暴露给公众:“事实上,这是一个私人存储账户。”
表面上看,微软开发人员使用了一种名为“SAS令牌”的Azure机制,允许创建一个可共享的链接,授予对Azure存储账户数据的访问权限。但Wiz表示:在检查时,该存储账户看起来仍然是完全私有的。
对于这个问题,微软安全响应中心也强调:“没有客户数据因此暴露,也没有其他内部服务因这个问题而面临风险。”微软表示,根据Wiz的研究结果,它已经扩展了GitHub的秘密扫描服务,该服务可以监控所有公开源代码的更改,以防明文暴露凭证和其他机密,包括任何可能具有过度许可权限或过期的SAS令牌。
尽管此次事件并未造成严重后果,但Wiz依旧认为,这件事提醒了工程师们,在组织AI研究时,必须充分考虑到所需的安全措施——毕竟像微软这样的科技巨头,也会因为一个错误配置导致大规模的数据泄露:
“随着数据科学家和工程师竞相将新的AI解决方案投入生产,他们处理的海量数据需要额外的安全检查和保护措施。由于许多开发团队需要处理海量数据、与同行共享数据或在公共开源项目上合作,像微软这样的案例越来越难以监控和避免。”
参考链接: