-
-
CVE-2014-0038内核漏洞exp分析
-
发表于:
2025-7-14 18:46
3378
-
10多年前的漏洞,同事找我讨论,随手点开几篇分析文档,都只解释了大体思路,看完之后,对一些关键的地方,还是一知半解,所以我把自己的分析,也记录下来。
漏洞代码:
漏洞在于,timeout指针从用户态传入,而__sys_recvmmsg()函数,直接修改了它指向的内容:
这样一来,exp程序如果传入内核函数指针的地址,就可以修改内核函数指针的指向。
利用程序:
利用思路:
(1) 触发漏洞,修改net_sysctl_root.permissions,使它指向用户空间,使得exp程序,可以进一步控制它的执行内容:

permissions偏移ctl_table_root结构体96字节,初始值指向net_ctl_permissions()函数:


exp程序的注释解释了,选择net_sysctl_root.permissions,是因为它上方有16个'\0'字节:
执行objdump,查看内核文件.data节区中,net_sysctl_root上方的内容,就可以认证这一点,通常由于结构体对齐填充了0,或者编译器安排了值为0的变量在它上方:
这样一来,将上图标红的0xff字节所在地址0xffffffff81cdf496+7(图中按大端字节序书写),作为timeout地址传给__sys_recvmmsg(),就可以使timeout->tv_sec = 0xff(标红的8字节),timeout->tv_nsec = 0(更上方的8字节):
传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2025-7-14 18:56
被jmpcall编辑
,原因: