摘要
作为Wiz.io近期协调漏洞披露(CVD)报告的一部分,微软调查并处理了一起事件:一名微软员工在参与开源AI学习模型贡献时,在公开GitHub仓库中分享了包含内部存储账户过度宽松共享访问签名(SAS)令牌的blob存储URL。Wiz安全研究人员利用该令牌访问了存储账户中的信息。暴露数据包括两名前员工的工作站配置文件备份及其与同事的Microsoft Teams内部消息记录。未泄露客户数据,也未因该问题危及其他内部服务。客户无需采取额外措施。我们分享以下经验与最佳实践,以帮助客户避免类似事件。
SAS令牌提供了限制访问并允许特定客户端连接指定Azure存储资源的机制。本例中,微软研究人员在贡献开源AI学习模型时无意中将SAS令牌包含于blob存储URL,并在公开GitHub仓库中提供了该URL。Azure存储或SAS令牌功能本身不存在安全漏洞。与其他密钥类似,SAS令牌需正确创建和管理。我们正持续改进以强化SAS令牌功能,并持续评估服务以增强默认安全态势。
发现暴露后,Wiz于2023年6月22日向微软安全响应中心(MSRC)报告。MSRC随即联合相关研究与工程团队于6月24日撤销SAS令牌并阻止所有外部访问,缓解了问题。后续调查确认此次暴露未对客户造成风险。
改进未来检测机制
GitHub密钥扫描服务监控所有公开开源代码变更以检测凭据等明文暴露。该服务运行由微软提供的SAS检测,可标记指向敏感内容(如VHD和私有加密密钥)的Azure存储SAS URL。微软已扩展该检测范围至包含任何可能具有过度宽松过期时间或权限的SAS令牌。
微软还对微软拥有或关联组织及账户的所有公开仓库执行完整历史重新扫描。该系统检测到Wiz在“robust-models-transfer”仓库中识别的特定SAS URL,但错误标记为误报。根本原因已修复,系统现确认可检测并正确报告所有过度配置的SAS令牌。
理解SAS令牌、最佳实践与防范滥用
共享访问签名(SAS)提供了安全委托存储账户内数据访问的机制。与具有整个存储账户完全访问权限的共享密钥不同,SAS提供对客户端数据访问的精细控制。正确使用时,SAS可提升存储应用的安全性与性能。
例如,SAS令牌可用于限制:
- 客户端可访问的资源(特定容器、目录、blob或blob版本)
- 客户端可执行的操作(读取、写入、列表、删除)
- 客户端可访问的网络(HTTPS、IP地址)
- 客户端访问时长(开始时间、结束时间)
与任何基于密钥的认证机制类似,SAS可通过轮换父密钥随时撤销。此外,SAS支持容器级别的细粒度撤销,无需轮换存储账户密钥。
与任何密钥一样,SAS令牌需适当创建和处理。 Azure存储推荐以下SAS URL最佳实践:
- 应用最小权限原则:将SAS URL范围限定于客户端所需最小资源集(如单个blob),并限制为应用所需权限(如只读、只写)。
- 使用短期SAS:创建SAS时始终使用近期过期时间,并让客户端在需要时请求新SAS URL。Azure存储推荐所有SAS URL有效期1小时或更短。
- 谨慎处理SAS令牌:SAS URL授予数据访问权限,应视为应用密钥。仅向需要访问存储账户的客户端暴露SAS URL。
- 制定撤销计划:将SAS令牌与存储访问策略关联,实现容器内SAS的细粒度撤销。若SAS或共享密钥泄露,准备好移除存储访问策略或轮换存储账户密钥。
- 监控与审计应用:通过启用Azure Monitor和Azure存储日志跟踪存储账户请求授权方式。使用SAS过期策略检测使用长期SAS URL的客户端。
Azure存储致力于帮助客户保护数据资产,并将持续改进以在存储账户默认设置中编码这些最佳实践。
结论
再次强调,暴露信息仅涉及两名前微软员工及其工作站的独特信息。未泄露客户数据,也未因该问题危及其他微软服务。客户无需采取额外安全措施。
与任何密钥一样,SAS令牌需适当创建和处理。我们强烈建议客户遵循SAS令牌使用最佳实践以最小化意外访问或滥用风险。微软正持续改进检测与扫描工具集,主动识别过度配置SAS URL案例并强化默认安全态势。
我们感谢Wiz.io报告发现并提供调查机会。鼓励所有研究人员在协调漏洞披露(CVD)下与供应商合作,并遵守渗透测试参与规则,避免在安全研究中影响客户数据。向微软安全响应中心报告安全问题的研究人员也有资格参与微软漏洞赏金计划。
微软遵循CVD,系统且负责任地管理安全漏洞的发现、报告与修复。CVD使我们能与研究人员及更广泛安全社区协作,优先考虑用户安全与系统完整性。通过协调方法,我们可与研究人员合作确保潜在漏洞在公开前得到解决,降低利用风险。