Avira VPN权限提升漏洞深度分析

本文详细分析了Avira Phantom VPN 2.15.2.28160版本中的权限提升漏洞,涉及DACL修改、硬链接攻击等技术细节,完整披露了从低权限用户提升至SYSTEM权限的攻击链和修复时间线。

Avira VPN 2.15.2.28160 权限提升漏洞

产品版本: Avira Phantom VPN 版本 2.15.2.28160
下载来源: https://package.avira.com/package/oeavira/win/int/avira_en_vpn__ws.exe
测试操作系统: Windows 10 1803 (x64)
漏洞类型: Avira VPN 权限提升
简要描述: 当在VPN设置菜单中进行配置更改时,Avira Phantom VPN服务会更改"C:\ProgramData\Avira\VPN\VpnSharedSettings.backup"和"C:\ProgramData\Avira\VPN\VpnSharedSettings.config"的DACL。通过在"C:\ProgramData\Avira\VPN\VpnSharedSettings.backup"上设置硬链接,可以覆盖任意文件的DACL,导致从低权限用户提升至SYSTEM权限。

漏洞原理

当通过VPN GUI进行配置更改时,VPN服务(Avira.VPNService.exe)会调用位于"Avira.VPN.Core.dll"中的"AdjustSecurity()“函数,更改DACL以允许任何经过身份验证的用户写入"C:\ProgramData\Avira\VPN\VpnSharedSettings.backup"或"C:\ProgramData\Avira\VPN\VpnSharedSettings.config”。当进行配置更改时(可由低权限用户完成),服务通过调用"EnsureFileExists()“确保"共享"VPN配置文件存在:

如果配置文件不存在,服务将创建它并继续。如果存在,则继续执行"StorageSecurity.AdjustSecurity()“函数。在共享与私有配置配置文件的情况下,传递的"StorageType"是"AllUserAccess"或"Secure”。私有VPN配置文件被分配"Secure"存储类型,而共享配置文件被分配"AllUserAccess”。

当调用"AdjustSecurity()“函数(传递配置文件的存储类型)时,它会适当调整文件本身的DACL。这就是漏洞所在。对于"共享"配置文件(StorageType为"AlluserAccess”),VPN服务调用"AdjustSecurity()“并授予所有用户对文件的完全控制权限:

这是危险的,因为"SetAccessControll()“调用更改了低权限用户可以控制的文件的DACL。那么,我们如何利用这一点?

漏洞利用步骤

首先,攻击者需要在"C:\ProgramData\Avira\VPN\VpnSharedSettings.backup"上创建硬链接并指向一个文件。在这种情况下,我们将指向"C:\Program Files (x86)\Avira\VPN\OpenVPN\phantomvpn.exe”。这样做将覆盖"C:\Program Files (x86)\Avira\VPN\OpenVPN\phantomvpn.exe"的DACL。

完成后,打开VPN并单击"设置"选项卡:

完成后,取消选中"发送诊断数据"框。这将触发配置更改并启动代码路径:

此时,“C:\Program Files (x86)\Avira\VPN\OpenVPN\phantomvpn.exe"上的DACL已被覆盖,允许任何用户写入。攻击者现在只需要复制恶意二进制文件来替换它:

完成后,只需尝试连接VPN即可执行恶意二进制文件。这可以通过在VPN GUI中单击"保护我的连接"来完成:

单击"保护我的连接"后,您应该看到几个以SYSTEM身份运行的cmd.exe进程:

披露时间线

  • 2018年9月28日:向Avira报告
  • 2018年10月1日:Avira确认报告
  • 2018年10月4日:Avira能够复现
  • 2018年12月13日:问题解决
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计