日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

sqlite字段是否存在_【漏洞预警】Linux内核存在本地提权漏洞(CVE20198912)

發(fā)布時(shí)間:2023/12/4 linux 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sqlite字段是否存在_【漏洞预警】Linux内核存在本地提权漏洞(CVE20198912) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

更多資訊和分析文章請(qǐng)關(guān)注啟明星辰ADLab微信公眾號(hào)及官方網(wǎng)站(adlab.venustech.com.cn)

漏洞背景

近日,Linux git中發(fā)布一個(gè)commit補(bǔ)丁,該補(bǔ)丁對(duì)應(yīng)的漏洞是一個(gè)本地提權(quán)漏洞CVE-2019-8912,漏洞影響范圍較廣。根據(jù)git中的commit信息可知,該漏洞出現(xiàn)在內(nèi)核'crypto/af_alg.c'中的af_alg_release函數(shù)中,可以通過sockfs_setattr函數(shù)觸發(fā),漏洞類型是use after free,可以導(dǎo)致本地代碼執(zhí)行進(jìn)行權(quán)限提升。

漏洞影響版本
  • Linux 2 .6 ~ Linux 4.20.11

  • Red Hat Enterprise Linux 7,Package: kernel-alt

  • Debian,Release:Jessie,Version:3.16.56-1+deb8u1

  • Debian,Release:Jessie (security),Version:3.16.56-1

  • Debian,Release:stretch,Version:4.9.144-3

  • Debian,Release:stretch (security),Version:4.9.110-3+deb9u6

  • Debian,Release:buster,Version:4.19.16-1

  • Debian,Release:sid,Version:4.19.20-1

Linux Crypto模塊簡(jiǎn)介

Linux內(nèi)核從版本2.5開始引入了加密機(jī)制,為內(nèi)核提供加密功能,應(yīng)用包括:硬件加密設(shè)備驅(qū)動(dòng)、內(nèi)核代碼簽名、硬件隨機(jī)數(shù)生成器、文件系統(tǒng)加密等。從版本2.6.6之后,內(nèi)核源碼提供了豐富的密碼學(xué)算法支持,并可以通過配置編譯選項(xiàng)將加密算法作為模塊編入內(nèi)核。內(nèi)核編譯配置如下圖所示:

但是該加密功能提供的API接口只能在內(nèi)核層進(jìn)行使用,用戶層無法調(diào)用。2010年,有位維護(hù)者向Linux Crypto維護(hù)組提交了一份Crypato API 用戶接口,類似于netlink,基于socket進(jìn)行通信,便于用戶層訪問內(nèi)核加密子系統(tǒng)。功能實(shí)現(xiàn)代碼在文件crypto/af_alg.c中。

漏洞原理及溯源

漏洞存在于crypto 模塊中的af_alg_release()函數(shù)中。af_alg_release()函數(shù)在進(jìn)行對(duì)象釋放時(shí),未將對(duì)象置空。對(duì)應(yīng)commit:9060cb719e61b685ec0102574e10337fa5f445ea補(bǔ)丁代碼如下,補(bǔ)丁添加了一行代碼:sock->sk = NULL; 。

在未添加補(bǔ)丁之前,如果該sock->sk引用計(jì)數(shù)是1,當(dāng)調(diào)用sock_put()進(jìn)行釋放后沒有置空,就直接返回,會(huì)產(chǎn)生一個(gè)sock->sk懸掛指針。

為了分析這個(gè)漏洞的前因后果,先分析下相關(guān)的socket代碼。對(duì)每個(gè)新創(chuàng)建的socket,Linux內(nèi)核都將在sockfs中創(chuàng)建一個(gè)新的inode。Sockfs_*系列函數(shù)就是用來操作sockfs文件系統(tǒng)的。Sockfs_setattr()函數(shù)就是設(shè)置socket文件屬性的。在net/socket.c文件中sockfs_setattr()函數(shù)將會(huì)使用sock->sk對(duì)象。

根據(jù)提交的commit:9060cb719e61b685ec0102574e10337fa5f445ea細(xì)節(jié)可知,在該漏洞披露之前,Linux已經(jīng)修復(fù)了sock_close()和sockfs_setattr()之間的條件競(jìng)爭(zhēng)漏洞,對(duì)應(yīng)commit為6d8c50dcb029872b298eea68cc6209c866fd3e14,具體先看下sockfs_setattr()函數(shù)中的補(bǔ)丁。補(bǔ)丁代碼如下:

行544,首先判斷sock->sk是否為空,如果不為空,行545再將用戶層傳進(jìn)來的iattr->ia_uid賦值為sock->sk->sk_uid。然后看sock_close ()函數(shù)中的補(bǔ)丁。補(bǔ)丁代碼如下:

行1186,替換成了新函數(shù)__sock_release(),該函數(shù)多了一個(gè)參數(shù)inode。__sock_release()函數(shù)實(shí)現(xiàn)如下:

行601,對(duì)inode進(jìn)行判斷,如果不為空,然后調(diào)用inode_lock()函數(shù)對(duì)其進(jìn)行上鎖。其實(shí)該inode本身和要進(jìn)行釋放的socket對(duì)象是對(duì)應(yīng)的。行603,調(diào)用ops中release()函數(shù)進(jìn)行釋放操作。這個(gè)ops中release()函數(shù)只是一個(gè)函數(shù)指針,最終會(huì)根據(jù)用戶注冊(cè)哪種套接字類型決定。行604,再次判斷inode是否為空,如果不為空,再進(jìn)行解鎖。通過對(duì)inode加鎖,防止在對(duì)socket對(duì)象釋放時(shí)進(jìn)行其他操作。

從commit:6d8c50dcb029872b298eea68cc6209c866fd3e14提供的細(xì)節(jié)可知, sock_close()函數(shù)和sockfs_setattr()函數(shù)之間的條件競(jìng)爭(zhēng)可以通過用戶層fchownat()函數(shù)引發(fā)。根據(jù)man手冊(cè)可知,該函數(shù)是用于設(shè)置文件屬性的,例如uid和gid,在內(nèi)核中對(duì)應(yīng)的sockfs_setattr()函數(shù),如下圖所示:

細(xì)節(jié)中描述,該函數(shù)不會(huì)保持文件fd的引用計(jì)數(shù),這也是導(dǎo)致存在條件競(jìng)爭(zhēng)的原因。根據(jù)前文可知,sockfs_setattr()函數(shù)其實(shí)就是設(shè)置UID才操作sock->sk對(duì)象的。

如果再繼續(xù)向前追溯的話,從commit:86741ec25462e4c8cdce6df2f41ead05568c7d5e提供的細(xì)節(jié)可知UID的來龍去脈。該補(bǔ)丁提交于2016年。由于socket 協(xié)議中的結(jié)構(gòu)體struct sock在大多時(shí)候都是和用戶層的sockets一一映射的,sockets對(duì)應(yīng)的內(nèi)核結(jié)構(gòu)體為struct socket。考慮到方便操作,便通過向struct sock添加一個(gè)sk_uid字段來簡(jiǎn)化對(duì)struct socket中的UID的匹配,也因此添加了一個(gè)關(guān)鍵函數(shù)。如下圖所示:

由此可知,本來存在于sock_close()和sockfs_setattr之間的條件競(jìng)爭(zhēng)已經(jīng)被修復(fù),由于crypto/af_alg.c中af_alg_release()函數(shù)沒有將釋放后的sock->sk及時(shí)置空,導(dǎo)致前面所做的安全補(bǔ)丁全部失效。

安全建議

該漏洞補(bǔ)丁已經(jīng)給出,請(qǐng)及時(shí)升級(jí)到最新版本。https://github.com/torvalds/linux/commit/9060cb719e61b685ec0102574e10337fa5f445ea

啟明星辰積極防御實(shí)驗(yàn)室(ADLab)

ADLab成立于1999年,是中國(guó)安全行業(yè)最早成立的攻防技術(shù)研究實(shí)驗(yàn)室之一,微軟MAPP計(jì)劃核心成員,“黑雀攻擊”概念首推者。截止目前,ADLab已通過CVE累計(jì)發(fā)布安全漏洞近1000個(gè),通過 CNVD/CNNVD累計(jì)發(fā)布安全漏洞近500個(gè),持續(xù)保持國(guó)際網(wǎng)絡(luò)安全領(lǐng)域一流水準(zhǔn)。實(shí)驗(yàn)室研究方向涵蓋操作系統(tǒng)與應(yīng)用系統(tǒng)安全研究、移動(dòng)智能終端安全研究、物聯(lián)網(wǎng)智能設(shè)備安全研究、Web安全研究、工控系統(tǒng)安全研究、云安全研究。研究成果應(yīng)用于產(chǎn)品核心技術(shù)研究、國(guó)家重點(diǎn)科技項(xiàng)目攻關(guān)、專業(yè)安全服務(wù)等。

總結(jié)

以上是生活随笔為你收集整理的sqlite字段是否存在_【漏洞预警】Linux内核存在本地提权漏洞(CVE20198912)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。