Linux sudo 漏洞可能導致未經授權的特權訪問
sudo 命令中最近發現了一個嚴重漏洞,如果被利用,普通用戶可以 root 身份運行命令,即使在 /etc/sudoers
文件中明確禁止了該用戶這樣做。
將 sudo
更新到版本 1.8.28 應該可以解決該問題,因此建議 Linux 管理員儘快這樣做。
如何利用此漏洞取決於 /etc/sudoers
中授予的特定許可權。例如,一條規則允許用戶以除了 root 用戶之外的任何用戶身份來編輯文件,這實際上將允許該用戶也以 root 用戶身份來編輯文件。在這種情況下,該漏洞可能會導致非常嚴重的問題。
用戶要能夠利用此漏洞,需要在 /etc/sudoers
中為用戶分配特權,以使該用戶可以以其他用戶身份運行命令,並且該漏洞僅限於以這種方式分配的命令特權。
此問題影響 1.8.28 之前的版本。要檢查你的 sudo
版本,請使用以下命令:
$ sudo -V
Sudo version 1.8.27 <===
Sudoers policy plugin version 1.8.27
Sudoers file grammar version 46
Sudoers 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/vi
nemo dragonfly = (ALL, !root) /usr/bin/id
但是,由於存在漏洞,這些用戶中要麼能夠繞過限制並以 root 編輯文件,或者以 root 用戶身份運行 id
命令。
攻擊者可以通過指定用戶 ID 為 -1
或 4294967295
來以 root 身份運行命令。
sudo -u#-1 id -u
或者
sudo -u#4294967295 id -u
響應為 1
表明該命令以 root 身份運行(顯示 root 的用戶 ID)。
蘋果信息安全團隊的 Joe Vennix 找到並分析該問題。
作者:Sandra Henry-Stocker 選題:lujun9972 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive