bsauce / blog-comment

0 stars 0 forks source link

【kernel exploit】CVE-2022-2602垃圾回收错误释放iouring的file导致UAF — bsauce #43

Open bsauce opened 1 year ago

bsauce commented 1 year ago

https://bsauce.github.io/2023/06/08/CVE-2022-2602/

【kernel exploit】CVE-2022-2602 UNIX_GC错误释放io_uring注册的file结构-UAF本文主要参考 [漏洞分析] CVE-2022-2602 io_uring UAF内核提权详细解析 并做一些补充。影响版本:Linux Kernel < v6.0.3。v6.0.3已修复。测试版本:Linux-v6.0.2 (v6.0.2 测试失败,v5.18.19测试成功) exploit及测试环境下载地址—https://github.com/bsauce/kernel-exploit-factory编译选项:CONFIG_BINFMT_MISC=y (否则启动VM时报错)在编译时将.config中的CONFIG_E1000和CONFIG_E1000E,变更为=y。参考$ wget https://mirrors.tuna.tsinghua.edu.cn/kernel/v6.x/linux-6.0.2.tar.xz$ tar -xvf linux-6.0.2.tar.xz# KASAN: 设置 make menuconfig 设置

brant-ruan commented 1 year ago

师傅好,

关于你的CVE-2022-2602的研究,我在本地用你的kernel-exploit-factory项目中的代码和程序,进行测试,测试发现你提供的exploit二进制程序能够复现成功(虽然不稳定,但是确实较大概率成功),但是如果是用你的exploit.c在我的本地环境ubuntu20.04中编译出exploit,则一直无法复现成功,最后正常退出,/etc/passwd也没有变化。

我逆向对比了你的exploit和我编译出的exploit,逻辑上应该是完全一致的,除了你的exploit显示是gcc 9.3.0编译的,我的是9.4.0,但个人感觉应该不是这个问题。

另外,在你提供的内核环境下,这个漏洞exploit最初的两个作者在GitHub上公开的exploit代码经我编译后也无法复现成功。

因此,我想请教一下,你有遇到过这样的问题吗?或者你的exploit和GitHub上的exploit.c有什么差异、在编译时有什么特别的操作?能否给我一些指导和建议呢?

打扰了,谢谢!

bsauce commented 1 year ago

不同的编译选项也可能影响最后的成功率,exp可能要修改。

bsauce commented 1 year ago

不同的编译选项也可能影响最后的成功率,exp可能要修改。

我一般会根据自己编译的内核环境进行调试,可能会修正结构偏移或者修改堆喷策略。

brant-ruan commented 1 year ago

收到,谢谢啦,我再调试一下。

XiaozaYa commented 5 months ago

请问为什么我无法 ssh 链接 qemu 虚拟机呢?使用你的环境是 ok 的,是需要什么特殊的内核编译选项吗?我按照你的提示都进行了修改

XiaozaYa commented 5 months ago

好像是虚拟机网卡启动不了......哭了

XiaozaYa commented 5 months ago

这里的文件系统是根据内核定制的吗??为啥虚拟机里面启动不了网卡呢

XiaozaYa commented 5 months ago

@brant-ruan 师傅好,

关于你的CVE-2022-2602的研究,我在本地用你的kernel-exploit-factory项目中的代码和程序,进行测试,测试发现你提供的exploit二进制程序能够复现成功(虽然不稳定,但是确实较大概率成功),但是如果是用你的exploit.c在我的本地环境ubuntu20.04中编译出exploit,则一直无法复现成功,最后正常退出,/etc/passwd也没有变化。

我逆向对比了你的exploit和我编译出的exploit,逻辑上应该是完全一致的,除了你的exploit显示是gcc 9.3.0编译的,我的是9.4.0,但个人感觉应该不是这个问题。

另外,在你提供的内核环境下,这个漏洞exploit最初的两个作者在GitHub上公开的exploit代码经我编译后也无法复现成功。

因此,我想请教一下,你有遇到过这样的问题吗?或者你的exploit和GitHub上的exploit.c有什么差异、在编译时有什么特别的操作?能否给我一些指导和建议呢?

打扰了,谢谢!

请问你最后有解决吗? 我发现似乎是代码的问题,io_uring 的 writev 没有正常进行写入(:动态链接测试直接 crash 掉了,因为 sqe 最后为 null

brant-ruan commented 5 months ago

@brant-ruan 师傅好, 关于你的CVE-2022-2602的研究,我在本地用你的kernel-exploit-factory项目中的代码和程序,进行测试,测试发现你提供的exploit二进制程序能够复现成功(虽然不稳定,但是确实较大概率成功),但是如果是用你的exploit.c在我的本地环境ubuntu20.04中编译出exploit,则一直无法复现成功,最后正常退出,/etc/passwd也没有变化。 我逆向对比了你的exploit和我编译出的exploit,逻辑上应该是完全一致的,除了你的exploit显示是gcc 9.3.0编译的,我的是9.4.0,但个人感觉应该不是这个问题。 另外,在你提供的内核环境下,这个漏洞exploit最初的两个作者在GitHub上公开的exploit代码经我编译后也无法复现成功。 因此,我想请教一下,你有遇到过这样的问题吗?或者你的exploit和GitHub上的exploit.c有什么差异、在编译时有什么特别的操作?能否给我一些指导和建议呢? 打扰了,谢谢!

请问你最后有解决吗? 我发现似乎是代码的问题,io_uring 的 writev 没有正常进行写入(:动态链接测试直接 crash 掉了,因为 sqe 最后为 null

不好意思,我不太记得了...

XiaozaYa commented 5 months ago

@brant-ruan

@brant-ruan 师傅好, 关于你的CVE-2022-2602的研究,我在本地用你的kernel-exploit-factory项目中的代码和程序,进行测试,测试发现你提供的exploit二进制程序能够复现成功(虽然不稳定,但是确实较大概率成功),但是如果是用你的exploit.c在我的本地环境ubuntu20.04中编译出exploit,则一直无法复现成功,最后正常退出,/etc/passwd也没有变化。 我逆向对比了你的exploit和我编译出的exploit,逻辑上应该是完全一致的,除了你的exploit显示是gcc 9.3.0编译的,我的是9.4.0,但个人感觉应该不是这个问题。 另外,在你提供的内核环境下,这个漏洞exploit最初的两个作者在GitHub上公开的exploit代码经我编译后也无法复现成功。 因此,我想请教一下,你有遇到过这样的问题吗?或者你的exploit和GitHub上的exploit.c有什么差异、在编译时有什么特别的操作?能否给我一些指导和建议呢? 打扰了,谢谢!

请问你最后有解决吗? 我发现似乎是代码的问题,io_uring 的 writev 没有正常进行写入(:动态链接测试直接 crash 掉了,因为 sqe 最后为 null

不好意思,我不太记得了...

好的,我已经解决了,似乎是 exp 存在问题(:可能是时间原因,目前 exp 中关于 io_uring 部分的代码存在问题。谢谢你的回复