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图形界面进行配置更改时,VPN服务(Avira.VPNService.exe)会调用位于"Avira.VPN.Core.dll"中的"AdjustSecurity()“函数,修改DACL权限以允许任何经过身份验证的用户写入共享配置文件。
当进行配置更改时(低权限用户即可执行),服务通过调用"EnsureFileExists()“确保共享VPN配置文件存在:
如果配置文件不存在,服务将创建该文件并继续执行。如果文件已存在,则直接继续执行"StorageSecurity.AdjustSecurity()“函数。对于共享和私有配置配置文件,传递的"StorageType"参数分别为"AllUserAccess"或"Secure”。
当调用"AdjustSecurity()“函数时(传递配置文件的存储类型),它会相应调整文件本身的DACL权限。这正是漏洞所在。对于共享配置文件(StorageType为"AlluserAccess”),VPN服务调用"AdjustSecurity()“并授予所有用户对该文件的完全控制权限:
这种做法很危险,因为"SetAccessControll()“调用会更改低权限用户可控制的文件的DACL权限。
漏洞利用步骤
-
攻击者首先需要在"C:\ProgramData\Avira\VPN\VpnSharedSettings.backup"上创建硬链接,并将其指向目标文件。在本例中,我们将其指向"C:\Program Files (x86)\Avira\VPN\OpenVPN\phantomvpn.exe”。
-
打开VPN并点击"Settings"选项卡:
-
取消选中"Send Diagnostic Data"复选框。这将触发配置更改并启动代码执行路径:
此时,“C:\Program Files (x86)\Avira\VPN\OpenVPN\phantomvpn.exe"的DACL权限已被覆盖,允许任何用户写入该文件。攻击者现在只需将恶意二进制文件复制到该位置进行替换:
完成后,只需尝试连接VPN即可执行恶意二进制文件。这可以通过点击VPN图形界面中的"Secure my Connection"来实现:
点击"Secure my connection"后,您应该会看到几个以SYSTEM权限运行的cmd.exe进程:
漏洞披露时间线
- 2018年9月28日:向Avira报告漏洞
- 2018年10月1日:Avira确认收到报告
- 2018年10月4日:Avira成功复现漏洞
- 2018年12月13日:问题得到解决