欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

怎么進行Linux內(nèi)核XFRM權(quán)限提升漏洞的分析

怎么進行Linux內(nèi)核XFRM權(quán)限提升漏洞的分析,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

為楊浦等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及楊浦網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為做網(wǎng)站、網(wǎng)站建設、楊浦網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

0x00 背景介紹


2017年11月24日, OSS社區(qū)披露了一個由獨立安全研究員Mohamed Ghannam發(fā)現(xiàn)的一處存在于Linux 內(nèi)核Netlink socket子系統(tǒng)(XFRM)的漏洞,漏洞編號CVE-2017-16939。

360CERT經(jīng)過實際驗證,確認該漏洞確實存在,但poc作者認為存在UAF漏洞,存在提權(quán)的可能性,而我們認為并沒有UAF,只是使用未初始化鏈表造成的crash(空指針引用),并且使用的內(nèi)存已經(jīng)被初始化了,實際上無法提前布局,不能進一步利用達到提權(quán)的目的。

0x01漏洞概述


Netlink 是一種特殊的 socket,它是一種在內(nèi)核與用戶間進行雙向數(shù)據(jù)傳輸?shù)囊环N方式,用戶態(tài)應用使用標準的 socket API 就可以使用 Netlink 提供的強大功能,內(nèi)核態(tài)需要使用專門的內(nèi)核 API 來使用 Netlink。

XFRM是 Linux 2.6 內(nèi)核為安全處理引入的一個可擴展功能框架,用來在數(shù)據(jù)包經(jīng)過路由路徑的過程中對其進行修改。

漏洞原因是:在調(diào)用xfrm_dump_policy_done函數(shù)之前,如果不事先調(diào)用xfrm_dump_policy,會導致鏈表沒有被初始化,造成空指針引用,產(chǎn)生崩潰。官方修正的補丁添加了xfrm_dump_policy_start函數(shù),確保調(diào)用done之前會進行初始化。

0x02漏洞攻擊面影響


1.  影響版本

影響Linux Kernel 2.6.28~4.14之間的版本

影響版本鏈接:

http://www.securityfocus.com/bid/101954

2.   修復版本

漏洞已被作為1137b5e(“ipsec:修復異常xfrm策略轉(zhuǎn)儲崩潰”補?。┑囊徊糠纸鉀Q,在4.14-rc7版本中被修復。

0x03漏洞詳情


1.  技術(shù)細節(jié)

在函數(shù) static int netlink_dump(struct sock*sk) 中:

(/net/netlink/af_netlink.c)

怎么進行Linux內(nèi)核XFRM權(quán)限提升漏洞的分析在上面的代碼中,我們可以看到當sk->sk_rcvbuf小于等于sk_rmem_alloc(注意我們可以通過stockpot控制sk->sk_rcvbuf)時,netlink_dump()檢查失敗,它跳轉(zhuǎn)到函數(shù)的結(jié)尾并退出,但是cb_running的值不會更改為false。

所以當atomic_read(&sk->sk_rmem_alloc) >= sk->sk_rcvbuf 時,不應調(diào)用 cb->done(cb),且nlk->cb_running 應設為 false。否則在 static voidnetlink_sock_destruct(struct sock *sk) 函數(shù)中: 

怎么進行Linux內(nèi)核XFRM權(quán)限提升漏洞的分析

該函數(shù)會在close(socketfd)時觸發(fā)。該函數(shù)檢測到 nlk->cb_running 不為 false,就會調(diào)用 done() 函數(shù),即 xfrm_dump_policy_done(),導致 crash。

怎么進行Linux內(nèi)核XFRM權(quán)限提升漏洞的分析

2.  poc的驗證分析

原作者 poc 中的執(zhí)行流程如下:

(1)do_setsockopt() :改小 sk->sk_rcvbuf 值

(2)send_msg(fd,&p->msg):

第一次發(fā)送時,atomic_read(&sk->sk_rmem_alloc) = 0 < sk->sk_rcvbuf,發(fā)送之后,sk->sk_rmem_alloc 累加,結(jié)果在第一次發(fā)送后:

atomic_read(&sk->sk_rmem_alloc) >= sk->sk_rcvbuf

(3)send_msg(fd,&p->msg):

第二次發(fā)送之后,此時atomic_read(&sk->sk_rmem_alloc)>= sk->sk_rcvbuf,未調(diào)用 done(),但 nlk->cb_running 值保持為 true。

(4)close(fd):調(diào)用cb->done(cb),產(chǎn)生崩潰。

按上述原理,其實即使不調(diào)用 “do_setsockopt();”改小 sk->sk_rcvbuf 值,只要多次 send,那么當 sk->sk_rmem_alloc 累加到超過 sk->sk_rcvbuf值,再次 send 后,“close(fd)”或進程退出時,就會導致 crash。

原 poc 改為如下也可觸發(fā)(不調(diào)用do_setsockopt()):

怎么進行Linux內(nèi)核XFRM權(quán)限提升漏洞的分析

3.  漏洞分析總結(jié)

crash 原因分析:

原本程序理想流程是 xfrm_dump_policy() ->xfrm_dump_policy_done(),

xfrm_dump_policy() 時會檢查 callback 中的一個雙向鏈表是否有初始化,若沒有,則初始化之(空鏈)。

怎么進行Linux內(nèi)核XFRM權(quán)限提升漏洞的分析

而 xfrm_dump_policy_done()時默認上述鏈表已初始化,不再檢查,直接讀寫。如前文所述,多次 send 就可以造成:

atomic_read(&sk->sk_rmem_alloc)>= sk->sk_rcvbuf

導致 netlink_dump() 中跳過 xfrm_dump_policy() ,即沒有初始化鏈表,所以 close(fd) 時,xfrm_dump_policy_done() 就會操作未初始化內(nèi)存,導致 crash。

那么若能提前布局這塊內(nèi)存,則可實現(xiàn)任意地址寫值(通過雙向鏈表del操作)。但是,無論是否觸發(fā)初始化鏈表的操作,在之前這塊內(nèi)存都會被memset(0):

怎么進行Linux內(nèi)核XFRM權(quán)限提升漏洞的分析

在__netlink_dump_start函數(shù)里 memset(0) 后,才調(diào)用netlink_dump。接下來 netlink_dump中做sk_rmem_alloc >= sk_rcvbuf 的檢測,失敗后就不去xfrm_dump_policy 了。到后面 xfrm_dump_policy_done 用到的就是之前 memset(0) 的內(nèi)存。這樣就是缺少了 xfrm_dump_policy 過程中的初始化鏈表操作(INIT_LIST_HEAD),最終造成空指針引用。

怎么進行Linux內(nèi)核XFRM權(quán)限提升漏洞的分析

所以這只是使用未初始化鏈表造成的crash(空指針引用),并且使用的內(nèi)存已經(jīng)被初始化了,實際上無法提前布局,不能進一步利用達到提權(quán)的目的。

0x04 修復建議


建議所有受影響用戶,及時進行安全更新,可選方式如下:

1、相關(guān)Linux發(fā)行版已經(jīng)提供了安全更新,請通過 yum 或 apt-get 的形式進行安全更新。

2、自定義內(nèi)核的用戶,請自行下載對應源碼補丁進行安全更新。

補丁鏈接:

https://github.com/torvalds/linux/commit/1137b5e2529a8f5ca8ee709288ecba3e68044df2

看完上述內(nèi)容,你們掌握怎么進行Linux內(nèi)核XFRM權(quán)限提升漏洞的分析的方法了嗎?如果還想學到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

分享題目:怎么進行Linux內(nèi)核XFRM權(quán)限提升漏洞的分析
文章網(wǎng)址:http://aaarwkj.com/article26/igsjjg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設、靜態(tài)網(wǎng)站、網(wǎng)站策劃、網(wǎng)站維護、電子商務、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設網(wǎng)站維護公司
欧美日韩精品综合国产| 日韩欧美一区二区中文字幕视频| 久久精品一品二品三品| 欧美日韩国产精品高清| 亚洲一区二区三区精品国产| 天堂av在线播放观看| 日韩在线中文字幕三区| 国产在线一区二区三区蜜桃| av免费在线观看网页| 亚洲欧美日韩老汉影院| 亚洲av不卡一区二区在线观看| 欧美日韩精品福利一区二区| 日韩精品福利片午夜免费| 在线观看后入大屁股| 97乱碰视频在线观看| 亚洲精品国产自在现线| 欧美一区二区三区一级| 欧美精品亚洲精品日韩| 亚洲精品欧美日韩久久| 日韩国产传媒视频在线观看| 国产91美女黄色在线观看| 国产精品国产三级丝袜| 97成人在线视频免费| 中文字幕欧美人妻在线| 国产三级系列在线观看| 国产精品国产成人生活片| 最新国产毛片久热精品视频| 黄片免费在线播放欧美| 亚洲熟妇av乱码在线| 丰满熟女人妻中文字幕免费| 视频一区中文字幕在线| 日韩av不卡免费播放| 亚洲欧洲国产视频一区二区| 国产av剧情一区二区| 欧美日韩国产综合精品亚洲| 日韩在线一区二区三区电影 | 亚洲综合美女极品啪啪啪| 国内一级黄色片免费观看| 人妻内射一区二区在线视| 精品一区二区人妻乱交| 在线精品91国产在线观看|