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