Avast & AVG Antivirus代码执行漏洞(CVE-2022-26522)

admin 2022年5月13日00:06:20评论191 views字数 2301阅读7分40秒阅读模式

点击上方蓝字“Ots安全”一起玩耍

×


01
 漏洞描述


Avast 的“Anti Rootkit”驱动程序(也被 AVG 使用)被发现容易受到两种严重程度较高的攻击,这些攻击可能会通过在内核中运行来自非管理员用户的代码而导致权限提升。Avast 和 AVG 是广泛部署的产品,这些缺陷可能使全球许多用户容易受到网络攻击。


鉴于这些产品在 Windows 设备上作为特权服务运行,旨在保护用户免受伤害的软件中的此类错误既给攻击者带来了机会,也给用户带来了严重威胁。

  • SentinelLabs 在 Avast 和 AVG(2016 年被 Avast 收购)中发现了两个高度严重的漏洞,这些漏洞多年来一直未被发现,影响了数千万用户。

  • 这些漏洞允许攻击者提升权限,使他们能够禁用安全产品、覆盖系统组件、破坏操作系统或不受阻碍地执行恶意操作。

  • SentinelLabs 的调查结果于 2021 年 12 月主动向 Avast 报告,漏洞被跟踪为 CVE-2022-26522 和 CVE-2022-26523。

  • Avast 已悄悄发布安全更新以解决这些漏洞。

  • 目前,SentinelLabs 尚未发现野外滥用的证据。


×


02
漏洞状态


漏洞细节
POC
未知
EXP
未知
漏洞等级
野外
未知
类型
命令执行


×


03
漏洞引用



×


04
旧的漏洞



×


05
漏洞分析


易受攻击的例程驻留在内核驱动程序中的套接字连接处理程序中aswArPot.sys。由于报告的两个漏洞非常相似,我们将主要关注 CVE-2022-26522 的细节。


CVE-2022-26522 是指存在于aswArPot+0xc4a3.

Avast & AVG Antivirus代码执行漏洞(CVE-2022-26522)

从上图中可以看出,该函数首先将当前线程附加到目标进程,然后用于nt!PsGetProcessPeb获取指向当前进程PEB的指针(红色箭头)。然后它(第一次)获取PPEB->ProcessParameters->CommandLine.Length以分配一个新的缓冲区(黄色箭头)。PPEB->ProcessParameters->CommandLine.Buffer然后它以(橙色箭头)的大小复制用户提供的缓冲区PPEB->ProcessParameters->CommandLine.Length,这是第一次提取。


在这个机会窗口期间,攻击者可以与内核线程竞争并修改 Length 变量。


Looper thread:

  PTEB tebPtr = reinterpret_cast (__readgsqword( reinterpret_cast (& static_cast <NT_TIB*>( nullptr )->Self)));     PPEB pebPtr = tebPtr->ProcessEnvironmentBlock;      pebPtr->ProcessParameters->CommandLine.Length = 2 ; while ( 1 ) {         pebPtr->ProcessParameters->CommandLine.Length ^= 20000 ;     }


从上面的代码片段可以看出,代码获取了指向PEB结构的指针,然后翻转进程命令行结构中的Length字段。


该漏洞可以在驱动程序内部通过启动套接字连接来触发,如以下代码所示。

 printf("nInitialising Winsock...");    if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) {        printf("Failed. Error Code : %d", WSAGetLastError());        return 1;    }     printf("Initialised.n");    if ((s = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) {        printf("Could not create socket : %d", WSAGetLastError());    }    printf("Socket created.n");      server.sin_addr.s_addr = inet_addr(IP_ADDRESS);    server.sin_family = AF_INET;    server.sin_port = htons(80);     if (connect(s, (struct sockaddr*)&server, sizeof(server)) < 0) {        puts("connect error");        return 1;    }     puts("Connected");     message = (char *)"GET / HTTP/1.1rnrn";    if (send(s, message, strlen(message), 0) < 0) {        puts("Send failed");        return 1;    }    puts("Data Sent!n");

所以整个流程是这样的:

Avast & AVG Antivirus代码执行漏洞(CVE-2022-26522)

触发漏洞后,用户会看到来自操作系统的以下警报。

Avast & AVG Antivirus代码执行漏洞(CVE-2022-26522)


CVE-2022-26523

第二个易受攻击的功能aswArPot+0xbb94与第一个漏洞非常相似。此函数也从用户控制的指针中双重获取 Length 字段。

Avast & AVG Antivirus代码执行漏洞(CVE-2022-26522)

这个易受攻击的代码是驱动程序中多个处理程序的一部分,因此可以通过多种方式触发,例如通过图像加载回调。


这两个漏洞都在版本 22.1 中得到修复。

由于这些漏洞的性质,它们可以从沙箱中触发,并且可能在除本地权限提升之外的上下文中被利用。例如,这些漏洞可能被用作第二阶段浏览器攻击的一部分或执行沙盒逃逸等。


正如我们最近注意到的其他产品中的类似缺陷(1、2、3),由于能够在内核模式下执行代码,此类漏洞有可能允许完全接管设备,即使没有权限也是如此。此类漏洞的明显滥用之一是它们可用于绕过安全产品。


Avast & AVG Antivirus代码执行漏洞(CVE-2022-26522)

原文始发于微信公众号(Ots安全):Avast & AVG Antivirus代码执行漏洞(CVE-2022-26522)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月13日00:06:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Avast & AVG Antivirus代码执行漏洞(CVE-2022-26522)http://cn-sec.com/archives/1002204.html

发表评论

匿名网友 填写信息