發布 OpenSSH 8.9,消除 sshd 中的漏洞

經過六個月的開發,OpenSSH 8.9 發布了,這是一個用於透過 SSH 2.0 和 SFTP 協定工作的開放客戶端和伺服器實作。 新版本的 sshd 修復了一個可能允許未經身份驗證的存取的漏洞。 這個問題是由身份驗證程式碼中的整數溢位引起的,但只能與程式碼中的其他邏輯錯誤結合使用。

在目前形式下,當啟用特權分離模式時,無法利用該漏洞,因為其表現形式被特權分離追蹤程式碼中執行的單獨檢查所阻止。 權限分離模式自 2002 年 OpenSSH 3.2.2 起預設啟用,並自 7.5 年發布 OpenSSH 2017 起強制啟用。 此外,在從版本 6.5(2014)開始的 OpenSSH 便攜式版本中,透過包含整數溢位保護標誌的編譯來阻止該漏洞。

其他變化:

  • sshd 中 OpenSSH 的便攜版本已經刪除了使用 MD5 演算法進行雜湊密碼的本機支援(允許與外部程式庫(例如 libxcrypt 進行連結)傳回)。
  • ssh、sshd、ssh-add 和 ssh-agent 實作一個子系統來限制新增到 ssh-agent 的金鑰的轉送和使用。 此子系統允許您設定規則來決定如何以及在何處可以在 ssh-agent 中使用金鑰。 例如,要添加只能用於驗證連接到主機 scylla.example.org 的任何用戶、連接到主機 cetus.example.org 的用戶 perseus 以及連接到主機 charybdis.example.org 的用戶 medea 的密鑰通過中間主機scylla.example.org 進行重定向,您可以使用以下命令: $ ssh-add -h "[電子郵件保護]" \ -h "scylla.example.org" \ -h "scylla.example.org>[電子郵件保護]\ ~/.ssh/id_ed25519
  • 在 ssh 和 sshd 中,混合演算法已預設加入到 KexAlgorithms 清單中,該清單決定選擇金鑰交換方法的順序。[電子郵件保護]「(ECDH/x25519 + NTRU Prime),在量子電腦上難以選擇。 在 OpenSSH 8.9 中,在 ECDH 和 DH 方法之間新增了此協商方法,但計劃在下一版本中預設為啟用。
  • ssh-keygen、ssh 和 ssh-agent 改進了用於裝置驗證的 FIDO 令牌金鑰(包括用於生物辨識身分驗證的金鑰)的處理。
  • 在 ssh-keygen 中新增了「ssh-keygen -Y match-principals」命令,以檢查 allowednamelist 檔案中的使用者名稱。
  • ssh-add 和 ssh-agent 提供將受 PIN 碼保護的 FIDO 密鑰新增至 ssh-agent 的功能(PIN 要求在身份驗證時顯示)。
  • ssh-keygen 允許在簽章生成期間選擇哈希演算法(sha512 或 sha256)。
  • 在 ssh 和 sshd 中,為了提高效能,網路資料直接讀取到傳入資料包的緩衝區中,繞過堆疊上的中間緩衝。 將接收到的資料直接放入通道緩衝區是以類似的方式實現的。
  • 在 ssh 中,PubkeyAuthentication 指令擴展了支援的參數清單 (yes|no|unbound|host-bound),以提供選擇要使用的協定擴充功能的功能。

在未來的版本中,我們計劃將 scp 實用程式的預設設定更改為使用 SFTP,而不是舊的 SCP/RCP 協定。 SFTP 使用更可預測的名稱處理方法,並且不會對另一主機端的檔案名稱中的 glob 模式使用 shell 處理,這會產生安全性問題。 特別是,當使用 SCP 和 RCP 時,伺服器決定將哪些檔案和目錄傳送給客戶端,客戶端僅檢查傳回的物件名稱的正確性,這在客戶端沒有進行適當檢查的情況下,允許伺服器傳輸與請求的檔案名稱不同的其他檔案名稱。 SFTP協定不存在這些問題,但不支援「~/」等特殊路徑的擴展。 為了解決此差異,OpenSSH 的先前版本為 SFTP 伺服器實作中的 ~/ 和 ~user/ 路徑引入了新的 SFTP 協定擴充。

來源: opennet.ru

添加評論