Game of Rars 探索WinRAR 中新的远程代码执行漏洞(CVE202340477)

摘要拥有5亿以上用户的WinRAR,曝出新的漏洞(CVE-2023-40477,CVE-2023-38831);CVE-2023-40477的PoC虽然被认为是

大家好,感谢邀请,今天来为大家分享一下Game of Rars 探索WinRAR 中新的远程代码执行漏洞(CVE202340477)的问题,以及和的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

二进制文件对比

我们知道6.23版本已经修复,我们找到修复之前的版本进行复现。通过下载WinRAR-v6.23 和WinRAR-v6.22 的便携版本,我们观察到:

WinRAR 目录结构和文件

可见winrar.exe可能只是一个图形界面。如果解压过程中存在漏洞,也可能存在于“unrar.exe”中。通过比较6.23和6.22之间的差异(忽略注释),我们得到以下结果:

第一个BinDiff 输出

查看流程图,在6.23 版本中发现了一些有趣的补充(在大函数图中,它看起来像是主要的提取):

提取中的BinDiff 额外内容

仔细一看,这些似乎是额外的检查!

blocksBinDiff x86 中有趣的附加块

这看起来很有希望!我们在这里看到一些var 255!有趣的是,这里似乎存在溢出检查。因此,是时候触发漏洞了(例如,将字节更改为其最大值)。

我对RAR 格式进行了研究,从描述中我们知道这与RAR4(vol3?)恢复卷有关,因此我生成了具有这些特征的RAR4 文件,它给了我以下文件列表:

RAR_FILE.rarRAR_FILE.r00RAR_FILE00.revRAR_FILE.r01RAR_FILE01.rev 我尝试暴力破解“.rev”和“rXX”卷中的“类字节”值,但没有成功。它什么也触发不了。然后尝试搜索一些“unrar”源代码并成功找到这个旧存储库:https://github.com/aawc/unrar

查看源代码,可以看到多个“255”常量检查,尤其是在“recvol3.cpp”中。它们也存在于原始的6.22 源代码中,是否由于溢出而添加了额外的检查?

经过进一步研究,我发现这些安全检查实际上与0xff/255有关。

recvol3.cpp 中的

漏洞

CVE-2023-40477

这里,P[i]是从‘.rev’文件中提取的。它们位于文件的末尾。这些P[i] 用于确定它们代表哪个恢复卷以及它们应用到哪个FileNumber。 FileNumber 也从中取出并存储在P[2] 中。

紧接着File\就被分配出来,放在我们控制的索引位置,这个数组的大小就是256! (第241 行),这解释了为什么有255 个检查。

因为索引实际上等于:P[2]+P[0]-1,所以我们几乎可以任意控制转速量的内容。因此,我们可以使用指针(指向File 结构)覆盖此缓冲区,这将覆盖当前对象中的下一个属性。

Poc撰写

Game of Rars 探索WinRAR 中新的远程代码执行漏洞(CVE202340477)

为了触发此漏洞,我们发现需要在recvol3.cpp中调用“Restore()”函数。还需要重建步骤来覆盖指针。

为了实现此目的,需要缺少一些rar 卷(缺少.r00 文件)以及可用的.rev 文件。另外,还要保证crc32校验正确,只需要几行代码就可以触发。

为了方便起见,使用了通过GUI 生成的原始rar4 恢复卷,但这可以使用更小、更高效的触发器,并且可能最多只需要2-3 个文件。

# 1. 重新生成格式错误的恢复vols.data=open(‘%s01.rev’ % ARCHIVE_NAME, ‘rb’).read() # 只需使用第一个并将其格式错误up.names=[‘%s%s. rev’ % (ARCHIVE_NAME, str(i).zfill(2)) for i in range(256)]# ‘销毁’ P[i]’sdatas=[data[:-7] + bytes([0xf0,0x00 , i]) + calc_crc(data[:-7] + bytes([0xf0,0x00, i])) for i in range(256)]# 2. 覆盖格式错误的恢复vols.for i in range(256): fname=name[i] data=datas[i] open(fname, ‘wb’).write(data)PoC地址:https://github.com/wildptr-io/Winrar-CVE-2023-40477-POC/

发现该漏洞后不久,我们还在rar-labs网站上看到了https://www.rarlab.com/vuln_rev3_names.html,这基本上证实了我们的发现。

利用这一点,在多种情况下成功使winrar/unrar 崩溃:

内存集用零覆盖无效内存(可能在缓冲区之后) :

在Buf 的memset 上使用winrar 的unrar.exe 时崩溃

源码中Buf的memset

使用“提取到”功能时,winrar.exe 中可能出现堆溢出情况winrar.exe 堆溢出 可能的情况

利用性

要确定可利用性,请查看256 个数组后面覆盖的结构。这用于确定攻击者如何利用此原语来获得远程代码执行(RCE)以及存在哪些缓解措施。

//RecVolume3 结构- 发生溢出class RecVolumes3{ private: File *SrcFile[256]; //File* 指针在这里溢出。 Array Buf;#ifdef RAR_SMP ThreadPool *RSThreadPool;#endif public: RecVolumes3(CommandData *Cmd,bool TestOnly) ; RecVolumes3(); void Make(CommandData *Cmd,wchar *ArcName); bool Restore(CommandData *Cmd,const wchar *Name,bool Silent); void Test(CommandData *Cmd,const wchar *Name);};//数组模板class:template class Array{ private: T *Buffer; size_t 缓冲区大小; size_t 分配大小; size_t 最大尺寸; public: 数组();数组(size_t 大小);数组(常量数组源); //复制构造函数。 数组();总之,我们使用“File*”指针溢出“Buffer”对象,同时还需要绕过此处启用的许多防御措施。幸运的是,有很多保护措施:ASLR、CFG、Stack-Cookie 和DEP。

这甚至没有提到winrar 版本之间的二进制差异。虽然可能存在漏洞被利用的可能性,但对于普通黑客来说,实际被利用的可能性并不高。

影响

尽管CVE 评级较高,但成功利用该漏洞所需的复杂性表明,与广泛利用的Log4j RCE 漏洞不同,广泛滥用的可能性较低。

有趣的是,Chromium 似乎也使用unrar 库:https://chromium.googlesource.com/chromium/src/+/6ff23b0604e2edbe7ef282564ea340f5c72ab91a%5E%21/。

尽管没有代码参考表明其用法,但unrar 库有可能作为第三方依赖项集成到Chrome 操作系统中。

解决措施

可以考虑的对策:

用户评论

Game of Rars 探索WinRAR 中新的远程代码执行漏洞(CVE202340477)
冷落了♂自己·

这个漏洞真的很可怕!WinRAR一直是大家用的压缩软件,没想到会有这种远程代码执行的漏洞。以后得更谨慎打开了未知来源的 RAR 格式文件!

    有15位网友表示赞同!

Game of Rars 探索WinRAR 中新的远程代码执行漏洞(CVE202340477)
微信名字

一直在使用的 WinRAR,这篇文章让我有点担忧啊,不知道具体的影响范围有多大。希望 WinRAR 能尽快修复这个漏洞,否则太危险了!

    有12位网友表示赞同!

Game of Rars 探索WinRAR 中新的远程代码执行漏洞(CVE202340477)
oО清风挽发oО

之前也有类似的漏洞被发现过,这些黑客真是越来越厉害了。还是得提醒一下大家,不要随便打开未知来源的文件,尤其是 RAR 格式的文件。保护好自己信息真的很重要!

    有10位网友表示赞同!

Game of Rars 探索WinRAR 中新的远程代码执行漏洞(CVE202340477)
陌然淺笑

对于安全人员来说,CVE-2023-40477 的出现无疑是一个挑战,这需要我们更加重视软件的安全性漏洞检测和修复工作。Game of Rars 这个名字很棒,仿佛一场充满悬疑的游戏!期待看到他们发布更多关于漏洞分析的文章。

    有11位网友表示赞同!

Game of Rars 探索WinRAR 中新的远程代码执行漏洞(CVE202340477)
我怕疼别碰我伤口

这个漏洞的利用手法有点厉害啊~~ 看了一下博主的分析,确实很专业,对于安全爱好者来说很有参考价值。希望能够鼓励更多人关注软件安全问题!

    有17位网友表示赞同!

Game of Rars 探索WinRAR 中新的远程代码执行漏洞(CVE202340477)
繁华若梦

WinRAR一直是我们使用比较多的压缩软件之一,但是现在发现有远程代码执行的漏洞,感觉还是需要谨慎一点。这个漏洞会对使用者造成多大的影响呢?

    有8位网友表示赞同!

Game of Rars 探索WinRAR 中新的远程代码执行漏洞(CVE202340477)
陌颜

我对这篇文章的分析很有兴趣,特别是关于如何利用CVE-2023-40477执行远程代码的部分。虽然我是一个普通的电脑用户,但这篇文章让我更加了解软件安全的重要性!

    有12位网友表示赞同!

Game of Rars 探索WinRAR 中新的远程代码执行漏洞(CVE202340477)
◆残留德花瓣

Game of Rars 的文章质量很高啊,每次都能挖掘出一些比较热门的安全漏洞,并进行详细的分析。对于像我这类对安全感兴趣的人来说真是很有帮助!

    有16位网友表示赞同!

Game of Rars 探索WinRAR 中新的远程代码执行漏洞(CVE202340477)
涐们的幸福像流星丶

这个 WinRAR 漏洞真的太危险了,建议大家立刻更新软件版本! 黑客利用这种漏洞可以控制用户的电脑,后果不堪设想!

    有12位网友表示赞同!

Game of Rars 探索WinRAR 中新的远程代码执行漏洞(CVE202340477)
念旧情i

WinRAR 的漏洞还真是一个头疼的问题啊。希望开发人员能把这个问题解决的关键点摆出来,让用户更好地了解这个漏洞的危害以及如何防护。

    有16位网友表示赞同!

Game of Rars 探索WinRAR 中新的远程代码执行漏洞(CVE202340477)
抚笙

看完这篇文章之后,我更加意识到软件安全的重要性了。看来不能只关注功能,还要注意软件的安全性!

    有17位网友表示赞同!

Game of Rars 探索WinRAR 中新的远程代码执行漏洞(CVE202340477)
暖栀

虽然我对 WinRAR 的漏洞不太懂,但我觉得这篇博文写的很清楚,很容易理解。希望这个漏洞能够尽快修复!

    有16位网友表示赞同!

Game of Rars 探索WinRAR 中新的远程代码执行漏洞(CVE202340477)
话少情在

Game of Rars 经常发布关于安全研究的文章,而且分析很深入,值得大家关注。这种研究有助于提升我们的安全意识!

    有9位网友表示赞同!

Game of Rars 探索WinRAR 中新的远程代码执行漏洞(CVE202340477)
凉话刺骨

这篇博文中提到的CVE-2023-40477漏洞,我之前在网上看了一篇相关的介绍,貌似有很多用户受到了影响。希望WinRAR公司能尽快发布补丁解决这个问题!

    有16位网友表示赞同!

Game of Rars 探索WinRAR 中新的远程代码执行漏洞(CVE202340477)
回到你身边

虽然 WinRAR 很方便,但也需要时刻警惕安全风险。希望大家在使用的时候注意文件来源,避免安装不明来源的软件!

    有8位网友表示赞同!

Game of Rars 探索WinRAR 中新的远程代码执行漏洞(CVE202340477)
羁绊你

这个漏洞的发现挺重要的,可以让更多人意识到安全的重要性。希望Game of Rars能继续发布这些有益的文章,让更多的人了解安全知识!

    有6位网友表示赞同!

Game of Rars 探索WinRAR 中新的远程代码执行漏洞(CVE202340477)
小清晰的声音

我觉得WinRAR公司应该重视这个问题,尽快修复漏洞,给用户提供更加安全可靠的服务!

    有12位网友表示赞同!

Game of Rars 探索WinRAR 中新的远程代码执行漏洞(CVE202340477)
拽年很骚

我更喜欢其他压缩软件! 始终认为 WinRAR 功能过于繁琐,很多功能用不到,而且存在不少漏洞,让人担忧。还是说别的安全一些的工具吧!

    有7位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/98936.html

(0)
小su's avatar小su
上一篇 2024年8月29日 下午9:47
下一篇 2024年8月29日 下午9:51

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注