作為 Linux 中最常使用的重要實(shí)用程序之一,Sudo 幾乎安裝在每一款 UNIX 和 Linux 發(fā)行版上,以便用戶(hù)調(diào)用和實(shí)施核心命令。 然而近期曝出的一個(gè)提權(quán)漏洞,卻直指 sudo 的一個(gè)安全策略隱患 —— 即便配置中明確不允許 root 用戶(hù)訪(fǎng)問(wèn),該漏洞仍可允許惡意用戶(hù)或程序,在目標(biāo) Linux 系統(tǒng)上以 root 用戶(hù)身份執(zhí)行任意命令。

(題圖 via Hacker News )
據(jù)悉,Sudo 特指“超級(jí)用戶(hù)”。作為一個(gè)系統(tǒng)命令,其允許用戶(hù)以特殊權(quán)限來(lái)運(yùn)行程序或命令,而無(wú)需切換使用環(huán)境(通常以 root 用戶(hù)身份運(yùn)行命令)。
默認(rèn)情況下,在大多數(shù) Linux 發(fā)行版中(如屏幕快照所示),/ etc / sudoers 的 RunAs 規(guī)范文件中的 ALL 關(guān)鍵字,允許 admin 或 sudo 分組中的所有用戶(hù),以系統(tǒng)上任何有效用戶(hù)的身份運(yùn)行任何命令。
然而由于特權(quán)分離是 Linux 中最基本的安全范例之一,因此管理員可以配置 sudoers 文件,來(lái)定義哪些用戶(hù)可以運(yùn)行哪些命令。

這樣一來(lái),基板限制了用戶(hù)以 root 身份運(yùn)行特定或任何命令,該漏洞也可允許用戶(hù)繞過(guò)此安全策略,并完全控制系統(tǒng)。
Sudo 開(kāi)發(fā)者稱(chēng): “只要 Runas 規(guī)范明確禁止 root 訪(fǎng)問(wèn)、首先列出 ALL 關(guān)鍵字,具有足夠 sudo 權(quán)限的用戶(hù)就可以使用它來(lái)以 root 身份運(yùn)行命令?!?/p>
據(jù)悉,該漏洞由 蘋(píng)果 信息安全部門(mén)的 Joe Vennix 追蹤發(fā)現(xiàn)(CVE-2019-14287)。且想要利用這個(gè) bug,只需 Sudo User ID -1 或 4294967295 。

這是因?yàn)閷⒂脩?hù) ID 轉(zhuǎn)換為用戶(hù)名的函數(shù),會(huì)將 -1(或無(wú)效等效的 4294967295)誤認(rèn)為 0,而這正好是 root 用戶(hù) User ID 。
此外,由于通過(guò) -u 選項(xiàng)指定的 User ID 在密碼數(shù)據(jù)庫(kù)中不存在,因此不會(huì)運(yùn)行任何 PAM 會(huì)話(huà)模塊。
綜上所述,該漏洞影響最新版本 1.8.28 之前的所有 Sudo 版本。慶幸的是,幾個(gè)小時(shí)前,各大 Linux 發(fā)行版都已經(jīng)在向用戶(hù)推送新版本了。
好了,本文結(jié)束,感謝大家對(duì)腳本之家網(wǎng)站的支持!