pam_oath PAM 模組中已發現一個漏洞 (CVE-2024-47191),該模組是 oath-toolkit 包的一部分,用於使用一次性密碼 (OTP) 的雙因素身份驗證,允許非特權用戶獲得系統的root 訪問權限。
pam_oath 模組以 root 身分運行,最初設計用於將 OATH 金鑰放置在 /etc/users.oath 檔案中,該檔案只能由 root 使用者存取。 oath-toolkit 2.6.7 版本新增了將關鍵檔案放置在使用者主目錄(~/.config/users.oath)中的支援。非特權使用者可以使用其金鑰來更改文件,但 pam_oath 在存取這些文件時不會重置權限,並繼續使用不安全的方法來處理文件,因為這些文件位於無法存取修改的目錄中。
該漏洞是由於每次成功進行一次密碼驗證後,pam_oath 都會覆寫金鑰檔案以防止多次使用相同的密碼。重寫操作包括在同一目錄中建立一個鎖定文件,將新內容寫入擴展名為“.new”的文件,然後用新版本替換舊文件。在這種情況下,創建了一個擴展名為“.new”的文件,該文件具有與目標文件相同的權限,但它是由具有 root 權限的進程寫入的,並且沒有檢查該文件是否存在。
如果將檔案放置在系統目錄中,則沒有問題,但在支援將帶有密鑰的檔案放置在主目錄中後,出現了一個易於利用的漏洞。要進行攻擊,只需建立符號連結「~/.config/oath.secrets.new」並將其指向成功身份驗證後將被覆寫的任何系統檔案。
要獲得 root 存取權限,您可以將符號連結指向 /etc/shadow 檔案。在這種情況下,pam_oath 會將目前的金鑰清單寫入 /etc/shadow 並將擁有者和權限與 users.oath 檔案同步。由於users.oath檔案屬於該用戶,因此該用戶將被設定為/etc/shadow的擁有者,之後攻擊者可以編輯/etc/shadow檔案並將root帳號的新登入參數寫入其中。
該漏洞自 oath-toolkit 2.6.7 版本起就已存在,並在 2.6.12 版本中修復(修復步驟 1、2、3)。您可以在以下頁面追蹤漏洞在各個發行版中的修復進度: Debian, UbuntuRHEL、SUSE/openSUSE、Fedora、Arch。此漏洞僅影響允許將金鑰檔案放置在主目錄中的配置,例如,在 PAM 設定中使用「auth [user_unknown=ignore success=ok] pam_oath.so usersfile=${HOME}/user.oath」行時。
此外,我們還可以提及最近在 Authd 軟體包的 PAM 模組中發現的漏洞 (CVE-2024-9313),該軟體包由該專案開發。 Ubuntu一個漏洞允許透過 Authd 代理管理的用戶冒充同一代理管理的任何其他用戶,並成功地透過 su、sudo 或 ssh 命令以該用戶的身份進行身份驗證。此問題已在 Authd 版本 0.3.5 中修復。
來源: opennet.ru
