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
是否高于当前服务版本。如果版本更高,则继续安装流程。 -
文件夹权限验证: 服务调用
Updater.IsUpdateFolderAccessRestricted()
确保更新目录仅允许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。
- 绕过文件完整性检查: 使用Avira签名的可执行文件(如
CefSharp.BrowserSubprocess.exe
,版本65.0.0.0),重命名为AviraVPNInstaller.exe
,并确保其版本高于当前服务版本。该文件执行时会从当前目录加载VERSION.dll
,因此可放置恶意DLL实现劫持。
- 绕过所有者检查: 将另一个由SYSTEM所有但低权限用户可写的文件夹(如
-
攻击效果: 当VPN服务启动时,会执行恶意更新文件,加载恶意DLL,最终以SYSTEM权限运行代码,实现本地权限提升。
此漏洞已在最新版Avira VPN中修复。