OpenSMTPD 中允許遠端和本地 root 存取的漏洞

佳麗斯公司 透露 郵件伺服器中的另一個遠端嚴重漏洞(CVE-2020-8794) 打開SMTPD,由 OpenBSD 專案開發。 就像一月底確定的那樣 脆弱性,一個新問題使得使用 root 使用者權限在伺服器上遠端執行任意 shell 命令成為可能。 漏洞 淘汰 在問題 OpenSMTPD 6.6.4p1.

這個問題是由將郵件傳送到遠端郵件伺服器的程式碼中的錯誤所引起的(而不是處理傳入連線的程式碼中的錯誤)。 攻擊可能發生在客戶端和伺服器端。 在客戶端,攻擊可能發生在 OpenSMTPD 的預設設定中,其中 OpenSMTPD 僅接受內部網路介面 (localhost) 上的請求並將郵件訊息傳送到外部伺服器。 要利用此漏洞,只需在發送信件期間,OpenSMTPD 與攻擊者控制的郵件伺服器建立會話,或者攻擊者可以插入用戶端連線(MITM 或在透過 DNS 或 BGP 進行攻擊期間重定向) )。

對於伺服器端攻擊,OpenSMTPD 必須設定為接收來自其他郵件伺服器的外部網路請求或提供允許您向任意電子郵件發送請求的第三方服務(例如網站上的位址確認表單)。 例如,攻擊者可以連接到 OpenSMTPD 伺服器並發送錯誤的信件(發送給不存在的用戶),這將導致回應向攻擊者的伺服器發送帶有錯誤代碼的信件(退回)。 當 OpenSMTPD 連線向攻擊者的伺服器發送通知時,攻擊者可以利用此漏洞。 攻擊過程中註入的shell指令被放置在OpenSMTPD重新啟動時以root權限執行的檔案中,因此攻擊者必須等待OpenSMTPD重新啟動或發動OpenSMTPD崩潰才能完成攻擊。

該問題出現在用於解析建立連線後遠端伺服器傳回的多行回應的程式碼中的 mta_io() 函數中(例如,「250-ENHANCEDSTATUSCODES」和「250 HELP」)。 OpenSMTPD 計算出第一行包含由「-」字元分隔的三位數數字和文本,第二行包含由空格分隔的三位數數字和文本。 如果第二行中的三位數後面沒有空格和文本,則用於定義文本的指標將設定為“\0”字元後面的字節,並嘗試複製末尾後面的資料將行放入緩衝區。

應 OpenBSD 專案的要求,此漏洞利用詳情的發布已推遲至 2 月 26 日,以便用戶更新系統。該問題自 2015 年 12 月起就存在於程式碼庫中,但直到 2018 年 5 月才可利用漏洞執行 root 權限的程式碼。研究人員已準備了一個可用的漏洞利用原型,並在 OpenBSD 6.6 和 OpenBSD 5.9 的 OpenSMTPD 建置版本中成功測試。 Debian 10, Debian 11(測試版)和 Fedora 31。

在 OpenSMTPD 中也 已確定 另一個漏洞(CVE-2020-8793)允許本機使用者讀取系統上任何檔案的第一行。例如,可以讀取包含 root 使用者密碼雜湊值的 /etc/master.passwd 檔案的第一行。此外,如果另一個使用者的檔案與 /var/spool/smtpd/ 目錄位於同一檔案系統上,漏洞也允許讀取該檔案的全部內容。在許多發行版中,此漏洞無法被利用。 Linux其中 /proc/sys/fs/protected_hardlinks 的值設定為 1。

該問題是由於不完全消除造成的 проблем,在 2015 年 Qualys 進行的審計中表示。 攻擊者可以透過設定「PATH=.」變量,以「_smtpq」群組的權限來執行其程式碼。 並在目前目錄中放置一個名為 makemap 的腳本(smtpctl 實用程式執行 makemap 而不明確指定路徑)。 透過取得對「_smtpq」群組的存取權限,攻擊者可以引發競爭條件(在離線目錄中建立一個大檔案並發送 SIGSTOP 訊號),並在處理完成之前將離線目錄中的檔案替換為硬檔案。指向需要讀取其內容的目標檔案的符號連結。

值得注意的是,在Fedora 31中,漏洞允許您立即獲得root群組的權限,因為smtpctl進程配備了setgid root標誌,而不是setgid smtpq標誌。 透過取得 root 群組的存取權限,您可以覆蓋 /var/lib/sss/mc/passwd 的內容並獲得對系統的完全 root 存取權限。

來源: opennet.ru

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster