Avira VPN本地权限提升漏洞:通过不安全的更新位置实现系统级代码执行

本文详细分析了Avira VPN服务中的本地权限提升漏洞,攻击者可通过绕过文件夹所有权和DACL检查,在可写目录放置恶意更新文件,导致服务以SYSTEM权限执行任意代码。

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是否高于当前服务版本。如果版本更高,则继续安装流程。

  2. 文件夹权限验证: 服务调用Updater.IsUpdateFolderAccessRestricted()确保更新目录仅允许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。
    • 绕过文件完整性检查: 使用Avira签名的可执行文件(如CefSharp.BrowserSubprocess.exe,版本65.0.0.0),重命名为AviraVPNInstaller.exe,并确保其版本高于当前服务版本。该文件执行时会从当前目录加载VERSION.dll,因此可放置恶意DLL实现劫持。
  4. 攻击效果: 当VPN服务启动时,会执行恶意更新文件,加载恶意DLL,最终以SYSTEM权限运行代码,实现本地权限提升。

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

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