<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>OpenSSH on KnightLi的博客</title>
        <link>https://www.knightli.com/zh-tw/tags/openssh/</link>
        <description>Recent content in OpenSSH on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-tw</language>
        <lastBuildDate>Sun, 17 May 2026 09:29:03 +0800</lastBuildDate><atom:link href="https://www.knightli.com/zh-tw/tags/openssh/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>ssh-keysign-pwn（CVE-2026-46333）解讀：Linux 本地資訊外洩、SSH 主機金鑰與 /etc/shadow 風險</title>
        <link>https://www.knightli.com/zh-tw/2026/05/17/ssh-keysign-pwn-cve-2026-46333/</link>
        <pubDate>Sun, 17 May 2026 09:29:03 +0800</pubDate>
        
        <guid>https://www.knightli.com/zh-tw/2026/05/17/ssh-keysign-pwn-cve-2026-46333/</guid>
        <description>&lt;p&gt;&lt;code&gt;ssh-keysign-pwn&lt;/code&gt; 是圍繞 Linux kernel &lt;code&gt;__ptrace_may_access()&lt;/code&gt; 邏輯問題公開的一組利用路徑，CVE 編號為 &lt;code&gt;CVE-2026-46333&lt;/code&gt;。它不是遠端未授權漏洞，也不是直接取得 root shell 的漏洞，但風險仍然很高：本地低權限使用者可能讀取本不該存取的 root 敏感檔案，例如 SSH 主機私鑰或 &lt;code&gt;/etc/shadow&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;對維運來說，重點不是重現 PoC，而是盡快判斷哪些機器受影響、升級核心、重新啟動生效，並在必要時輪換 SSH host keys 和重設密碼。&lt;/p&gt;
&lt;h2 id=&#34;先說結論&#34;&gt;先說結論
&lt;/h2&gt;&lt;p&gt;這次漏洞的處置優先級很高，原因有四點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;觸發條件是本地低權限使用者，不需要 root。&lt;/li&gt;
&lt;li&gt;已有公開 PoC，利用門檻明顯降低。&lt;/li&gt;
&lt;li&gt;影響目標不是普通檔案，而可能是 SSH 主機私鑰和 &lt;code&gt;/etc/shadow&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;修復需要核心修補並重新啟動，不能只升級套件後不重啟。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的伺服器有多使用者、本地 shell、共享主機、CI runner、容器宿主機、學生機房、跳板機或任何「不完全可信的本地使用者」，應該優先處理。&lt;/p&gt;
&lt;h2 id=&#34;漏洞是什麼&#34;&gt;漏洞是什麼
&lt;/h2&gt;&lt;p&gt;Qualys 在 2026 年 5 月 15 日透過 oss-security 公開說明：他們此前向 &lt;code&gt;security@kernel.org&lt;/code&gt; 回報了 Linux kernel &lt;code&gt;__ptrace_may_access()&lt;/code&gt; 的邏輯問題，上游修復已由 Linus 合入。隨後社群出現公開利用程式，因此 Qualys 將資訊發到 oss-security。&lt;/p&gt;
&lt;p&gt;Linux kernel CVE 團隊隨後為這個問題分配了 &lt;code&gt;CVE-2026-46333&lt;/code&gt;。NVD 頁面顯示該 CVE 來源為 kernel.org，問題描述對應核心提交 &lt;code&gt;ptrace: slightly saner &#39;get_dumpable()&#39; logic&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;簡單說，這個漏洞出現在程序退出路徑上。某些特權程序正在退出時，核心中與 &lt;code&gt;ptrace&lt;/code&gt; 存取檢查相關的邏輯可能因目標任務已經沒有 &lt;code&gt;mm&lt;/code&gt;，而繞過本應依賴的 dumpable 檢查。攻擊者可以在很窄的競態窗口中，取得正在退出的特權程序仍然開啟的檔案描述符。&lt;/p&gt;
&lt;p&gt;這也是為什麼它被稱為 &lt;code&gt;ssh-keysign-pwn&lt;/code&gt;：公開利用路徑之一會圍繞 &lt;code&gt;ssh-keysign&lt;/code&gt; 讀取 SSH host private keys。&lt;/p&gt;
&lt;h2 id=&#34;為什麼能讀到-ssh-主機私鑰和-etcshadow&#34;&gt;為什麼能讀到 SSH 主機私鑰和 /etc/shadow
&lt;/h2&gt;&lt;p&gt;這個問題本質上是本地資訊外洩。它利用的是特權程式在退出過程中「記憶體描述符已經脫離，但檔案描述符還沒關閉」的時間窗口。&lt;/p&gt;
&lt;p&gt;AlmaLinux 的公告對風險說得比較清楚：如果特權程式在降權前開啟了敏感檔案，而攻擊者在退出窗口中成功取得對應檔案描述符，就可能讀取這些敏感檔案。&lt;/p&gt;
&lt;p&gt;公開討論中常見的兩個目標是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ssh-keysign&lt;/code&gt;：可能涉及 &lt;code&gt;/etc/ssh/ssh_host_*_key&lt;/code&gt; 這類 SSH 主機私鑰。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chage&lt;/code&gt;：可能涉及 &lt;code&gt;/etc/shadow&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;SSH 主機私鑰外洩後，攻擊者可能偽裝成該主機，影響 SSH 主機身分信任。&lt;code&gt;/etc/shadow&lt;/code&gt; 外洩後，攻擊者可以離線破解密碼雜湊，進一步擴大影響。&lt;/p&gt;
&lt;p&gt;這也是為什麼它雖然不是「直接 root shell」，但仍然應按高優先級處理。&lt;/p&gt;
&lt;h2 id=&#34;影響範圍怎麼判斷&#34;&gt;影響範圍怎麼判斷
&lt;/h2&gt;&lt;p&gt;從上游角度看，這是 Linux kernel 的漏洞。NVD 記錄顯示該問題在 2026 年 5 月 15 日進入 NVD 資料集，當時 NVD 還沒有給出 CVSS 評分。&lt;/p&gt;
&lt;p&gt;發行版層面的狀態要以各自公告為準：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AlmaLinux 8、9、10 都發布了處理說明，並在 2026 年 5 月 16 日更新稱 patched kernels 已進入生產倉庫。&lt;/li&gt;
&lt;li&gt;Debian security tracker 已列出 bullseye、bookworm、trixie、sid 等分支的 vulnerable/fixed 狀態和固定版本。&lt;/li&gt;
&lt;li&gt;其他發行版需要分別查看 Ubuntu、Red Hat、SUSE、Arch、Alpine 等官方安全頁面或更新源。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不要只按核心大版本判斷是否安全。發行版會 backport 修復，同一個上游版本號在不同發行版中可能代表不同修補狀態。&lt;/p&gt;
&lt;h2 id=&#34;應該優先處理哪些機器&#34;&gt;應該優先處理哪些機器
&lt;/h2&gt;&lt;p&gt;建議按風險排序處理：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;多使用者伺服器和共享主機。&lt;/li&gt;
&lt;li&gt;有普通 shell 帳號的跳板機、教學機、開發機。&lt;/li&gt;
&lt;li&gt;CI runner、建置機、託管平台宿主機。&lt;/li&gt;
&lt;li&gt;容器宿主機和虛擬化宿主機，尤其是不完全可信 workload 共存的環境。&lt;/li&gt;
&lt;li&gt;公開服務機器，雖然漏洞需要本地存取，但一旦 Web/RCE/弱密碼帶來低權限落點，風險會疊加。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;純單使用者桌面環境風險相對低一些，但仍建議隨系統更新修復。原因很簡單：本地低權限程式碼執行在桌面上並不少見，瀏覽器、開發工具、腳本和第三方軟體都可能成為落點。&lt;/p&gt;
&lt;h2 id=&#34;修復建議&#34;&gt;修復建議
&lt;/h2&gt;&lt;p&gt;首選方案是安裝發行版提供的修復核心並重新啟動。&lt;/p&gt;
&lt;p&gt;不同發行版命令不同，原則相同：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;更新軟體源中繼資料。&lt;/li&gt;
&lt;li&gt;安裝包含 &lt;code&gt;CVE-2026-46333&lt;/code&gt; 修復的 kernel 套件。&lt;/li&gt;
&lt;li&gt;重新啟動進入新核心。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;uname -r&lt;/code&gt; 和發行版安全公告核對目前執行中的核心是否已修復。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AlmaLinux 公告中提到，生產倉庫已推出修復核心，使用者可以執行常規 &lt;code&gt;dnf upgrade&lt;/code&gt; 並重啟。Debian tracker 也列出了多個分支的 fixed versions。&lt;/p&gt;
&lt;p&gt;需要注意：只安裝新 kernel 套件但不重啟，舊核心仍在執行，漏洞仍然存在。&lt;/p&gt;
&lt;h2 id=&#34;臨時緩解收緊-ptrace_scope&#34;&gt;臨時緩解：收緊 ptrace_scope
&lt;/h2&gt;&lt;p&gt;如果暫時不能重啟，可以先收緊 Yama 的 &lt;code&gt;ptrace_scope&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;Qualys 在 oss-security 後續回覆中確認，將 &lt;code&gt;/proc/sys/kernel/yama/ptrace_scope&lt;/code&gt; 設定為 &lt;code&gt;2&lt;/code&gt;（admin-only attach）或 &lt;code&gt;3&lt;/code&gt;（no attach）可以阻止他們已知的公開利用路徑。但他們也說明，理論上可能存在其他利用方式，所以這只是緩解，不是修復。&lt;/p&gt;
&lt;p&gt;臨時設定可以用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo sysctl -w kernel.yama.ptrace_scope&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;持久化可以寫入 sysctl 設定：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;kernel.yama.ptrace_scope = 3&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /etc/sysctl.d/99-ssh-keysign-pwn.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;ptrace_scope=3&lt;/code&gt; 會停用 ptrace attach，可能影響 &lt;code&gt;gdb&lt;/code&gt;、&lt;code&gt;strace -p&lt;/code&gt; 等除錯場景。如果生產環境需要除錯，可以評估使用 &lt;code&gt;2&lt;/code&gt;。無論選哪一個，都應盡快安排核心升級和重啟。&lt;/p&gt;
&lt;h2 id=&#34;是否需要輪換-ssh-主機金鑰&#34;&gt;是否需要輪換 SSH 主機金鑰
&lt;/h2&gt;&lt;p&gt;如果機器在漏洞公開前後存在以下情況，建議保守處理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有不可信本地使用者。&lt;/li&gt;
&lt;li&gt;有共享主機或容器/CI 多租戶環境。&lt;/li&gt;
&lt;li&gt;有 Web 漏洞、弱密碼、供應鏈腳本等可能給攻擊者本地落點。&lt;/li&gt;
&lt;li&gt;日誌中出現可疑本地程序、異常除錯行為或公開 PoC 檔案。&lt;/li&gt;
&lt;li&gt;機器在修復前暴露了較長時間。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;保守處置包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;修復並重啟後輪換 SSH host keys。&lt;/li&gt;
&lt;li&gt;更新已知主機指紋管理系統。&lt;/li&gt;
&lt;li&gt;通知依賴該主機指紋的自動化系統。&lt;/li&gt;
&lt;li&gt;檢查 SSH 連線告警，避免誤把合法指紋變化當成中間人攻擊，或反過來忽略真實風險。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果懷疑 &lt;code&gt;/etc/shadow&lt;/code&gt; 已外洩，還應評估密碼重設、禁止弱密碼、檢查是否存在可離線破解的舊雜湊。&lt;/p&gt;
&lt;h2 id=&#34;需要監控什麼&#34;&gt;需要監控什麼
&lt;/h2&gt;&lt;p&gt;這類漏洞利用窗口很短，傳統日誌未必能完整記錄。但仍可以關注：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;普通使用者目錄下是否出現 &lt;code&gt;ssh-keysign-pwn&lt;/code&gt;、&lt;code&gt;chage_pwn&lt;/code&gt; 或類似 PoC 檔案。&lt;/li&gt;
&lt;li&gt;可疑編譯行為，例如短時間內編譯陌生 C 程式。&lt;/li&gt;
&lt;li&gt;異常存取 &lt;code&gt;/etc/ssh/ssh_host_*_key&lt;/code&gt;、&lt;code&gt;/etc/shadow&lt;/code&gt; 的跡象。&lt;/li&gt;
&lt;li&gt;異常 &lt;code&gt;pidfd_getfd&lt;/code&gt;、&lt;code&gt;ptrace&lt;/code&gt;、除錯器相關行為。&lt;/li&gt;
&lt;li&gt;SSH 主機指紋被外部系統回報異常。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些訊號不能證明一定被利用，也不能證明沒有被利用。真正的優先事項仍然是補丁、重啟、憑證輪換和風險隔離。&lt;/p&gt;
&lt;h2 id=&#34;常見誤區&#34;&gt;常見誤區
&lt;/h2&gt;&lt;p&gt;第一個誤區：它不是 OpenSSH 遠端漏洞。名字裡有 &lt;code&gt;ssh-keysign&lt;/code&gt;，但根因在 Linux kernel 的 &lt;code&gt;ptrace&lt;/code&gt; 存取檢查邏輯，不是 &lt;code&gt;sshd&lt;/code&gt; 遠端認證流程。&lt;/p&gt;
&lt;p&gt;第二個誤區：沒有本地使用者就完全沒風險。漏洞確實需要本地執行條件，但很多真實攻擊鏈會先透過 Web 服務、CI、腳本、弱密碼或容器逃逸前置步驟取得低權限本地落點。&lt;/p&gt;
&lt;p&gt;第三個誤區：設定 &lt;code&gt;ptrace_scope&lt;/code&gt; 就夠了。它是臨時緩解，不是根本修復。核心更新和重啟仍然需要做。&lt;/p&gt;
&lt;p&gt;第四個誤區：只要沒被拿 root 就沒事。SSH 主機私鑰和 &lt;code&gt;/etc/shadow&lt;/code&gt; 的外洩本身就足以導致後續橫向移動、主機偽裝和離線破解風險。&lt;/p&gt;
&lt;h2 id=&#34;處置清單&#34;&gt;處置清單
&lt;/h2&gt;&lt;p&gt;建議按這個順序執行：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;盤點受影響 Linux 主機，特別是多使用者和共享環境。&lt;/li&gt;
&lt;li&gt;查看發行版官方安全公告，確認 fixed kernel 版本。&lt;/li&gt;
&lt;li&gt;安裝修復核心並重啟。&lt;/li&gt;
&lt;li&gt;暫時不能重啟的機器，先設定 &lt;code&gt;kernel.yama.ptrace_scope=2&lt;/code&gt; 或 &lt;code&gt;3&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;修復後核對正在執行的核心版本。&lt;/li&gt;
&lt;li&gt;對高風險機器輪換 SSH host keys。&lt;/li&gt;
&lt;li&gt;如果懷疑 &lt;code&gt;/etc/shadow&lt;/code&gt; 外洩，評估密碼重設和帳號稽核。&lt;/li&gt;
&lt;li&gt;檢查是否存在公開 PoC、異常編譯和可疑本地除錯行為。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ssh-keysign-pwn&lt;/code&gt;（&lt;code&gt;CVE-2026-46333&lt;/code&gt;）是一個本地資訊外洩漏洞，根因在 Linux kernel &lt;code&gt;__ptrace_may_access()&lt;/code&gt; 相關邏輯。它不需要遠端直接打進來，也不直接給 root shell，但可以讓低權限本地使用者讀取高價值敏感檔案，這使它在多使用者、共享主機、CI 和容器宿主環境中非常值得警惕。&lt;/p&gt;
&lt;p&gt;最可靠的修復是升級到發行版提供的修復核心並重啟。&lt;code&gt;ptrace_scope=2/3&lt;/code&gt; 可以作為臨時緩解，但不能替代補丁。已經暴露在風險窗口中的關鍵主機，還應考慮 SSH 主機金鑰輪換和密碼風險評估。&lt;/p&gt;
&lt;p&gt;參考連結：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.openwall.com/lists/oss-security/2026/05/15/2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;oss-security：Qualys 關於 __ptrace_may_access() 邏輯問題的披露&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.openwall.com/lists/oss-security/2026/05/15/9&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;oss-security：Qualys 確認 CVE-2026-46333 編號&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.openwall.com/lists/oss-security/2026/05/15/8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;oss-security：Qualys 確認 ptrace_scope 臨時緩解&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nvd.nist.gov/vuln/detail/CVE-2026-46333&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVD：CVE-2026-46333&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://security-tracker.debian.org/tracker/CVE-2026-46333&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Debian Security Tracker：CVE-2026-46333&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://almalinux.org/he/blog/2026-05-15-ssh-keysign-pwn-cve-2026-46333/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AlmaLinux：ssh-keysign-pwn (CVE-2026-46333) Patches Released&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/torvalds/linux/commit/31e62c2ebbfdc3fe3dbdf5e02c92a9dc67087a3a&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Linux upstream fix：ptrace get_dumpable() logic&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
