OpenSSH 9.2 發布,修復了預驗證漏洞

OpenSSH 9.2 版本已經發布,這是使用 SSH 2.0 和 SFTP 協定工作的客戶端和伺服器的開放實作。 新版本消除了導致預先身份驗證階段記憶體雙重釋放的漏洞。 僅 OpenSSH 9.1 版本受到影響;早期版本中不會出現該問題。

若要為漏洞的表現創造條件,只需將 SSH 用戶端橫幅變更為“SSH-2.0-FuTTYSH_9.1p1”即可設定標記“SSH_BUG_CURVE25519PAD”和“SSH_OLD_DHGEX”,這取決於 SSH 的版本客戶。 設定這些標誌後,「options.kex_algorithms」緩衝區的記憶體被釋放兩次 - 執行 do_ssh2_kex() 函數(當呼叫 compat_kex_proposal())時,以及執行 do_authentication2() 函數(調用 input_usera_request()、mmuth_reuthenticationXNUMX() 函數(調用 input_usera_request()、mmuth_reuthallow() getputhallow))時) 、copy_set_server_options() 沿著鏈、assemble_algorithms() 和kex_assemble_names()。

為該漏洞創建有效的利用被認為是不太可能的,因為利用過程過於複雜- 現代內存分配庫提供了針對雙重釋放內存的保護,並且存在錯誤的預驗證進程在隔離的環境中以較低的權限運作。沙箱環境。

除了提到的漏洞之外,新版本還修復了另外兩個安全問題:

  • 處理「PermitRemoteOpen」設定時發生錯誤,導致第一個參數與值「any」和「none」不同時被忽略。 該問題出現在 OpenSSH 8.7 之後的版本中,並導致僅指定一項權限時跳過檢查。
  • 如果配置中啟用了 CanonicalizeHostname 和 CanonicalizePermissionCNAMEs 選項,且系統解析器不會檢查 DNS 的正確性,則控制用於解析名稱的 DNS 伺服器的攻擊者可以實作將特殊字元(例如「*」)替換到known_hosts 檔案中。來自DNS 伺服器的回應。 該攻擊被認為不太可能發生,因為傳回的名稱必須符合透過 CanonicalizePermissionCNAMEs 指定的條件。

其他變化:

  • ssh_config 中新增了 EnableEscapeCommandline 設定,以控制是否啟用提供命令列的「~C」轉義序列的用戶端處理。 預設情況下,現在停用“~C”處理以使用更嚴格的沙箱隔離,這可能會破壞在運行時使用“~C”進行連接埠轉送的系統。
  • sshd_config 中新增了 ChannelTimeout 指令,用於 sshd 設定通道不活動逾時(在指令指定的時間內沒有記錄流量的通道將自動關閉)。 可以為會話、X11、代理程式和流量重新導向設定不同的逾時。
  • UnusedConnectionTimeout 指令已新增至 sshd 的 sshd_config 中,可讓您設定終止在一定時間內沒有活動通道的用戶端連線的逾時時間。
  • sshd 中新增了「-V」選項來顯示版本,類似於 ssh 用戶端中的類似選項。
  • 將「Host」行加入到「ssh -G」的輸出中,反映主機名稱參數的值。
  • scp 和 sftp 中新增了「-X」選項,用於控制 SFTP 協定參數,例如複製緩衝區大小和待處理請求的數量。
  • ssh-keyscan 允許掃描完整的 CIDR 位址範圍,例如「ssh-keyscan 192.168.0.0/24」。

來源: opennet.ru

添加評論