Linux

掛載 /tmp noexec 有多大用處?

  • January 15, 2021

許多人(包括Securing Debian Manual)建議/tmp使用一noexec,nodev,nosuid組選項進行安裝。這通常表現為“縱深防禦”策略的一個元素,通過防止允許​​某人寫入文件的攻擊升級,或具有合法帳戶但沒有其他可寫空間的使用者的攻擊升級。

然而,隨著時間的推移,我遇到noexec了一些毫無用處的爭論(最突出的是 Debian/Ubuntu 開發人員 Colin Watson),原因有幾個:

  1. 使用者可以/lib/ld-linux.so <binary>嘗試執行以獲得相同的效果。
  2. 使用者仍然可以在無法直接執行的腳本上執行系統提供的解釋器

鑑於這些論點,可能需要更多配置(例如debconf,像可執行的臨時目錄),以及潛在的便利性損失,這是一個值得的安全措施嗎?您還知道哪些其他漏洞可以進行規避?

以下是我迄今為止提出的實用程序的論點:

現代核心修復了這個/lib/ld-linux.so漏洞,因此它無法從noexec文件系統映射可執行頁面。

口譯員的觀點當然仍然是一個問題,儘管我認為比人們聲稱的要少。我能想到的原因是,存在許多依賴於特定格式錯誤的系統呼叫的權限提升漏洞。如果沒有攻擊者提供二進製文件,就很難進行惡意系統呼叫。此外,腳本解釋器應該是無特權的(我知道這在歷史上有時並非如此,例如使用 suid perl),因此需要它們自己的漏洞才能在攻擊中有用。顯然,至少可以使用 Python 來執行一些漏洞。

許多“固定”漏洞利用可能會嘗試在 中編寫和執行執行檔/tmp,從而noexec降低陷入腳本攻擊的可能性(例如在漏洞披露和更新檔安裝之間的視窗中)。

因此,/tmp使用noexec.

Debian 的 bug tracker中所述,設置APT::ExtractTemplates::TempDir到rootapt.conf無法noexec訪問的目錄將消除 debconf 問題。

引用自:https://serverfault.com/questions/72356