資安雷達 2026 年 10 月 7 日

2026-10-07 OpenSSH 10.6 停用 LZ77 壓縮,封堵跨通道明文回復

primary=https://www.openwall.com/lists/oss-security/2026/10/06/2 primary=https://www.openssh.com/releasenotes.html primary=https://arxiv.org/abs/2609.07709

OpenSSH 10.6 停用 LZ77 壓縮字典,補上多工通道的明文回復旁路

oss-security(Damien Miller 公告)· 2026-10-06

OpenSSH 10.6 把 Compression 選項底層的 LZ77 字典編碼器直接關掉,讓同一條連線上的壓縮不再被另一條通道拿來猜密文長度。同一版還拒絕命令列上含 $ 與 \ 的使用者名稱,並修了 authorized_keys 的 restrict 沒套用到 tunnel 轉送的問題。

OpenSSH 10.6 / 10.6p1 由 Damien Miller 於 2026-10-06 發布,公告同時說明:團隊近來收到大量資安回報,不少來自 AI 工具;由於同一個 bug 常被不同研究者各自獨立找到,團隊「暫時」會提高發版頻率,不再等下一個預定版本才合併修補。

原本的問題:多條通道共用同一個壓縮字典

SSH 連線可以多工,一條 TCP 連線上同時跑 shell、轉送埠、sftp 等多個 channel。啟用壓縮時,所有 channel 共用同一個編碼器搜尋緩衝區。LZ77 會把重複字串換成指向緩衝區的回溯參照,所以「出現重複」會直接反映在密文總長度上。

這就是論文 arXiv:2609.07709(Fabian Bäumer、Marcus Brinkmann)描述的選擇明文攻擊:攻擊者控制其中一條 channel 的輸入,觀察總長度變化,就能推測另一條 channel 裡的秘密。OpenSSH 文件原本就建議,不要在同時承載可信與不可信流量的連線上開壓縮;10.6 把這個建議變成程式行為。

核心改動

release notes 的說法是 disable LZ77 dictionary coder,並明講這會讓 Compression 選項變得不那麼有效。官方建議改用應用層壓縮,那種方式通常壓得更好,也不受這類攻擊影響。

10.5 以前10.6
壓縮字典所有 channel 共用 LZ77 緩衝區LZ77 字典編碼器停用
壓縮效果完整release notes 列為「可能不相容的變更」,效果下降
命令列使用者名稱不限制字元拒絕含 $、\

第二個值得深讀的改動是 ssh 對命令列使用者名稱的檢查。若名稱來自不可信來源,再被帶進 ProxyCommand、Match exec 等會經過 shell 的設定,就可能變成命令注入。10.6 因此拒絕含反斜線與錢字號的名稱。注意:寫在設定檔 User 指令裡的名稱不受此限。官方也補了一句:仍不建議把命令列直接暴露給不可信輸入,這類緩解無法涵蓋所有 shell 與設定組合。

# 10.6 起,下面這種來自外部輸入的名稱會被 ssh 拒絕
ssh 'a$(id)'@host
ssh 'a\b'@host

其他值得注意的安全修補

  • sshd 現在完整遵守 authorized_keys 的 restrict 關鍵字,先前它沒有正確套用到 tunnel 轉送(PermitTunnel,預設關閉);公告說這與 10.5 修的是不同問題。
  • 某些選項(含 AuthorizedPrincipalsFile)文件寫明可設 none 關閉,但被 Match 覆寫時 none 會被當成字面檔名。10.6 已修正。
  • 使用 GSSAPIAuthentication 時,只有驗證成功才保存 GSSAPI 憑證,避免失敗嘗試的憑證在後續其他驗證成功後被誤用。
  • sftp 更嚴格檢查伺服器回傳的路徑,避免惡意伺服器讓遞迴複製寫到目標目錄之外。

影響範圍

啟用 Compression yes 的人:升級後壓縮率會下降,跨慢速鏈路傳大量文字或日誌的備份、rsync over ssh 可能變慢。可以在升級前後各量一次實際傳輸時間,並評估改在應用層壓縮(官方建議做法)。

會把外部輸入拼進 ssh user@host 的腳本、CI 與自動化工具:若使用者名稱可能含 $ 或 \(例如 Windows 網域格式 DOMAIN\user),升級後會被拒絕。改成寫進 ~/.ssh/config 的 User 指令(該處不受此限),或在傳入前先驗證名稱。

在 QNX 6、SCO OpenServer 5,或用 --disable-fd-passing 編譯的平台上跑 sshd:這類平台的認證後 sshd-session 行程仍保有 root 權限,可能繞過一般使用者本應受到的限制,例如連 unix domain socket、用 -R 綁低號碼埠。10.6 對這些平台強制停用 GatewayPorts 與 StreamLocalForwarding,並預告未來可能移除支援;--disable-fd-passing 選項本身也已被拿掉。

會用到 ssh-mldsa44-ed25519 實驗金鑰的人:新版啟用的混合後量子簽章演算法不再使用 @openssh.com 後綴,舊實驗版產生的金鑰必須重新產生或移除。

另有一項棄用預告

scp -R(由遠端主機執行 scp 做遠端對遠端複製)在 10.6 仍可用,但會往 stderr 印出棄用警告;未來版本將忽略該旗標,改走預設的經由執行 scp 那台主機中繼的行為。依賴 -R 的腳本,請先確認中繼流量與頻寬是否能接受。

原始來源:oss-security 公告、OpenSSH release notes、arXiv:2609.07709


End of article
0
Would love your thoughts, please comment.x
()
x