Linux sudo 被曝提權漏洞,任意使用者均能以 root 身份執行命令

Mohit Kumar發表於2019-10-16

Linux 使用者請注意!根據外媒的報導,Linux sudo 被曝出存在一個提權漏洞,可完全繞過 sudo 的安全策略。

先簡單說明一下情況,報導指出 sudo 存在一個安全策略隱患,即便 /etc/sudoers  配置檔案中明確表明不允許以 root 使用者進行訪問,但通過該漏洞,惡意使用者或程式仍可在目標 Linux 系統上以 root 使用者身份執行任意命令。

sudo,也就是以超級管理員身份執行superuser do的意思。sudo 是 Linux 中最常使用的重要實用程式之一,它功能十分強大,幾乎安裝在每一款基於 UNIX 或 Linux 的作業系統上,也是這些作業系統的核心命令。作為一個系統命令,普通使用者可通過它以特殊許可權來執行程式或命令(通常以 root 使用者身份執行命令),而無需切換使用環境。

預設情況下,在大多數 Linux 發行版中,/etc/sudoers 檔案中 RunAs 規約的 ALL 關鍵字允許 admin 或 sudo 組中的所有使用者以系統中的任何有效使用者身份執行任何命令。如下圖所示:

Linux sudo 被曝提權漏洞,任意使用者均能以 root 身份執行命令

然而,在 Linux 系統中存在一條基本安全正規化 —— 許可權劃分。管理員可以配置 sudoers 檔案,來指定哪些使用者可以執行哪些命令。如此一來,即使限制了使用者以 root 使用者身份執行特定命令或任何命令,該漏洞也可能允許使用者繞過此安全策略並完全接管系統。

sudo 開發者說到: “即便 RunAs 規約明確禁止 root 使用者訪問,但如果 RunAs 規約檔案中首先列出了 ALL 關鍵字,具有 sudo 許可權的使用者就可以使用它來以 root 身份執行任意命令。”

Linux sudo 被曝提權漏洞,任意使用者均能以 root 身份執行命令

如何利用此漏洞?

據悉,該漏洞由蘋果資訊保安部門的 Joe Vennix 追蹤發現(漏洞的 CVE ID 為 CVE-2019-14287 )。如果想要利用這個漏洞,只需按以下的方式執行即可:

sudo -u#-1 id -u

或者

sudo -u#4294967295 id -u

不過我們也能看到這裡存在一個這樣的前提,那就是你的安全策略設定如下(幸運的是,這不是標準的配置):

eviluser = (ALL, !root) /usr/bin/vi

然後這個 eviluser 就能夠通過sudo -u#-1 vi命令以 root 身份執行vi

之所以會產生這個漏洞,是因為將使用者 ID 轉換為使用者名稱的函式會將 -1(或無效等效的 4294967295)誤認為是 0,而這正好是 root 的使用者 ID 。此外,由於通過 -u 選項指定的使用者 ID 在密碼資料庫中不存在,因此不會執行任何 PAM 會話模組。

最後,快將 sudo 升級到 1.8.28 最新版本吧,新版本已於今天釋出!該漏洞會影響 1.8.28 之前的所有版本。

Linux sudo 被曝提權漏洞,任意使用者均能以 root 身份執行命令

訂閱“Linux 中國”官方小程式來檢視

相關文章