CVE-2015-3636

本文详细介绍了CVE-2015-3636,一个Android系统中的Linux内核级别Use-After-Free漏洞。该漏洞存在于Linux内核的Ping.c文件中,通过特定的socket和connect调用序列可能导致系统崩溃或提权。作者分析了漏洞的成因、POC和利用步骤,涉及到内核的连接和删除机制,以及如何通过该漏洞获取root权限。此外,文章还讨论了在有PXN防护的系统中如何利用ROP技术或ret2dir技术来绕过防护。
摘要由CSDN通过智能技术生成

最近这今年,寻找一个android系统上可通用使用的root提权漏洞变得越来越困难,一方面是因为android系统的碎片化十分严重,另一方面是因为android系统上的漏洞缓冲机制在不断的引入。在这篇文章中我将为大家简单的讲述一下CVE-2015-3636这个漏洞的poc和exploit。其实要去稳定和有效的去利用这样一个漏洞并不是一件容易的事情,我们一步一步的来看。

0.漏洞概述:

漏洞属于linux内核级别的use-after-free漏洞,存在于Linux内核的Ping.c文件中。当用户尝试通过一个socket(AF_INET,SOCK_DGRAM,IPPROTO_ICMP)所返回的socket file descriptor来调用两次一个sa_family==AF_UNSPEC的connect()时就会因为访问0x200200这个地址引起系统crash。除此,如果攻击者巧妙的填充或者覆盖PING socket对象,就能达到获取root权限的目的。并且,正是因为漏洞存在于android系统的基础部分Linux内核当中,才让这个漏洞有能通用利用的可能性。

1.漏洞分析&poc

这个漏洞是被keen team团队的Wen Xu和Wu shi发现并尝试利用的,目前已经被修补,CVE编号为:CVE-2015-3636。

我们从漏洞的补丁来分析漏洞:


我们从补丁源码可以看出,里面添加了sk_nulls_node_init(sk->nulls_node);这样一句代码。那么好,以这句话为切入点,结合前面概述中提到的poc思路分析漏洞原理。

通过浏览内核代码中关于sk_nulls_node_init(hlist_nulls_node *node)函数的具体实现后发现,其实这个函数的作用就是将参数所传入的的node的next成员和pprev成员赋为NULL。


概述中我们讲到的,利用socket(AF_INET,SOCK_DGRAM,IPPROTO_ICMP)所返回的socket file descriptor来调用两次一个sa_family==AF_UNSPEC的connect()时就会因为访问0x200200这个地址引起系统crash。接下来我们跟踪一下代码执行流程。

首先使用sa_family==AF_UNSPEC调用connect时会进入到inet_dgram_connect()函数中,

我们从补丁源码可以看出,里面添加了sk_nulls_node_init(sk->nulls_node);这样一句代码。那么好,以这句话为切入点,结合前面概述中提到的poc思路分析漏洞原理。

通过浏览内核代码中关于sk_nulls_node_init(hlist_nulls_node *n)函数的具体实现后发现,其实这个函数的作用就是将参数所传入的的hlist_null_node的next成员和pprev成员赋为NULL。

概述中我们讲到的,利用socket(AF_INET,SOCK_DGRAM,IPPROTO_ICMP)所返回的socket file descriptor来调用两次一个sa_family==AF_UNSPEC的connect()时就会因为访问0x200200这个地址引起系统crash。接下来我们跟踪一下代码执行流程。

首先使用sa_family==AF_UNSPEC调用connect时会进入到inet_dgram_connect()函数中,在函数中我们可以看到因为sa_family==AF_UNSPEC导致程序会执行红框中

的逻辑,而这条语句中最终调用了sk->sk_prot->disconnect(sk,flags)函数,sk_prot是sk对象的的一个成员&#

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值