Alpine/OpenSSH/官方:修補 musl 密碼認證繞過——長密碼可登入無密碼帳戶;一次連線即可,須更新並重啟 sshd

重點摘要

Alpine Linux 官方於二零二六年十一月五日發布資安公告,指在未啟用 PAM、且允許密碼登入的 OpenSSH 伺服器上,攻擊者只要能連上 SSH 埠,便可對密碼欄為星號的帳戶送出二百五十七至一千零二十四字節的超長密碼,一次連線即可登入而無須知道真實密碼;條件是機上另有至少一個採用 $5$ 或 $6$ 格式雜湊的帳戶。OpenSSH 同日發布 10.6p2 緊急修補,Alpine 亦釋出 3.21.10、3.22.8、3.23.8、3.24.4 等含修補套件的版本,並強調只升級套件不重啟 sshd 不足以關閉漏洞。本文已核對 Alpine 官方公告與 OpenSSH 發行說明,來源真實性已驗證。

Alpine/OpenSSH/官方:修補 musl 密碼認證繞過——長密碼可登入無密碼帳戶;一次連線即可,須更新並重啟 sshd

Alpine Linux 官方於二零二六年十一月五日發布資安公告,指在未啟用 PAM、且允許密碼登入的 OpenSSH 伺服器上,攻擊者只要能連上 SSH 埠,便可對密碼欄為星號的帳戶送出二百五十七至一千零二十四字節的超長密碼,一次連線即可登入而無須知道真實密碼;條件是機上另有至少一個採用 $5$ 或 $6$ 格式雜湊的帳戶。OpenSSH 同日發布 10.6p2 緊急修補,Alpine 亦釋出 3.21.10、3.22.8、3.23.8、3.24.4 等含修補套件的版本,並強調只升級套件不重啟 sshd 不足以關閉漏洞。本文已核對 Alpine 官方公告與 OpenSSH 發行說明,來源真實性已驗證。

Alpine/OpenSSH/官方:修補 musl 密碼認證繞過——長密碼可登入無密碼帳戶;一次連線即可,須更新並重啟 sshd

Alpine Linux 與 Portable OpenSSH 於二零二六年十一月五日同步處理一項被社群稱為「sshole」的嚴重問題:在採用 musl libc、且 sshd 未透過 PAM 驗證密碼的 Linux 系統上,密碼認證可被繞過。Alpine 官方公告開宗明義要求:若主機正運行 sshd,應立即更新 openssh 並重啟服務;若暫時無法更新,至少把 PasswordAuthentication 設為 no 後重啟。OpenSSH 發行說明同樣把本次 10.6p2 定性為影響「使用 musl 且停用 PAM」系統的關鍵安全緩解。本文已核對 Alpine 安全公告、Alpine 點版本發行稿與 OpenSSH 10.6p2 發行說明,來源真實性已驗證。

一、核心事件:一次連線即可登入「無密碼」帳戶

技術細節

Alpine 說明攻擊前提相當具體,且「每次都成功、無須重試」:

  1. 攻擊者能連到目標的 SSH 埠;
  2. 目標有一個密碼欄為 * 的帳戶(常見於僅允許金鑰登入、或目錄服務經 musl-nscd 進來、沒有 shadow 條目的帳戶);
  3. 同一台機器上至少還有一個帳戶使用 $5$ 或 $6$ 密碼雜湊;
  4. 攻擊者對該 * 帳戶送出長度介乎 二百五十七至一千零二十四字節 的密碼。

在此條件下,攻擊者無須知道任何真實密碼。Alpine 強調「一個有密碼的使用者就夠」,足以讓所有無密碼(*)帳戶變得可登入。公告撰寫時尚未取得 CVE 編號;細節則指向 OpenSSH 10.6p2 發行說明。研究披露頁 sshhole.com 與 oss-security 討論則把根因歸因於 musl 的 crypt() 在金鑰過長時回傳 *,正好與「無密碼帳戶」的儲存欄位相同,再疊加 OpenSSH 在某些情況下借用其他帳戶鹽值做時序平衡的邏輯。

受影響範圍方面,Alpine 核對過 3.21 至 3.24 與 edge,以及已停止常規更新的 3.16 至 3.20;條件包括使用預設不以 PAM 建置的 openssh-server,或使用 openssh-server-pam 但設定 UsePAM no,且 PasswordAuthentication 仍為 yes(OpenSSH 預設)。官方 tiny-cloud 映像中的 alpine 使用者亦屬 * 密碼欄;一旦機上出現 $6$ 雜湊(例如管理員設了主控台密碼),攻擊者可取得 alpine shell,並在設有無密碼 doas 的映像上提權為 root。

二、技術原理深度解析

當 sshd 不經 PAM 檢查密碼時,會呼叫 C 函式庫的 crypt() 把嘗試密碼雜湊後,再與 shadow 中的儲存值比對。對儲存欄過短、不足以承載鹽值的帳戶(例如單純的 *),sshd 會借用其他帳戶的鹽值來雜湊,意圖讓「無效使用者」與真實使用者在時序上更接近,以緩解使用者枚舉。

問題出在 musl 的行為:當輸入金鑰超過二百五十六字節時,crypt() 以字串 * 作為錯誤回傳,而不是 NULL。於是「借鹽雜湊超長密碼」的結果,剛好等於無密碼帳戶自己的儲存欄 *,比對成功,密碼認證便被當成通過。OpenSSH 團隊在 10.6p2 說明中寫明:他們認為根因在 sshd 之外,但可經由 sshd 被利用,因此在 sshd 側加入緩解。報告者為 Wakefield 的 Özgün Kültekin。

這也解釋為何多數走 PAM 的發行版較不易踩中:PAM 路徑通常不會對 * 帳戶直接呼叫這條 crypt() 比對邏輯;而 Alpine 預設的 openssh-server 恰以非 PAM 建置,使問題集中爆發在容器基礎映像、邊緣裝置與雲映像常用的 musl 生態。

四、日常應用場景

1. 開發者與技術團隊

若本機或 CI/開發用 VPS 以 Alpine 跑 sshd,應立刻執行 apk upgrade -U -a,確認套件版本對應官方表(例如 edge 的 10.6_p2-r0、3.24 的 10.3_p1-r2 等),再以 rc-service sshd restart 重啟——Alpine 明確警告:只升級套件不會替換正在運行的 daemon。無法即時升級時,先確認金鑰登入可用,再把 PasswordAuthentication 改為 no 並重啟。Docker/容器若根本不在容器內跑 sshd,則不在受影響清單。

2. 企業與隱私敏感行業

金融、醫療、政府外判與任何把 Alpine/OpenWrt/Buildroot 類 musl 映像暴露在公網或跳板機的團隊,應把此次視為緊急變更:盤點所有對外 SSH、堡壘機與「以為已關閉密碼、只留金鑰」的帳戶——因為 * 正是這類帳戶的常見寫法。官方 tiny-cloud(qcow2/VHD/AMI)在 3.18.11 至 3.24.3 區間的映像,若之後有人寫入雜湊密碼,風險會由「理論上安全」變成「可直接拿 alpine + doas」。建議同步檢查 /var/log/messages 是否出現對無密碼帳戶的 Accepted password,並審視近期 doas、新建使用者與 authorized_keys。

3. 一般用戶

家用 NAS、自架 VPN/Git、或雲上「便宜 Alpine 小機」若開了 SSH 且仍允許密碼,應優先改為僅金鑰、關閉密碼登入,再套用發行版更新。即使你自認「從來不用密碼登入」,只要機上存在 * 帳戶與另一個 $5$/$6$ 雜湊帳戶,仍可能符合利用條件。

4. 香港與亞洲市場視角

香港中小企與初創大量使用雲端 VPS、容器與精簡 Linux 映像做跳板、監控代理與邊緣節點;部分團隊為圖方便仍開著密碼或混合登入。此漏洞的教訓是:表面「金鑰 only」的帳戶若以 * 標記、再加上 musl 非 PAM 的 sshd,防護假設會被一次超長密碼擊穿。對本地託管與合規要求較高的行業,應把「SSH 組態基線+緊急修補窗口+日誌稽核」納入日常運維,而不是等 CVE 編號齊全才行動——Alpine 公告撰寫時甚至尚未有 CVE。

五、專業評價與潛在考量

優勢

  • 官方路徑清晰:OpenSSH 10.6p2 提供可移植修補;Alpine 回溯至 3.16 的固定套件版本表完整,便於資產盤點。
  • 緩解手段可立即落地:關閉密碼認證即可切斷利用鏈,無需等待完整升級窗口。
  • 影響邊界寫得具體(PAM/cloud-init/鎖定帳戶 !/無 $ 雜湊系統等),有助減少誤報與恐慌式關機。

需要留意的地方

  • 根因跨 sshd 與 musl,其他 musl 發行版/嵌入式(OpenWrt、Buildroot、Yocto 等)亦須各自追蹤供應商修補,不能假設「只關 Alpine」。
  • 升級後若忘記重啟 sshd,漏洞實質上仍開著——這是最容易在自動化中漏掉的一步。
  • 公告時點尚無 CVE,弱勢資產管理系統可能暫時對不上編號;應以發行版公告與套件版本為準。
  • 若日誌已出現對 alpine/root/金鑰 only 帳戶的密碼接受紀錄,應按入侵應變處理,而非只補丁了事。

結語

「sshole」提醒業界:遠端管理面的安全,往往壞在 libc、建置選項與帳戶標記等「以為沒人會踩」的交界。對香港企業而言,此刻最務實的動作是盤點 Alpine/musl 上的 sshd、套用官方修補並重啟,同時把密碼登入從生產跳板拿掉。若你的團隊需要把雲端主機、跳板與應用環境的加固、監控與遷移一次理順,可參考 YSK Limited 的雲端遷移與網絡安全服務(https://ysk.hk/services/cloud-security)。


參考來源

  1. Alpine Linux,〈Security advisory: openssh-server password authentication bypass〉,2026-11-05:https://alpinelinux.org/posts/2026-11-05-openssh-password-authentication-bypass/
  2. OpenSSH,〈Release Notes — OpenSSH 10.6p2〉,2026-11-05:https://www.openssh.org/releasenotes.html
  3. Alpine Linux,〈Alpine 3.21.10, 3.22.8, 3.23.8 and 3.24.4 released〉,2026-11-05:https://alpinelinux.org/posts/alpine-3.21.10-3.22.8-3.23.8-3.24.4-released/
  4. sshhole.com(研究披露頁,輔助背景):https://sshhole.com/
  5. oss-security,〈"sshole": password authentication bypass: OpenSSH + musl libc〉,2026-11-05:https://www.openwall.com/lists/oss-security/2026/11/05/3

延伸閱讀 · 相關服務與產品