受影响的产品
AWS VPN 客户端应用程序存在一个任意文件写入漏洞,可能导致特权升级和信息泄露。该漏洞允许用户的 Net-NTLMv2 哈希通过 VPN 配置文件中的 UNC 路径泄露。确认受影响的版本为 2.0.0,已在版本 3.0.0 中修复。为了解决这些漏洞,请升级到版本 3.0.0,您可以在此处下载。
供应商: 亚马逊网络服务 (AWS)
产品: AWS VPN 客户端 (Windows)
确认受影响版本: 2.0.0
修复版本: 3.0.0
CVE-2022-25166: 作为 SYSTEM 的任意文件写入
在验证 OpenVPN 配置文件时存在竞争条件。这使得可以将不在 AWS VPN 客户端允许的 OpenVPN 指令列表中的配置指令注入到配置文件中,随后 AWS VPN 客户端服务(以 SYSTEM 身份运行)处理该文件。低权限用户可以注入危险参数,例如“log”,这允许为日志文件指定任意目标。
影响: 作为 SYSTEM 的任意文件写入,部分控制文件内容。这可能导致本地特权升级或拒绝服务攻击。
CVE-2022-25165: 通过 UNC 路径的信息泄露
在 OpenVPN 配置文件中引用文件路径时,可以包含 UNC 路径。当该文件导入到 AWS VPN 客户端并尝试验证文件路径时,它会对路径执行打开操作,并将用户的 Net-NTLMv2 哈希泄露给外部服务器。
影响: 用户的 Net-NTLMv2 哈希信息泄露。恶意用户可能通过让用户尝试将恶意 VPN 配置文件导入 AWS VPN 客户端来利用这一漏洞。
什么是 AWS VPN 客户端
AWS VPN 客户端是一个桌面应用程序,可用于连接到 AWS 客户端 VPN。
来自产品网站:
AWS 客户端 VPN 的客户端免费提供。您可以直接将计算机连接到 AWS 客户端 VPN,享受端到端的 VPN 体验。该软件客户端与 AWS 客户端 VPN 的所有功能兼容。
作为 SYSTEM 的任意文件写入技术细节
AWS VPN 客户端安装一个以 SYSTEM 身份运行的 Windows 服务,作为自定义 OpenVPN 客户端可执行文件的包装器。低权限用户可以使用 AWS VPN 客户端尝试使用导入的 OpenVPN 配置文件连接 VPN。
已知的危险 OpenVPN 指令可以在 VPN 连接期间执行命令或将日志文件写入特定目标。AWS VPN 客户端尝试限制可在配置文件中使用的 OpenVPN 指令,但由于检查在执行 OpenVPN 可执行文件之前进行,因此失败。这使得可以在配置文件验证后与 OpenVPN 可执行文件的执行竞争,并将不允许的指令注入到文件中。
以下是 AWS VPN 服务生成的日志文件,显示配置成功验证与 OpenVPN 客户端执行之间的时间间隔。
使用 Powershell 脚本监控日志文件,在配置文件成功验证后立即将恶意指令写入配置文件,便可轻松实现。通过注入不允许的指令,似乎只需将允许执行命令的指令添加到配置文件中即可实现特权升级。然而,在这种情况下并非如此简单,因为 AWS VPN 服务以“–script-security 1”标志启动 OpenVPN 可执行文件,这会阻止外部二进制文件或脚本的执行。
尽管不能直接运行命令,但仍然可以使用“log”指令将日志输出重定向到我们选择的任何路径或文件。由于执行是以 SYSTEM 用户身份进行的,这使我们能够进行特权的文件写入,并部分控制内容。在最简单的情况下,这可以用来将批处理脚本写入管理员的启动目录。
CVE-2022-25166 的概念证明可以在我们的 GitHub 仓库中找到。
通过 UNC 路径的信息泄露技术细节
AWS VPN 客户端对导入到客户端的配置文件(作为 VPN 配置文件)进行验证。验证步骤之一是检查在任何文件路径作为参数的指令中,文件路径是否存在。
一些接受文件路径的有效指令示例包括:
- auth-user-pass
- ca
AWS VPN 客户端的验证通过对路径执行文件打开操作来确保其存在。AWSVPNClient.Core.dll 包含 OvpnConfigParser.cs,其中有用于检查文件路径有效性的“CheckFilePath”方法。这只是调用了提供的文件名的 File.Open。
可以通过提供包含 UNC 路径的文件作为文件路径来利用这一点。当该文件在导入之前被验证时,它将打开 UNC 路径并将用户的 Net-NTLMv2 哈希发送到外部服务器。
CVE-2022-25165 的概念证明可以在我们的 GitHub 仓库中找到。
结论
披露时间线
类似于最近发布的 Pritunl CVE 和博客文章,这一漏洞展示了高权限 Windows 进程(如 VPN 客户端)中的利用潜力。这也表明,无论是开源提供商还是大型科技公司,敏感应用程序中仍然存在常见的应用程序缺陷。
请继续关注我们在接下来的几周内发布的其他 VPN 产品!
- 2022年2月15日: 向 AWS 报告漏洞
- 2022年2月16日: AWS 确认
- 2022年3月4日: AWS 确认问题已在版本 3.0.0 中解决
- 2022年4月12日: 完整披露(博客文章)发布