man visudo
解釋 visudo 將不會(預設)使用EDITOR
環境VISUAL
變數。
它指出
“如果 visudo 使用的編輯器允許 shell 轉義,則沒有簡單的方法可以阻止使用者獲得 root shell。”
現在我很困惑安全風險到底在哪裡。我相信
- 只有 root 可以使用 visudo 進行編輯
/etc/sudoers
- 只有 root 可以更改 root 的環境變數
- root 已經有 root shell
可能有一個用例不成立,但我想不起來。
答案1
嚴格來說,我認為運行任意編輯器不會帶來額外的安全風險visudo
。顯然,運行的使用者visudo
已經具有編輯權限/etc/sudoers
,因此能夠添加允許在系統上執行任何其他命令的規則。因此,無論要執行哪個編輯器,使用者都可以visudo
透過新增新的 sudo 規則來間接執行他們想要的任何內容。
我認為文件中有關EDITOR
和VISUAL
環境變數的建議是關於在繞過 sudo 的標準日誌記錄時執行 root shell(或任意命令)。預設情況下,sudo 將所有成功和不成功的身份驗證記錄到系統日誌中。這為系統管理員提供了有關哪些使用者透過 sudo 執行哪些命令的審計追蹤。如果使用者使用 進行更改/etc/sudoers
,visudo
則可以透過校驗和或檢視文件來查看。但是,如果使用者可以透過 獲得 root shell visudo
,他們就可以執行任意命令,而無需任何審計追蹤。
因此,安全風險與授予 run 權限相同sudo bash
,即具有該權限的使用者可以獲得 root shell 並執行任意程式碼,而不會限製或記錄所執行的命令。