OpenBSD 中的漏洞允許在 smtpd、ldapd 和 radiusd 中進行權限提升和身份驗證繞過

佳麗斯公司 透露弱點 在 OpenBSD 中,其中之一允許您無需身份驗證即可遠程連接到某些網絡服務,而另外三個則可以增加它們在系統中的權限。 Qualys 報告指出了 OpenBSD 開發人員的快速響應——所有問題都得到了解決 淘汰 в 的OpenBSD 6.5 и 的OpenBSD 6.6 私人通知後40小時內。

可遠程利用的漏洞是由於在 libc 庫中安排對身份驗證處理程序的調用時出錯,該程序調用
/usr/libexec/auth/login_style 程序在命令行上傳遞參數。 包括使用可選參數“-s service”調用 login_style 時,允許傳遞協議名稱。 如果在用戶名的開頭使用“-”字符,則此名稱將在運行 login_style 時被視為一個選項。 因此,如果您在身份驗證期間指定“-schallenge”或“-schallenge: passwd”作為用戶名,則 login_style 會將請求視為使用處理程序的請求 S/鍵.

問題在於 login_style 中的 S/Key 協議僅在形式上得到支持,但實際上被忽略並輸出了認證成功的標誌。 因此,攻擊者可以偽裝成“-challenge”用戶並繞過身份驗證並在不指定密碼或密鑰的情況下獲得訪問權限。 所有使用常規 libc 調用進行身份驗證的網絡服務都可能受到該問題的影響。 例如,在 smtpd (AUTH PLAIN)、ldapd 和 radiusd 中確認了繞過身份驗證的能力。

該漏洞不會在 sshd 中表現出來,因為它通過檢查用戶在系統中的存在來提供額外的保護。 但是,sshd 可用於測試系統是否易受漏洞影響 - 當訪問用戶名“-sresponse:passwd”時,連接掛起,因為 sshd 等待 login_passwd 返回調用(挑戰)的參數,而 login_passwd等待傳遞缺少的參數(名稱“-sresponse”作為一個選項)。 潛在的本地攻擊者可能會嘗試繞過 su 實用程序中的身份驗證,但傳遞名稱“-sresponse”會導致進程崩潰,因為在執行 getpwnam_r("-schallenge", ...) 函數時會返回空指針.

其他漏洞:

  • CVE-2019-19520 - 通過操縱帶有將組更改為“auth”的 sgid 標誌的 xlock 實用程序進行本地權限提升。 在xlock代碼中,只有當用戶ID(setuid)發生變化時,才禁止重新定義庫路徑,這使得攻擊者可以更改環境變量“LIBGL_DRIVERS_PATH”並組織加載他的共享庫,並執行其代碼在特權升級到“auth”組之後。
  • CVE-2019-19522 - 在系統中啟用 S/Key 或 YubiKey 身份驗證(默認情況下未啟用)時,允許“auth”組中的本地用戶以 root 身份運行代碼。 作為可以通過利用上述 xlock 漏洞訪問的“auth”組的成員,允許將文件寫入 /etc/skey 和 /var/db/yubikey 目錄。 例如,攻擊者可以添加一個新的 /etc/skey/root 文件以通過 S/Key 生成用於根身份驗證的一次性密鑰。
  • CVE-2019-19519 - 可以通過使用 su 實用程序進行操作來增加資源限制。 當指定“-L”選項時,這意味著在失敗的情況下循環重複身份驗證嘗試,用戶類別僅設置一次並且不會在後續嘗試中重置。 攻擊者可以在第一次嘗試使用不同的帳戶類別輸入其他人的登錄名時執行“su -l -L”,但在第二次嘗試成功通過他自己的身份驗證時。 在這種情況下,用戶將設置與第一次嘗試時指定的用戶類別相對應的限制(例如,最大進程數或進程的內存大小)。 該方法僅適用於從非特權用戶借用限制,因為 root 用戶需要在 wheel 組中)。

此外,還可以注意到 執行 在 OpenBSD 中,一種檢查系統調用有效性的新方法進一步使漏洞利用複雜化。 該方法僅在從先前註冊的內存區域訪問系統調用時才允許執行系統調用。 標記內存區域 建議 新的系統調用 系統調用().

來源: opennet.ru