Avira VPN本地权限提升漏洞:通过不安全更新路径实现系统入侵

本文详细分析了Avira VPN服务中的本地权限提升漏洞,攻击者可通过操纵可写目录和绕过安全校验,以SYSTEM权限执行恶意代码。涉及文件权限检查、DACL验证和数字签名绕过等技术细节。

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()处理更新逻辑:

  1. 检查更新文件: 服务通过Updater.CheckForDownloadedUpdatePackage()验证C:\ProgramData\Avira\VPN\Update\AviraVPNInstaller.exe是否存在,并比较更新文件的ProductVersion是否高于当前服务版本(Avira.VPNService.exe)。如果版本更高,则继续安装流程。

  2. 文件夹权限验证: 服务调用Updater.IsUpdateFolderAccessRestricted()确保更新目录(C:\ProgramData\Avira\VPN\Update)被锁定,仅允许NT AUTHORITY\SYSTEM、NT AUTHORITY\SERVICE或Administrators等SID写入。如果目录所有者不属于这些SID,则删除并重新创建目录,应用严格的DACL(自主访问控制列表)。

  3. 绕过防护机制: 攻击者可利用以下步骤绕过检查:

    • 绕过所有者检查: 将另一个由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
  4. 攻击执行: 将重命名后的可执行文件与恶意VERSION.dll一同放入更新目录。当VPN服务启动(通过重启或手动),它会通过所有检查,以SYSTEM权限执行AviraVPNInstaller.exe,加载恶意DLL,实现本地权限提升。

此漏洞已在最新版Avira VPN中修复。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计