德國安全研究人員發表了一篇**文章,披露了一起針對SSH傳輸層互動協議的攻擊,並將其命名為水龜(water turtle)攻擊。
Terrappel 攻擊在握手期間操縱序列號,從而在使用某些廣泛使用的加密模式時損害 SSH 通道的完整性。 此操作允許攻擊者刪除或修改通過通訊通道交換的訊息,從而導致 OpenSSH 95 中用於使用者身份驗證的公鑰演算法降級或禁用對擊鍵定時攻擊的防禦。
Terrapinus 攻擊利用了 SSH 傳輸層協議中的乙個弱點,該協議在十多年前為 OpenSSH 引入了加密演算法和模式。 Terrapinus 攻擊通過在客戶端或伺服器不注意的情況下截斷重要的協商訊息來降低已建立連線的安全性。
德國波鴻魯爾大學的研究人員開發了 Terrapinus 攻擊,他們還發現了乙個可在 asyncssh 中利用的實現缺陷。 與 Terrapinian 攻擊相關的漏洞標記為:CVE-2023-48795、CVE-2023-46445 和 CVE-2023-46446。 CVE-2023-48795 是乙個通用的 SSH 協議漏洞,CVE-2023-46445 和 CVE-2023-46446(2 中的 asyncSSH)適用於特定的 Python SSH 客戶端14.2).
交替龜攻擊必須處於網路層的中間對手 (MITM) 位置,才能攔截和修改握手交換(中間人攻擊),SSH 握手使用 chacha20-poly1305 或 chacha20-poly1305 或 chacha20-poly1305 來保護 CBC 和 Encrypt-Then-MAC 之間的連線。
握手完成後交換的訊息中的資料決定了攻擊影響的嚴重性。
Terraptune 攻擊 (CVE-2023-48795) 是一種字首截斷攻擊,允許 MITM 攻擊者在擴充套件協商期間降低 SSHv2 連線的安全性。 該問題與 2015 年 TLS 1 中的問題相同3 在草稿階段發現和修復的問題類似。
“成功的Terraptune攻擊可能導致使用安全性較低的客戶端身份驗證演算法和OpenSSH 9的停用,”該研究指出針對擊鍵定時攻擊的 5 項具體對策。 “在一些非常特殊的情況下,它可以用來解密一些秘密,比如使用者登入時的密碼或部分密碼,但這只是理論上的,在實際場景中幾乎不可能成功。
乙個簡單的過程是:
當SSH客戶端連線到SSH伺服器時,雙方握手並以明文形式交換資訊,然後建立安全的加密通道。 每端有兩個序列計數器:乙個用於接收的訊息,乙個用於傳送的訊息。 每當傳送或接收訊息時,相關的序列計數器都會遞增;因此,計數器會不斷記錄每一方傳送和接收的訊息數。
上面的握手使用 SSH 握手進行有限域 diffie-hellman 金鑰交換。 包含的序列號是隱式的,由 BPP 維護。 snd 表示已傳送資料包的計數器,rcv 表示接收資料包的計數器。 使用經過驗證的加密技術驗證的序列號以粗體顯示。
作為中間人攻擊,Terrapinus 涉及在握手期間將明文“忽略”訊息注入到預安全連線中,使客戶端認為它來自伺服器,並增加接收到的訊息的序列計數器。 否則,該訊息將被忽略。 然後,一旦建立了安全通道,MITM 攻擊者就會阻止伺服器向客戶端傳送有關其他防禦措施的訊息。 訊息是否加密並不重要:攻擊者只是阻止訊息到達,而客戶端永遠不會看到它,也不會對它採取行動。
由於先前插入的純文字忽略訊息,客戶端最終仍會收到預期數量的訊息,並且伺服器認為它傳送了正確數量的訊息。
即使訊息在初始化期間被中間人攻擊者截獲並阻止,傳送和接收序列計數器在兩端顯示正確也至關重要,因為這些計數隨後用於驗證握手過程的完整性。 如果計數正確,則允許連線繼續。 這就是插入“忽略”訊息的原因,這樣當擴充套件訊息在安全通道中被阻止時,客戶端和伺服器都不知道任何事情。
研究人員對 BPP 的新型字首截斷攻擊的圖示。 伺服器傳送 sc1 和 sc2,但客戶端只接收 sc2。
您可以插入任意數量的“忽略”訊息,以在連線建立期間消除從伺服器到客戶端的訊息。 通過這種方式,可以中斷連線設定、降低使用的安全性、禁用擴充套件,並可能利用特定客戶端或伺服器實現中更深層次的弱點。
總而言之,安全通道使用的加密演算法對於SSH連線的成功至關重要。
在 Terrapinus 攻擊研究中分析了三種可能受影響的演算法:
chacha20-poly1305被確定為“易受攻擊且可完全利用”。
cbc-encrypt-then-mac (cbc-etm)它也容易受到攻擊,可以“概率地”利用,但根據實現的不同,攻擊可能會失敗。
ctr-encrypt-then-mac演算法中也存在漏洞,但實際上無法利用。
根據這項研究,超過四分之三的面向公眾的SSH伺服器支援“至少一種在實踐中可以利用的模式”,佔77%,57%的人將可利用的演算法設定為他們的首選。
儘管對 Terrapinus 攻擊有特定要求,但上述加密模式在現實世界中被廣泛使用(根據調查,這一比例為 77%),使得該攻擊在現實世界場景中是可行的。
許多相關的軟體供應商正在逐步緩解安全問題。 一種解決方案是實現嚴格的金鑰交換,使握手期間無法進行資料包注入。
但是,這個問題需要一些時間才能得到普遍解決,嚴格的金鑰交換對策只有在客戶端和伺服器上都實施時才會有效。
研究人員在 GitHub 上發布了乙個針對 Terrapin-Scanner 漏洞的安全掃瞄工具(GitHub:rub-nds terrapin-scanner),管理員可以使用該工具來確定 SSH 客戶端或伺服器是否易受攻擊。
由於 terrhagian 攻擊的最大緩解因素是 MITM 要求(中間人攻擊),這使得其威脅看起來不那麼嚴重。 因此,對於大多數人來說,暫時避免緊急公升級相關補丁是可以的,而是制定相應的緩解措施。
在早期階段,評估使Terrapinus攻擊成為可能的協議缺陷的全部嚴重性是困難的,因為它取決於一系列變數,這些變數隨著網路的變化而變化,並且研究人員沒有很好地理解。
目前,研究人員已經設計了兩種方法來利用字首截斷攻擊。 一種方法是降級 OpenSSH 和其他 SSH 應用程式可用於保護連線的一些擴充套件。 開始提供的對策:
例如,擴充套件降級可以禁用 10 月發布的 OpenSSH 版本 95。該擴充套件可防止擊鍵計時,這是一種可以通過測量擊鍵之間的時間來準確鍵入單詞的攻擊。
Terrhagine 攻擊還可以覆蓋舊的擴充套件引數,指定使用 SHA2 加密雜湊函式。 因此,SSH 將改用較弱的 SHA1。
Terrapinus 攻擊最經典的漏洞利用是該研究涉及兩個特定於 asyncSSH 的漏洞(CVE-2023-46445 和 CVE-2023-4644)。
asyncSSH 是 Python 語言的 SSH 實現,估計每天有 60,000 次**。 其中乙個洩漏 CVE-2023-46445 可用於替換伺服器傳送的擴充套件訊息,使攻擊者能夠控制其內容,這比簡單地丟棄訊息的正常攻擊更嚴重。 當使用 asyncSSH 的客戶端使用任何型別的 SSH 軟體連線到伺服器時,該漏洞就會起作用,而兩者都傳輸“extinfo”訊息(如 SSH 協議中所述)。
Terraptune 漏洞 CVE-2023-46446 允許攻擊者在使用任何 SSH 應用程式的客戶端連線到執行 asyncSSH 的伺服器時,通過注入或刪除資料包或模擬已建立的 shell 來控制 SSH 客戶端會話的遠端端。
CVE-2023-46446 在最壞的情況下,asyncSSH 伺服器在連線時為經過身份驗證的使用者啟動 shell,將使用者切換到經過身份驗證的使用者。 在這種情況下,攻擊者可以提前準備乙個修改後的shell,進行完美的釣魚攻擊,成為應用層的中間人。 當未經身份驗證的使用者的使用者名稱未在身份驗證之外使用時,此漏洞不會影響連線”。
研究人員很快表示,這不是乙個需要人們放下工具並優先修復的缺陷。 “這次攻擊需要乙個活躍的中間人攻擊者,他們可以攔截和修改TCP IP層的連線流量,”他們說。 此外,需要協商 chacha20-poly1305 或任何 cbc 密碼,結合 encrypt-then-mac 作為連線的加密模式。 ”
最好密切關注補丁或更新,並盡可能安裝它們:例如,如果您使用的是 Linux,則這些補丁或更新應該通過通常的發行版更新方法提供。
openssh 9.6它已經發布,它通過嚴格的金鑰交換協議解決了 Terrapinus 攻擊的問題,如果伺服器和客戶端都支援它們,它應該能夠阻止這些攻擊。
但是,將易受攻擊的客戶端連線到已修補的伺服器(反之亦然)仍會導致連線易受攻擊。 所以客戶端也需要同時公升級。
目前膩子 08 次釋放可能是水龜攻擊問題。 libssh 還發布了 libssh 010.6 和 libssh 09.8 解決問題。
除了安裝更新外,管理員還可以通過在 SSH 伺服器配置中禁用受影響的加密模式以緩解攻擊並切換到不易受攻擊的演算法,例如 AES-GCM。
但是,此設定也有風險,如果伺服器配置不正確或客戶端不支援,可能會導致客戶端無法連線到伺服器,因此請謹慎驗證並應用在**上。
此外,當使用 AES-GCM 演算法時,舊版本的 OpenSSH(62 和 63)也容易出現緩衝區溢位,需要小心。