过度宽松SAS令牌对PC Manager供应链的潜在影响分析

本文详细分析了ZDI-23-1527和ZDI-23-1528两个漏洞,探讨了过度宽松的SAS令牌如何可能被攻击者利用来劫持Microsoft PC Manager的供应链,包括通过WinGet软件包和官方子域名的攻击场景,并提供了检测和防护建议。

ZDI-23-1527和ZDI-23-1528:过度宽松SAS令牌对PC Manager供应链的潜在影响

摘要

本博客探讨了两种可能场景,攻击者可能通过WinGet存储库、“aka.ms” URL和Microsoft官方子域名,利用过度宽松的SAS令牌劫持PC Manager版本发布。

如果攻击得以实施,网络犯罪分子可能破坏软件供应链以分发恶意软件,允许他们替换软件版本,并更改分发的PC Manager可执行文件。

本博客中详述的问题已向Microsoft报告并得到解决。本博客详细介绍了如何避免类似潜在危害的建议。

本博客记录了2023年进行的安全研究成果。Microsoft此后提供了额外指导并更新了Azure赏金计划的参与规则。本博客仅用于教育目的。

介绍

在本博客中,我们研究了Microsoft面向公众资产中过度宽松的云服务凭据,并评估了它们对软件供应链和软件完整性的潜在影响。我们通过探索涉及PC Manager的两种场景来实现这一点,PC Manager是一种旨在帮助优化和管理Windows计算机的工具。PC Manager包括清理临时文件、管理启动程序、监控系统健康状况和提高整体性能的功能,旨在为用户提供维护机器效率和安全性的直接方法。

我们探索的两种场景包括一种与官方PC Manager网站相关,另一种与WinGet包管理器相关。两个实例都涉及过度宽松的共享访问签名(SAS)令牌,如果被滥用,可能允许未经授权修改PC Manager版本。这些未经授权的修改可用于影响软件分发过程的信任,从而对依赖开源包管理器和官方受信任资源的用户构成风险。请注意,这些问题已向Microsoft报告并得到解决。

为了帮助解决本博客将提出的挑战,我们还将分享检测和追踪策略,防御者可以在此基础上识别过度宽松的SAS令牌。本博客强调了保护云凭据以保护软件完整性和更广泛软件供应链的重要性,特别是在通过官方和开源渠道使用云服务进行软件分发的环境中。

本博客记录了2023年进行的安全研究成果。Microsoft此后提供了额外指导并更新了Azure赏金计划的参与规则。本博客中记录的工具和技术现在可能被最新的赏金参与规则禁止。我们建议在进行类似安全研究之前熟悉Microsoft漏洞赏金计划中概述的最新参与规则。应注意,本博客仅用于教育目的。Trend Micro不宽恕不道德或非法活动。

ZDI-23-1527:通过WinGet包劫持PC Manager

WinGet是为Windows操作系统构建的包管理器,允许用户使用WinGet CLI安装WinGet包。包定义在Windows清单中明确定义,而YAML文件可以在GitHub存储库microsoft/winget-pkgs中找到。图1显示了2023年9月的Microsoft PC Manager清单。图2显示WinGet包清单模式在Microsoft官方文档中有明确定义。

图1. 2023年9月Microsoft PC Manager的WinGet清单

图2. WinGet包清单模式

在PC Manager的WinGet清单中,InstallerUrl的值如下所示: https://pcmanager.officeplus.cn/mvp/10000/54247/MSPCManagerOffline_20230918.54247.exe?sv=2021-10-04&se=2024-03-16T09:17:53Z&sr=c&sp=rwdl&sig=qIe380lbv19nAKzFkC1EBBLzQzhtuZwG/M1uyHLCItc=

当用户尝试安装名为Microsoft.PCManager.CN的包时,WinGet CLI将获取此清单并解析不同字段。然后,基于InstallerUrl的值,如果InstallerSha256匹配,它将下载并运行可执行文件。

注意URL参数,它们是共享访问签名(SAS)令牌的一部分。SAS令牌是签名URL,帮助委托访问Azure存储帐户以及可选参数,以指定可以发起请求的支持IP地址或地址范围、可以发出请求的支持协议,或与请求关联的可选访问策略标识符。有三种类型的SAS令牌:

  • 用户委托SAS - 使用Microsoft Entra ID凭据保护,最大有效期为7天
  • 服务SAS – 使用帐户密钥保护,最大有效期为9,999年
  • 帐户SAS – 使用帐户密钥保护,最大有效期为9,999年

资源: https://pcmanager.officeplus.cn/mvp/10000/54247/MSPCManagerOffline_20230918.54247.exe

SAS令牌: sv=2021-10-04&se=2024-03-16T09:17:53Z&sr=c&sp=rwdl&sig=qle380lbv19nAKzFkC1EBBLzQzhtuZwG/M1uyHLCItc=

SAS令牌URL参数在官方文档中有明确定义。WinGet存储库中的SAS令牌(如上代码所示)是一个服务SAS令牌,具有以下属性:

参数 详情
sv 2021-10-04 此字段包含共享访问签名的服务版本。此值指定此共享访问签名使用的共享密钥授权版本(在签名字段中)。它还指定使用此共享访问签名发出的请求的服务版本。
se 2024-03-16T09:17:53Z 共享访问签名失效的时间,以接受的ISO 8601 UTC格式之一表示(在这种情况下,为2024年3月16日)。
sr c 可以使用令牌访问的资源。在此实例中,授予对容器中任何blob的内容和元数据的访问权限。
sp rwdl 与共享访问签名关联的权限。用户仅限于权限允许的操作。令牌授予对容器及其blob的读取、写入、删除和列出权限。
sig qIe380lbv19nAKzFkC1EBBLzQzhtuZwG/M1uyHLCItc= 签名是基于哈希的消息认证码(HMAC),通过对字符串到签名和密钥使用SHA256算法计算,然后使用Base-64编码进行编码。密钥是存储帐户的访问密钥,用于帐户和服务SAS令牌。

表1. 服务SAS令牌的属性

鉴于SAS令牌在发现时的权限和有效性,我们能够找到用于获取PC Manager可执行文件的存储帐户。下面错误消息中的UriPath键显示了Azure中国区域中名为distributestorage的存储帐户(基于主机值blob.core.chinacloudapi.cn)。

图3. 显示来自Azure中国的存储帐户的错误消息

拥有存储帐户主机名和SAS令牌,攻击者可以使用Azure Storage Explorer或AzCopy工具验证SAS令牌授予的读取、写入、删除、列出操作。

此时我们想指出,Trend Research员工在进行研究时遵循严格指南。在调查此问题时,我们没有对不完全属于我们自己的数据进行任何未经授权的修改。在整个调查过程中,我们与Microsoft密切合作,以确定我们发现的影

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计