在核心 Linux 該漏洞(已被賦予一個非官方名稱)已被修復。 ssh-keysign-pwn此漏洞允許本地非特權使用者讀取本應只有 root 使用者才能存取的文件,包括私密金鑰 SSH 主機金鑰,以及在某些情況下讀取 /etc/shadow 文件。截至發稿時,該漏洞尚未分配具體的 CVE 編號。
儘管名稱如此,但這並非 OpenSSH 作為網頁伺服器 sshd 的一個 bug,而是 缺點 在核心邏輯中 Linux這與 ptrace 檢查以及透過 pidfd_getfd(2) 存取其他進程的檔案描述符有關。 OpenSSH 工具 ssh-keysign 被證明是一個方便的利用範例,因為它使用私鑰,而私鑰通常由 root 使用者持有,普通使用者無法存取。
錯誤的本質 問題在於 `__ptrace_may_access()` 函數錯誤地處理了進程的狀態,該進程的記憶體結構 `mm` 已經消失,但其開啟的檔案描述符仍然存在。在進程終止期間,核心會在透過 `exit_files()` 關閉檔案之前呼叫 `exit_mm()`。在這短暫的時間內,該進程似乎不再擁有正常的使用者位址空間,但其開啟的檔案仍然存在。因此,可以繞過「可轉儲」狀態檢查,`pidfd_getfd()` 函數可以存取具有匹配 UID 的其他進程的檔案描述符。
一個實際應用場景是,一些 setuid 程式會先以 root 權限開啟敏感文件,然後放棄權限並退出,但句柄仍然保持開啟狀態。已發布的描述以 ssh-keysign 為例:它會開啟 /etc/ssh/ssh_host_{ecdsa,ed25519,rsa}_key 文件,然後放棄權限,如果 EnableSSHKeysign 被停用,則可以退出。這些金鑰應該只有 root 使用者才能訪問,因為它們用於基於主機的身份驗證。
第二個例子是 chage 命令,它可以打開 /etc/shadow 文件,然後重置其有效權限並退出。因此,這種攻擊不一定會立即提供 root shell,但確實可以存取通常被視為敏感檔案的內容。 /etc/shadow 檔案外洩會帶來後續離線密碼猜測的風險,而 SSH 主機私鑰外洩則會帶來主機欺騙或針對受信任 SSH 腳本的攻擊的風險。
此修復方案已合併到主分支。 Linux提交 31e62c2ebbfd,標題為「ptrace:略微合理的 'get_dumpable()' 邏輯改變了可轉儲性檢查的行為:內核現在會在 mm 消失時保留 user_dumpable 狀態,並且需要正確的 CAP_SYS_PTRACE 檢查才能繞過。此
該漏洞由 Qualys 報告,並由 Linus Torvalds 於 2026 年 5 月 14 日修復。 Phoronix 指出,截至發稿時,該問題影響了所有核心版本。 Linux 截至補丁引入先前的主線內核樹的當前狀態,PoC 作者還指出,提交 31e62c2ebbfd 之前的核心都存在漏洞,包括 5 月 14 日的穩定分支。
尤其重要的是,這次漏洞利用無需載入特定的核心模組,這與近期一些 LPE 漏洞的情況截然不同。只需對系統擁有本地非特權存取權限,並存在一個合適的特權輔助程序即可。 Debian 丹尼爾鮑曼 注意到的這個問題應該透過更新內核,然後重啟進入已打過補丁的內核來解決。
已發布的演示程式碼庫聲稱已在內核版本為 6.12.75 的 Raspberry Pi OS Bookworm 系統上進行測試。 Debian 13, Ubuntu 22.04, Ubuntu 24.04, Ubuntu 26.04,拱門和 CentOS 9. 此列表應視為作者關於 PoC 的數據,而不是詳盡的列表:由於該錯誤存在於一般內核邏輯中,因此實際覆蓋範圍取決於內核版本以及特定發行版是否有向後移植修復程序。
對於管理員而言,基本建議很簡單:安裝適用於您發行版的最新核心包並重新啟動系統。如果懷疑攻擊者之前曾獲得對機器的本地非特權訪問權限,那麼在更新後,還應考慮輪換 SSH 主機密鑰並檢查 `/etc/shadow/accounts` 文件,因為該漏洞本身與讀取敏感文件有關,而不僅僅是繞過訪問檢查。
В Debian 修復程序的移植工作已經開始:Baumann 報告稱已在 trixie-fastforward-backports 專案中 cherry-pick 了上游的提交,並向其發送了合併請求。 Debian sid。合併請求明確指出,提交 31e62c2 正在重新定位,以修復 dumpability 的 ptrace 邏輯,該邏輯允許非特權使用者讀取 root 檔案。
來源: linux.org.ru
