淺談破壞SSH安全協定的Terrapin攻擊

資訊安全新知分享

NEITHNET 資安實驗室

  近期 Ruhr University Bochum研究人員發現針對SSH協定的前綴截斷攻擊(a prefix truncation attack targeting the SSH protocol),稱作Terrapin Attack。SSH協定的重要組成Binary Packet Protocol,已不再能作為安全通道的保證。SSH所有通訊內容包括指令、檔案傳輸和資料,都是透過Binary Packet Protocol這個二進位封包協定傳輸。

  一、Secure Shell Protocol,簡稱SSH是一種加密的網路傳輸協定,可在不安全的網路中為網路服務提供安全的傳輸環境。SSH最常見的用途是遠端登入系統,通常利用SSH來傳輸命令列介面和遠端執行命令,也可進行檔案傳輸。

  二、Man-in-the-middle attack,縮寫:MITM,中間人攻擊。簡單來說,在網路通訊的兩端,通常是Client端連到Server端,攻擊者可以攔截通訊雙方的通話並插入新的內容,藉此進行攻擊達到目的。

  三、Terrapin Attack是藉由中間人攻擊,在SSH二進位封包協定(Binary Packet Protocol)的握手(handshake)中刪除或插入訊息,結合其他弱點可進行進一步的攻擊,此次研究人員有成功結合以下漏洞進行中間人攻擊。不過在網際網路上實踐有困難度,在本地網路更容易執行。

  • CVE-2023-48795: General Protocol Flaw
  • CVE-2023-46445: Rogue Extension Negotiation Attack in AsyncSSH
  • CVE-2023-46446: Rogue Session Attack in AsyncSSH

  四、研究人員在二進位封包協定(Binary Packet Protocol)握手(handshake)機制的觀察發現。

  1.SSH 並不保護完整的握手(handshake)記錄,身份驗證簽章來自於固定的握手(handshake)訊息列表,而不是完整的紀錄。攻擊者藉此將訊息插入握手(handshake)之中,並且操縱序號。

  2.SSH在安全通道的一開始不重置序號,只增加了序列單調數字,與加密無關。

  藉由上述前提,攻擊者可以在二進位封包協定(BPP)進行截斷攻擊,如下圖。

  左邊為正常機制,右邊是攻擊的對照圖;在右邊攻擊者送出IGNORE訊息給Client端,偏移的序列號碼,由於仍會有檢查機制驗證序列號,攻擊者將Server回應給Client端EXT_INFO丟棄,達到序列號即使有偏移(藍色方框對照),但是仍可完成握手(hankshake)機制,而這個過程並不會被兩者發現。

  五、漏洞掃描工具

  研究人員提供此漏洞的掃描工具:GitHub

  六、因應作法建議:

  1.全面檢視企業防火牆Policy,限制SSH存取,避免暴露在網際網路中,並且加上OTP(one-time password)驗證登入提升安全。

  2.使用不受影響的密碼模式,AES-GCM (RFC5647) 不受 Terrapin 的影響,因為它不使用 SSH 序號。並且,AES-GCM 使用從金鑰派生中獲得的 IV(Initialization Vector)作為其隨機數,並在發送二進位封包後遞增它。在正常的連接中,這會導致隨機數與序號有固定的偏移量。

  3.注意:舊版的 OpenSSH(6.2 和 6.3)在使用 AES-GCM 時容易受到緩衝區溢位的影響,在6.4版本已經修正這個漏洞。

  更多資安訊息及防護策略,歡迎與NEITHNET資安專家聯繫:info@neithnet.com。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *