Avast/ AVG漏洞影响数百万设备。
Avast和AVG是两款广泛使用的安全产品,这些安全产品在Windows设备中以最高权限的特权服务的形式运行。SentinelLabs研究人员在Avast和AVG产品中发现2个存在数十年的高危安全漏洞,影响数百万用户。漏洞CVE编号为CVE-2022-26522 和CVE-2022-26523,攻击者利用这两个漏洞可以实现权限提升、禁用安全产品、覆写系统组件、破坏操作系统、执行恶意操作。因为这两个漏洞非常相似,因此本文主要分析CVE-2022-26522漏洞技术细节。
漏洞分析
CVE-2022-26522
该漏洞位于kernel驱动aswArPot.sys的socket连接处理器中。
如上图所示,该函数首先将当前线程附加到目标进程中,然后使用nt!PsGetProcessPeb获取当前进程PEB的指针。然后取回PPEB->ProcessParameters->CommandLine.Length来分配新缓存。然后复制PPEB->ProcessParameters->CommandLine.Buffer处用户提供的缓存,缓存大小为PPEB->ProcessParameters->CommandLine.Length。
此时,攻击者可以利用kernel线程的竞争条件来修改Length变量。
Looper线程:
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域。该漏洞可以通过初始化socket连接来触发,具体如下:
整个流程如下所示:
漏洞触发后,用户可以看到来自操作系统的告警:
CVE-2022-26523漏洞
该漏洞与CVE-2022-26522类似,位于aswArPot+0xbb94中。该函数会从用户控制的指针中两次取回length域。该漏洞可以通过图像加载回调等多种方式触发。
漏洞影响
漏洞可以从沙箱触发,漏洞利用可以实现本地权限提升。比如,该漏洞利用可以作为第二阶段浏览器攻击或执行沙箱逃逸。攻击者利用该漏洞还可以在kernel模式下执行代码,完全控制整个设备。攻击者还可以利用该漏洞绕过安全产品。
漏洞修复
SentinelLabs早在2021年12月就发现了该漏洞,Avast于2022年2月在v22.1版本中修复了该漏洞。
本文翻译自:https://www.sentinelone.com/labs/vulnerabilities-in-avast-and-avg-put-millions-at-risk/如若转载,请注明原文地址