Avira VPN本地权限提升漏洞:通过不安全更新路径实现系统入侵
产品版本: Avira VPN
测试操作系统: Windows 10 1709 (x64)
漏洞类型: Avira VPN服务本地权限提升
简要描述: 当Phantom VPN服务(Avira.VPNService.exe)启动时,会检查是否有可用更新。该服务从C:\ProgramData\Avira\VPN\Update
执行更新,此目录默认允许低权限用户写入。此外,服务实施的防护机制可被绕过,使得攻击者能在该目录放置合法的Avira可执行文件及恶意DLL,触发服务执行更新文件,导致DLL劫持,最终以SYSTEM权限执行代码。
漏洞详解
Phantom VPN服务启动时,首先通过调用VPNUpdater.UpdateProduct()
来检查更新,该函数进一步调用Updater.UpdateToNewPackageIfValid()
处理更新逻辑:
-
检查更新文件: 服务通过
Updater.CheckForDownloadedUpdatePackage()
验证C:\ProgramData\Avira\VPN\Update\AviraVPNInstaller.exe
是否存在,并比较更新文件的ProductVersion
是否高于当前服务版本(Avira.VPNService.exe)。如果版本更高,则继续安装流程。 -
文件夹权限验证: 服务调用
Updater.IsUpdateFolderAccessRestricted()
确保更新目录(C:\ProgramData\Avira\VPN\Update
)被锁定,仅允许NT AUTHORITY\SYSTEM、NT AUTHORITY\SERVICE或Administrators等SID写入。如果目录所有者不属于这些SID,则删除并重新创建目录,应用严格的DACL(自主访问控制列表)。 -
绕过防护机制: 攻击者可利用以下步骤绕过检查:
- 绕过所有者检查: 将另一个由SYSTEM拥有但低权限用户可写的目录(如
C:\ProgramData\Avira\Launcher\LogFiles
)移动到C:\ProgramData\Avira\VPN\Update
。移动操作保留权限设置,使更新目录所有者变为SYSTEM。 - 绕过DACL检查: 手动设置更新目录的DACL,仅包含Administrators、SYSTEM和SERVICE SID。
- 绕过文件完整性检查: 服务通过
Updater.IsUpdatePackageAuthentic()
验证更新文件是否由Avira签名且签名有效。攻击者使用Avira签名的可执行文件(如CefSharp.BrowserSubprocess.exe
,产品版本为65.0.0.0),重命名为AviraVPNInstaller.exe
,并放置到更新目录。该文件启动时会从当前工作目录加载VERSION.dll
。
- 绕过所有者检查: 将另一个由SYSTEM拥有但低权限用户可写的目录(如
-
攻击执行: 将重命名后的可执行文件与恶意
VERSION.dll
一同放入更新目录。当VPN服务启动(通过重启或手动),它会通过所有检查,以SYSTEM权限执行AviraVPNInstaller.exe
,加载恶意DLL,实现本地权限提升。
此漏洞已在最新版Avira VPN中修复。