Linux sudo 漏洞可能導致未經授權的特權存取

2019-10-24 06:05:00

在 Linux 中利用新發現的 sudo 漏洞可以使某些使用者以 root 身份執行命令,儘管對此還有所限制。

sudo 命令中最近發現了一個嚴重漏洞,如果被利用,普通使用者可以 root 身份執行命令,即使在 /etc/sudoers 檔案中明確禁止了該使用者這樣做。

sudo 更新到版本 1.8.28 應該可以解決該問題,因此建議 Linux 管理員盡快這樣做。

如何利用此漏洞取決於 /etc/sudoers 中授予的特定許可權。例如,一條規則允許使用者以除了 root 使用者之外的任何使用者身份來編輯檔案,這實際上將允許該使用者也以 root 使用者身份來編輯檔案。在這種情況下,該漏洞可能會導致非常嚴重的問題。

使用者要能夠利用此漏洞,需要在 /etc/sudoers 中為使用者分配特權,以使該使用者可以以其他使用者身份執行命令,並且該漏洞僅限於以這種方式分配的命令特權。

此問題影響 1.8.28 之前的版本。要檢查你的 sudo 版本,請使用以下命令:

$ sudo -VSudo version 1.8.27     <===Sudoers policy plugin version 1.8.27Sudoers file grammar version 46Sudoers I/O plugin version 1.8.27

該漏洞已在 CVE 資料庫中分配了編號 CVE-2019-14287。它的風險是,任何被指定能以任意使用者執行某個命令的使用者,即使被明確禁止以 root 身份執行,它都能逃脫限制。

下面這些行讓 jdoe 能夠以除了 root 使用者之外的其他身份使用 vi 編輯檔案(!root 表示“非 root”),同時 nemo 有權執行以除了 root 身份以外的任何使用者使用 id 命令:

# affected entries on host "dragonfly"jdoe dragonfly = (ALL, !root) /usr/bin/vinemo dragonfly = (ALL, !root) /usr/bin/id

但是,由於存在漏洞,這些使用者中要麼能夠繞過限制並以 root 編輯檔案,或者以 root 使用者身份執行 id 命令。

攻擊者可以通過指定使用者 ID 為 -14294967295 來以 root 身份執行命令。

sudo -u#-1 id -u

或者

sudo -u#4294967295 id -u

響應為 1 表明該命令以 root 身份執行(顯示 root 的使用者 ID)。

蘋果資訊保安團隊的 Joe Vennix 找到並分析該問題。