OpenSSH 在 11 月 5 日緊急釋出 10.6p2,修補代號「SSHole」的密碼驗證繞過漏洞 CVE-2026-123158(CVSS 8.1)。受影響的是使用 musl libc、且未啟用 PAM 的 Linux 系統,Alpine Linux 是最典型的例子:在特定帳號設定下,輸入超過 256 字元的任意長密碼就可能直接登入,甚至拿到 root。
事件經過
- 11 月 4 日:OpenSSH 團隊接獲 Wakefield 研究員 Özgün Kültekin 通報(OpenSSH 開發者 Damien Miller 表示是發布前一天才得知)。
- 11 月 5 日:OpenSSH 釋出 10.6p2;同日 oss-security 郵件論壇公開說明;Alpine Linux 呼籲用戶立即更新並重新啟動 sshd。
- Damien Miller 表示,因近期觀察到 AI 代理在數小時內就「重新發現」同一漏洞的案例,認為長時間保密期反而對攻擊者有利,所以這次盡快發布。
重點
- 成因:musl 的 crypt() 在密碼過長時回傳「*」,剛好與「未設定密碼」帳號在 shadow 檔中的「*」相同,造成比對誤判。OpenSSH 認為根本原因不在 sshd,但可經由 sshd 利用,因此在 sshd 端加上防護。
- 影響範圍:Alpine 表示其檢查的 3.21 至 3.24、edge,以及已不再定期更新的 3.16 至 3.20 都受影響。研究員另指出 OpenWrt、Buildroot、Yocto 等環境也可能有類似設定,請以各發行版公告為準。
- 一般 glibc 發行版(如 Debian、Ubuntu、RHEL)不使用 musl,也多半啟用 PAM,不在這次的主要影響範圍。
| 項目 | 內容 |
|---|---|
| CVE | CVE-2026-123158(SSHole) |
| CVSS | 8.1 |
| 受影響 | OpenSSH 10.6p2 之前版本,搭配 musl libc 且未啟用 PAM |
| 修正 | OpenSSH 10.6p2;Alpine 3.21.10、3.22.8、3.23.8、3.24.4 |
| 暫時緩解 | sshd_config 設定 PasswordAuthentication no 後重啟 sshd |
觸發條件(依 Alpine 說明,需同時成立)
- sshd 未啟用 PAM,且允許密碼登入。
- 存在密碼欄位為「*」的帳號,例如 Alpine 3.16 起預設的 root、用 adduser 建立但未設密碼的金鑰登入帳號、官方 tiny-cloud 映像中的 alpine 帳號。
- 系統內至少另有一個使用 $5$ 或 $6$(SHA-256/SHA-512 crypt)雜湊的本機帳號。
對你的實務建議
企業 / IT 管理者
- 盤點所有以 Alpine 為基底的主機、VM 與容器,特別是有跑 sshd 的跳板機、雲端映像與 CI runner。
- 更新 openssh 套件後一定要重新啟動 sshd,否則仍是舊程式在執行。
- 暫時無法更新的,先設定 PasswordAuthentication no 並重啟 sshd,改用金鑰登入。
- 限制 SSH 只允許管理網段或 VPN 來源連線,不要把 22 埠直接開在網際網路上。
- 檢查 auth 紀錄中是否有異常長密碼的登入嘗試或可疑成功登入,必要時重建受影響主機並輪替金鑰。
- 自行編譯 OpenSSH 的嵌入式或網通設備,向供應商確認是否使用 musl 且停用 PAM,並索取更新時程。
一般用戶
- 家用 NAS、路由器或樹莓派若跑 Alpine 或 OpenWrt 並開了 SSH,請更新系統,並關閉對外的 SSH 連線。
- 不需要遠端登入就把 SSH 關掉;需要時改用金鑰登入,並透過 VPN 連回家。
- 使用雲端主機的個人開發者,確認自己用的映像是否為 Alpine,並套用更新。
發表留言