為什麼 visudo 會讓其他編輯望而卻步?

為什麼 visudo 會讓其他編輯望而卻步?

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 規則來間接執行他們想要的任何內容。

我認為文件中有關EDITORVISUAL環境變數的建議是關於在繞過 sudo 的標準日誌記錄時執行 root shell(或任意命令)。預設情況下,sudo 將所有成功和不成功的身份驗證記錄到系統日誌中。這為系統管理員提供了有關哪些使用者透過 sudo 執行哪些命令的審計追蹤。如果使用者使用 進行更改/etc/sudoersvisudo則可以透過校驗和或檢視文件來查看。但是,如果使用者可以透過 獲得 root shell visudo,他們就可以執行任意命令,而無需任何審計追蹤。

因此,安全風險與授予 run 權限相同sudo bash,即具有該權限的使用者可以獲得 root shell 並執行任意程式碼,而不會限製或記錄所執行的命令。

相關內容