0x00.前言出于锻炼自己漏洞跟踪能力的目的,最近我开始关注一些最新的内核CVE。因为这种CVE基本上都没有公布POC,所以也更考验学习和漏洞分析能力。
个人认为,这个漏洞本质上是很简单的,但是触发条件极其苛刻,需要条件竞争(时机卡的很死),然后最后还有个调度问题(可能可以用别的方法绕过)。因此为了方便分析漏洞点的可触发性,这里我对内核源码进行了3处的只影响运行速度和时机的修改。
0x01....
0x00.前言分析这个漏洞的原因在于该漏洞的产生与gc机制有关,并且漏洞原理十分有趣,再加上默师傅详细的分析文章辅助,可以更快的理解。本文不会进行特别详细的分析,主要还是对大致原理进行讲解。
0x01.前置知识因为整体框架代码繁杂,这里我就不详细结合源码分析了,使用的linux源码版本为5.9.10
飞行计数产生缘由进程之间的fd通信知周所众,进程之间的数据都是相互隔离的,包括内存、文件描述...
0x00.前置知识本篇涉及的linux源码,版本为5.9.10。
eBPF框架介绍eBPF全称extended Berkeley Packet Filter,中译为扩展的伯克利-包过滤器。其主要功能是以用户身份来对linux内核的一些函数进行扩展以及hook,从而实现对socket网络封包进行过滤之类的功能。
eBPF本质上是一个沙盒虚拟机,用户可以通过编写bpf指令,并利用sys_bpf...
0x01.题目分析主要有两个函数safenote_init和safenote_ioctl。
safenote_init初始化了一个0xc0大小的kmem_cache。
safenote_ioctl存在add、delete、uaf_delete三个功能,分别对应0x1337、0x1338、0x1339。
add可以根据idx从init初始化的kmem_cache分配不超过0x100个堆块。
...
0x01.题目分析ker_ioctl具有add、delete、edit三个功能点,分别对应0x20、0x30、0x50
add允许申请0x28(实际0x40)大小的堆块,并可写入数据。
delete机会只有2次,且不会清空指针,造成uaf漏洞。
edit机会只有一次,且只能修改前8字节。
可以看到开启了cg隔离。
正常保护都开启了。
0x02.利用手法setxattr辅助修改set...
0x00.前言研究这个CVE的契机是这次2024强网拟态杯的一道内核题,开启内核cg隔离的情况下的0x40堆uaf利用。
当时的想法是先堆喷pipe_buffer,然后利用poll_list释放pipe_buffer,再去打DirtyPipe,可惜在开启了kaslr的环境,很难预测到pipe_buffer的地址,最后只能放弃。
比赛结束后看到其他佬的wp,基本上都是利用user_key_pa...
0x00.前言前几天,我从SCTF的kno_pus_revenge了解到了Dirtypipe的打法,觉得很奇妙,于是对Dirtypipe的来源进行了一系列的分析(
[分析文章]: http://www.0rb1t.top/2024/10/04/CVE-2022-0847-DirtyPipe%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90%E5%8F%8A%E5%85%...
0x00.前言接触这个cve还是因为SCTF 2024中的一道kernel-pwn题:kno_puts_revenge,其中只给了一次的0x400堆的uaf机会,且仅泄露了堆地址。看了各路大佬的wp,可以说是利用手法多种多样,有直接打CVE-2022-26816的,也有打msg_msg的。最令我印象深刻的是利用DirtyPipe修改poweroff文件实现提权的,前面我只知道利用pipe_b...
题目名称:akernel附件:https://pan.baidu.com/s/1qJKgj6SZBnkcWuo3WrosBw?pwd=GAME
分析我们先对rootfs.cpio进行解包
123mkdir initramfscd initramfscpio -idm < ../rootfs.cpio
查看init文件
123456789101112131415161718192021...
环境搭建1.binwalk安装123git clone --recursive https://github.com/ReFirmLabs/binwalk.gitcd binwalksudo python3 setup.py install
2.FirmAE安装1234git clone --recursive https://github.com/pr0v3rbs/FirmAE.gitc...