ssh-keysign-pwn(CVE-2026-46333)解讀:Linux 本地資訊外洩、SSH 主機金鑰與 /etc/shadow 風險

整理 ssh-keysign-pwn(CVE-2026-46333)的影響、成因、修補狀態、臨時緩解與維運處置建議:這是 Linux kernel ptrace 存取檢查競態導致的本地資訊外洩,可能影響 SSH 主機私鑰與 /etc/shadow。

ssh-keysign-pwn 是圍繞 Linux kernel __ptrace_may_access() 邏輯問題公開的一組利用路徑,CVE 編號為 CVE-2026-46333。它不是遠端未授權漏洞,也不是直接取得 root shell 的漏洞,但風險仍然很高:本地低權限使用者可能讀取本不該存取的 root 敏感檔案,例如 SSH 主機私鑰或 /etc/shadow

對維運來說,重點不是重現 PoC,而是盡快判斷哪些機器受影響、升級核心、重新啟動生效,並在必要時輪換 SSH host keys 和重設密碼。

先說結論

這次漏洞的處置優先級很高,原因有四點:

  • 觸發條件是本地低權限使用者,不需要 root。
  • 已有公開 PoC,利用門檻明顯降低。
  • 影響目標不是普通檔案,而可能是 SSH 主機私鑰和 /etc/shadow
  • 修復需要核心修補並重新啟動,不能只升級套件後不重啟。

如果你的伺服器有多使用者、本地 shell、共享主機、CI runner、容器宿主機、學生機房、跳板機或任何「不完全可信的本地使用者」,應該優先處理。

漏洞是什麼

Qualys 在 2026 年 5 月 15 日透過 oss-security 公開說明:他們此前向 security@kernel.org 回報了 Linux kernel __ptrace_may_access() 的邏輯問題,上游修復已由 Linus 合入。隨後社群出現公開利用程式,因此 Qualys 將資訊發到 oss-security。

Linux kernel CVE 團隊隨後為這個問題分配了 CVE-2026-46333。NVD 頁面顯示該 CVE 來源為 kernel.org,問題描述對應核心提交 ptrace: slightly saner 'get_dumpable()' logic

簡單說,這個漏洞出現在程序退出路徑上。某些特權程序正在退出時,核心中與 ptrace 存取檢查相關的邏輯可能因目標任務已經沒有 mm,而繞過本應依賴的 dumpable 檢查。攻擊者可以在很窄的競態窗口中,取得正在退出的特權程序仍然開啟的檔案描述符。

這也是為什麼它被稱為 ssh-keysign-pwn:公開利用路徑之一會圍繞 ssh-keysign 讀取 SSH host private keys。

為什麼能讀到 SSH 主機私鑰和 /etc/shadow

這個問題本質上是本地資訊外洩。它利用的是特權程式在退出過程中「記憶體描述符已經脫離,但檔案描述符還沒關閉」的時間窗口。

AlmaLinux 的公告對風險說得比較清楚:如果特權程式在降權前開啟了敏感檔案,而攻擊者在退出窗口中成功取得對應檔案描述符,就可能讀取這些敏感檔案。

公開討論中常見的兩個目標是:

  • ssh-keysign:可能涉及 /etc/ssh/ssh_host_*_key 這類 SSH 主機私鑰。
  • chage:可能涉及 /etc/shadow

SSH 主機私鑰外洩後,攻擊者可能偽裝成該主機,影響 SSH 主機身分信任。/etc/shadow 外洩後,攻擊者可以離線破解密碼雜湊,進一步擴大影響。

這也是為什麼它雖然不是「直接 root shell」,但仍然應按高優先級處理。

影響範圍怎麼判斷

從上游角度看,這是 Linux kernel 的漏洞。NVD 記錄顯示該問題在 2026 年 5 月 15 日進入 NVD 資料集,當時 NVD 還沒有給出 CVSS 評分。

發行版層面的狀態要以各自公告為準:

  • AlmaLinux 8、9、10 都發布了處理說明,並在 2026 年 5 月 16 日更新稱 patched kernels 已進入生產倉庫。
  • Debian security tracker 已列出 bullseye、bookworm、trixie、sid 等分支的 vulnerable/fixed 狀態和固定版本。
  • 其他發行版需要分別查看 Ubuntu、Red Hat、SUSE、Arch、Alpine 等官方安全頁面或更新源。

不要只按核心大版本判斷是否安全。發行版會 backport 修復,同一個上游版本號在不同發行版中可能代表不同修補狀態。

應該優先處理哪些機器

建議按風險排序處理:

  1. 多使用者伺服器和共享主機。
  2. 有普通 shell 帳號的跳板機、教學機、開發機。
  3. CI runner、建置機、託管平台宿主機。
  4. 容器宿主機和虛擬化宿主機,尤其是不完全可信 workload 共存的環境。
  5. 公開服務機器,雖然漏洞需要本地存取,但一旦 Web/RCE/弱密碼帶來低權限落點,風險會疊加。

純單使用者桌面環境風險相對低一些,但仍建議隨系統更新修復。原因很簡單:本地低權限程式碼執行在桌面上並不少見,瀏覽器、開發工具、腳本和第三方軟體都可能成為落點。

修復建議

首選方案是安裝發行版提供的修復核心並重新啟動。

不同發行版命令不同,原則相同:

  1. 更新軟體源中繼資料。
  2. 安裝包含 CVE-2026-46333 修復的 kernel 套件。
  3. 重新啟動進入新核心。
  4. uname -r 和發行版安全公告核對目前執行中的核心是否已修復。

AlmaLinux 公告中提到,生產倉庫已推出修復核心,使用者可以執行常規 dnf upgrade 並重啟。Debian tracker 也列出了多個分支的 fixed versions。

需要注意:只安裝新 kernel 套件但不重啟,舊核心仍在執行,漏洞仍然存在。

臨時緩解:收緊 ptrace_scope

如果暫時不能重啟,可以先收緊 Yama 的 ptrace_scope

Qualys 在 oss-security 後續回覆中確認,將 /proc/sys/kernel/yama/ptrace_scope 設定為 2(admin-only attach)或 3(no attach)可以阻止他們已知的公開利用路徑。但他們也說明,理論上可能存在其他利用方式,所以這只是緩解,不是修復。

臨時設定可以用:

1
sudo sysctl -w kernel.yama.ptrace_scope=3

持久化可以寫入 sysctl 設定:

1
echo 'kernel.yama.ptrace_scope = 3' | sudo tee /etc/sysctl.d/99-ssh-keysign-pwn.conf

ptrace_scope=3 會停用 ptrace attach,可能影響 gdbstrace -p 等除錯場景。如果生產環境需要除錯,可以評估使用 2。無論選哪一個,都應盡快安排核心升級和重啟。

是否需要輪換 SSH 主機金鑰

如果機器在漏洞公開前後存在以下情況,建議保守處理:

  • 有不可信本地使用者。
  • 有共享主機或容器/CI 多租戶環境。
  • 有 Web 漏洞、弱密碼、供應鏈腳本等可能給攻擊者本地落點。
  • 日誌中出現可疑本地程序、異常除錯行為或公開 PoC 檔案。
  • 機器在修復前暴露了較長時間。

保守處置包括:

  • 修復並重啟後輪換 SSH host keys。
  • 更新已知主機指紋管理系統。
  • 通知依賴該主機指紋的自動化系統。
  • 檢查 SSH 連線告警,避免誤把合法指紋變化當成中間人攻擊,或反過來忽略真實風險。

如果懷疑 /etc/shadow 已外洩,還應評估密碼重設、禁止弱密碼、檢查是否存在可離線破解的舊雜湊。

需要監控什麼

這類漏洞利用窗口很短,傳統日誌未必能完整記錄。但仍可以關注:

  • 普通使用者目錄下是否出現 ssh-keysign-pwnchage_pwn 或類似 PoC 檔案。
  • 可疑編譯行為,例如短時間內編譯陌生 C 程式。
  • 異常存取 /etc/ssh/ssh_host_*_key/etc/shadow 的跡象。
  • 異常 pidfd_getfdptrace、除錯器相關行為。
  • SSH 主機指紋被外部系統回報異常。

這些訊號不能證明一定被利用,也不能證明沒有被利用。真正的優先事項仍然是補丁、重啟、憑證輪換和風險隔離。

常見誤區

第一個誤區:它不是 OpenSSH 遠端漏洞。名字裡有 ssh-keysign,但根因在 Linux kernel 的 ptrace 存取檢查邏輯,不是 sshd 遠端認證流程。

第二個誤區:沒有本地使用者就完全沒風險。漏洞確實需要本地執行條件,但很多真實攻擊鏈會先透過 Web 服務、CI、腳本、弱密碼或容器逃逸前置步驟取得低權限本地落點。

第三個誤區:設定 ptrace_scope 就夠了。它是臨時緩解,不是根本修復。核心更新和重啟仍然需要做。

第四個誤區:只要沒被拿 root 就沒事。SSH 主機私鑰和 /etc/shadow 的外洩本身就足以導致後續橫向移動、主機偽裝和離線破解風險。

處置清單

建議按這個順序執行:

  1. 盤點受影響 Linux 主機,特別是多使用者和共享環境。
  2. 查看發行版官方安全公告,確認 fixed kernel 版本。
  3. 安裝修復核心並重啟。
  4. 暫時不能重啟的機器,先設定 kernel.yama.ptrace_scope=23
  5. 修復後核對正在執行的核心版本。
  6. 對高風險機器輪換 SSH host keys。
  7. 如果懷疑 /etc/shadow 外洩,評估密碼重設和帳號稽核。
  8. 檢查是否存在公開 PoC、異常編譯和可疑本地除錯行為。

總結

ssh-keysign-pwnCVE-2026-46333)是一個本地資訊外洩漏洞,根因在 Linux kernel __ptrace_may_access() 相關邏輯。它不需要遠端直接打進來,也不直接給 root shell,但可以讓低權限本地使用者讀取高價值敏感檔案,這使它在多使用者、共享主機、CI 和容器宿主環境中非常值得警惕。

最可靠的修復是升級到發行版提供的修復核心並重啟。ptrace_scope=2/3 可以作為臨時緩解,但不能替代補丁。已經暴露在風險窗口中的關鍵主機,還應考慮 SSH 主機金鑰輪換和密碼風險評估。

參考連結:

记录并分享
使用 Hugo 建立
主題 StackJimmy 設計