概述
本文详细介绍了Rhino安全实验室在AWS WorkSpaces桌面客户端中发现的一个漏洞,追踪为CVE-2021-38112,如果受害者从他们的浏览器中打开恶意的WorkSpacesURI,则可以利用该漏洞远程执行命令。Rhino向Amazon报告了该漏洞,并立即对其进行了修复。3.1.9之前的AWS WorkSpaces桌面客户端版本受该漏洞影响。
利用此AWS WorkSpaces漏洞能够在已安装WorkSpace客户端的系统上远程执行代码。该漏洞还允许攻击者在WorkSpaces客户端中配置代理设置,或在受害者合法访问其WorkSpaces环境时键盘记录用户名和密码,从而进入AWS WorkSpaces主机。
Amazon WorkSpaces
Amazon WorkSpaces是一项完全托管的持久桌面虚拟化服务,使用户能够随时随地从任何受支持的设备上访问他们需要的数据、应用程序和资源。可以使用Amazon WorkSpaces在短短几分钟内配置Windows或Linux桌面,并迅速扩大规模以向全球各地的员工提供成千上万的桌面。AmazonWorkSpaces部署在亚马逊虚拟私有云(VPC)内,用户数据不会存储在本地设备上。这有助于提高用户数据的安全性并降低整体风险。
访问Amazon WorkSpaces的方式有很多,其中一种是使用桌面客户端,它能够直接连接到WorkSpace。桌面客户端可以方便地注册自定义 URI,用户只需单击浏览器中的链接即可快速启动到 WorkSpace。
AWS RCE漏洞细节
当 WorkSpaces 桌面客户端安装在 Windows 计算机上时,它会向系统注册一个自定义 URI (workspaces://)。这允许通过在浏览器中访问自定义 URI 来启动 WorkSpaces。在处理URI的过程中,WorkSpaces应用程序未能对参数进行清理,这些参数随后在向 WorkSpace 进行身份验证时被传递到命令行。由于 WorkSpaces 客户端基于 Chromium 嵌入式框架 (CEF),这允许将参数注入到命令行中,滥用已知的调试CEF命令行参数(-gpu-launcher),最终导致任意命令被执行。
当通过自定义 URI 启动应用程序时,浏览器会将 URI 作为第一个参数传递给命令行上的应用程序,然后应用程序可以根据需要处理 URI。在浏览器中,通过在 URI 中对特殊字符进行 URL 编码,在应用程序初始启动时阻止命令和参数注入,防止诸如双引号或其他命令行控制字符之类的东西被注入以脱离预期的命令。当 WorkSpaces URL 解码并使用 URI 参数中的参数来启动新命令而不清理参数时,Amazon WorkSpaces 就会出现安全问题,可以注入任意参数。
来自反编译的WorkSpacesClient.Common.dll的UriSchemeGateway类,它处理自定义URI
可以看到从URI字符串中解析出username、RegCode和 host等各种参数。然后使用Uri.UnescapeDataString 方法对每个参数进行 URL 解码,然后将其添加到 startUpConfigDto 对象中。之后, startUpConfigDto 对象被传递给 ProcessStartUpConfigDto 以启动该进程。
这里唯一的问题是在启动过程中验证 RegCode 参数以确保它是有效的 WorkSpaces 注册码。但是任何拥有 AWS 账户的人都可以使用他们自己的有效 WorkSpaces 注册码来满足这一要求。为此,只需配置一个 AWS Managed Active Directory 用户,并为该用户设置一个WorkSpace。
生成一个 URI 来执行命令现在变得非常简单。在 AWS 账户中设置 AWS WorkSpaces 并为用户获取有效的注册码。注入“-gpu-launcher”参数,指定一个 CEF 将执行的任意命令。
workspaces://anything%20--gpu-launcher=%22calc.exe%22@REGISTRATION_CODE
可以在Process Monitor中看到有两个 workspaces.exe 的执行情况。第一个是从浏览器初始启动,命令行和预期的一样,是URL 编码的。
在Process Monitor 中首次启动 WorkSpaces
"C:\\Program Files (x86)\\Amazon Web Services,Inc\\Amazon WorkSpaces\\workspaces.exe" --uri“workspaces://anything%20--gpu-launcher=%22calc.exe%22@REGISTRATION_CODE”
然后,workspaces.exe 进程会使用其他参数启动,包括我们注入的已被 URL 解码的参数。
在Process Monitor 中二次启动 WorkSpaces
"C:\\Program Files (x86)\\Amazon Web Services,Inc\\Amazon WorkSpaces\\workspaces.exe" --ws-pipe-name UUID --ws-pipe-handle 4576 -r REGISTRATION_CODE--auth-url https://
我们提供了AWS WorkSpaces RCE的PoC,显示了在浏览器中打开一个精心制作的页面时的所有情况。虽然在默认情况下,用户需要允许WorkSpaces应用程序从浏览器中打开,但如果用户以前曾接受过这个提示,总是允许这样做,这将不需要用户交互。
结论
AWS已在3.1.9 固定版本中修复了此漏洞(2021 年 6 月 29 日发布),建议相关受影响用户及时升级更新。
此外,自定义URI可能很有用,对用户来说很方便,可以使他们更容易开始使用一些应用程序。尽管浏览器在确保自定义URI在传递到命令行之前被编码,以帮助防止参数和命令注入,但重要的是要考虑这些值在应用程序流程的其余部分是如何处理的。在使用URI参数或值的过程中需保持谨慎,因为输入仍然是不可信任的。
通用安全建议
定期更新软件、程序和应用程序,确保应用程序是最新的,以保护系统免受漏洞利用。
加强系统和网络的访问控制,修改防火墙策略,关闭非必要的应用端口或服务,减少将危险服务(如SSH、RDP等)暴露到公网,以减少攻击面。
加强系统用户和权限管理,启用多因素认证机制和最小权限原则,用户和软件权限应保持在最低限度;启用强密码策略并设置为定期修改。
预防0day漏洞和恶意软件,安全产品实时更新最新规则或相关防护指标。
使用最新、全面的威胁情报信息,监控网络和安全事件,以快速响应攻击。
原文链接:
https://rhinosecuritylabs.com/aws/cve-2021-38112-aws-workspaces-rce/?__cf_chl_jschl_tk__=pmd_XcEFdL6Sp_PtLOYR.E6GQyPehV7m3LXviDvdyKbv.qI-1632281490-0-gqNtZGzNAfujcnBszQhR
声明:本文来自维他命安全,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。