CVE-2018-9568漏洞分析和利用

一、前言 CVE-2018-9568是一个Linux内核中的类型混淆漏洞,Zer0Con2019有研究人员分享了利用该漏洞root Android的思路,并给漏洞命名为WrongZone。这是一个影响范围较广的漏洞,本文记录了学习分析该漏洞及在 x86_64 Linux 完成利用的过程。 二、漏洞分析 2.1 补丁 该漏洞的补丁链接:commit 9d538fa60bad4f7b23193c89e843797a1cf71ef3 diff --git a/net/core/sock.c b/net/core/sock.c index 9b7b6bbb2a23e7..7d55c05f449d30 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -1654,6 +1654,8 @@ struct sock *sk_clone_lock(const struct sock *sk, const gfp_t priority) sock_copy(newsk, sk); + newsk->sk_prot_creator = sk->sk_prot; + /* SANITY */ if (likely(newsk->sk_net_refcnt)) get_net(sock_net(newsk)); 补丁代码很简单,只有一行赋值代码,因此sk_prot和sk_prot_creator是该漏洞的关键。 sk_prot与sk_prot_creator 它们都是struct sock结构体的成员: struct sock { /**/ struct sock_common __sk_common; /**/ #define sk_prot __sk_common.skc_prot /**/ struct proto *sk_prot_creator; }; struct sock_common { /**/ struct proto *skc_prot; /**/ }; sk_prot_creator和sk_prot(即skc_prot)在源码中的定义如下:...

2024年11月27日 · 4 分钟 · clingcling