如果滿足條件,處于優(yōu)勢(shì)位置的攻擊者可以利用SSH協(xié)議中的一個(gè)漏洞,削弱人們連接的安全性。
SSH協(xié)議是一種遠(yuǎn)程連接計(jì)算機(jī)的標(biāo)準(zhǔn)。該協(xié)議在互聯(lián)網(wǎng)中扮演了極其重要的角色,它是數(shù)百萬(wàn)組織內(nèi)部應(yīng)用程序安全的基石,保護(hù)了谷歌、亞馬遜、Facebook和其他大公司至關(guān)重要的云環(huán)境。
Terrapin攻擊概述
通過(guò)中間人攻擊,攻擊者可能迫使SSH客戶端采用較弱的身份驗(yàn)證方式,并停用一些防御機(jī)制。目前很難準(zhǔn)確評(píng)估這個(gè)漏洞的真正影響,因?yàn)樗耆Q于各個(gè)客戶端-服務(wù)器的配置、協(xié)議實(shí)現(xiàn)及其他因素。SSH軟件的主要用途是通過(guò)命令行界面連接遠(yuǎn)程系統(tǒng),從而使用或管理這些系統(tǒng)。
德國(guó)波鴻魯爾大學(xué)的計(jì)算機(jī)科學(xué)家Fabian B?umer、Marcus Brinkmann和J?rg Schwenk發(fā)表合著的技術(shù)論文,描述了Terrapin攻擊技術(shù)。他們于今年10月發(fā)現(xiàn)這一漏洞,私下向SSH客戶端和服務(wù)器的開(kāi)發(fā)人員披露了細(xì)節(jié)。目前所有的補(bǔ)丁和信息都已經(jīng)公開(kāi)。
如果各位讀者對(duì)底層細(xì)節(jié)感興趣的話,三位研究人員在GitHub上發(fā)布了相關(guān)的概念驗(yàn)證腳本和其他材料。此外,他們還提供了一個(gè)開(kāi)源工具,可用于檢測(cè)用戶SSH客戶端或服務(wù)器是否容易受到Terrapin攻擊。
基于這項(xiàng)研究成果,SSH軟件更新應(yīng)該正在逐步向用戶發(fā)布,并同時(shí)提供一些臨時(shí)的緩解措施。這并不是一個(gè)需要恐慌的問(wèn)題,因?yàn)?strong>攻擊者是針對(duì)您脆弱的連接發(fā)動(dòng)中間人攻擊,而不是直接攻擊您的服務(wù)器。這本質(zhì)上是一種降級(jí)攻擊,而非解密或命令注入問(wèn)題。而且有很多方法,可以立即保護(hù)自己免受Terrapin攻擊。
Terrapin攻擊包括三個(gè)漏洞:CVE-2023-48795,這是通用的可利用的協(xié)議級(jí)SSH漏洞;CVE-2023-46445和CVE-2023-46446,這些是針對(duì)Python SSH客戶端AsyncSSH的特定漏洞,該客戶端每日下載量高達(dá)6萬(wàn)次。
AsyncSSH客戶端的開(kāi)源代碼存在特定于該客戶端的實(shí)現(xiàn)錯(cuò)誤。這些錯(cuò)誤可以被利用發(fā)動(dòng)Terrapin風(fēng)格的攻擊,例如讓受害者不知情地登錄到攻擊者控制的shell帳戶,而不是他們自己的帳戶。這說(shuō)明不同客戶端和服務(wù)器可能以不同方式容易受到Terrapin攻擊。AsyncSSH已經(jīng)發(fā)布修補(bǔ)版本,以解決版本2.14.1中的CVE-2023-46445和CVE-2023-46446問(wèn)題,以及版本2.14.2中的通用CVE-2023-48795問(wèn)題。
Terrapin攻擊原理
Terrapin(CVE-2023-48795)是一種前綴截?cái)喙簦?strong>攻擊者使用中間人攻擊,能在SSHv2連接的擴(kuò)展協(xié)商期間降低其安全性。這與2015年Cédric Fournet在TLS 1.3協(xié)議中發(fā)現(xiàn)并于草案階段修復(fù)的漏洞類(lèi)似。
正如三位研究人員所述,一次成功的Terrapin攻擊可能會(huì)“導(dǎo)致使用不夠安全的客戶端身份驗(yàn)證算法,并禁用OpenSSH 9.5中針對(duì)擊鍵定時(shí)攻擊的特定防御措施。”在某些非常特定的情況下,這種攻擊手段可以用來(lái)解密一些機(jī)密信息,例如部分或全部破解用戶登錄密碼。但這并不簡(jiǎn)單,在實(shí)際操作中很可能失敗。
讓我們更加深入地了解Terrapin攻擊原理。SSH客戶端連接到SSH服務(wù)器時(shí),在建立安全加密通道之前,它們會(huì)進(jìn)行一次握手。通過(guò)握手,它們以明文形式互相交換信息。每一方都擁有兩個(gè)序列計(jì)數(shù)器:一個(gè)針對(duì)接收消息,另一個(gè)針對(duì)發(fā)送消息。每發(fā)送或接收一條消息,相應(yīng)的序列計(jì)數(shù)器的計(jì)數(shù)就會(huì)增加。這樣,這些計(jì)數(shù)器記錄了每一方已發(fā)送和已接收消息的總數(shù)。
作為中間人攻擊,Terrapin會(huì)在安全通道建立之前的握手階段注入一條明文的“忽略”消息,使客戶端誤以為消息來(lái)自服務(wù)器,讓接收消息序列計(jì)數(shù)器增加計(jì)數(shù)。消息本身將被忽略。此后,一旦建立了安全通道,中間人攻擊者會(huì)阻止服務(wù)器向客戶端發(fā)送有關(guān)額外防御措施的消息。消息是否加密并不重要:攻擊者只是阻止其到達(dá),客戶端既看不到也不會(huì)對(duì)其做出反應(yīng)。
由于之前插入了一條明文的“忽略”消息,客戶端最終仍然會(huì)收到預(yù)期數(shù)量的接收消息,而服務(wù)器則認(rèn)為它已發(fā)送了正確數(shù)量的消息。
即使在初始化過(guò)程中,消息被中間人攻擊者攔截和阻止,雙方的發(fā)送和接收的序列計(jì)數(shù)器都顯示正確。這一點(diǎn)至關(guān)重要,因?yàn)檫@些計(jì)數(shù)器隨后用于驗(yàn)證握手過(guò)程是否完整。只要計(jì)數(shù)正確,將被允許繼續(xù)連接。這就是為什么要插入“忽略”消息。目的是在安全通道中阻塞擴(kuò)展消息時(shí),客戶端和服務(wù)器都不知情。
這篇關(guān)于Terrapin攻擊的論文提供了攻擊流程圖。其中,正被驗(yàn)證的序列號(hào)以粗體顯示。如需了解所有細(xì)節(jié),請(qǐng)參閱論文。
可以在建立連接過(guò)程中插入任意數(shù)量的“忽略”消息,從而阻止來(lái)自服務(wù)器發(fā)送到客戶端的消息。就像這篇技術(shù)論文展示的那樣,您可以巧妙地調(diào)整注入和阻止消息的順序,以進(jìn)行更復(fù)雜的攻擊。通過(guò)這種方式,可以干擾連接的設(shè)置,降低所使用的安全性,禁用擴(kuò)展,并可能利用特定客戶端或服務(wù)器實(shí)現(xiàn)中更深層次的漏洞。
以上說(shuō)明,能否成功攻擊SSH連接,安全通道所采用的加密算法起到?jīng)Q定性作用。
據(jù)稱,由于序列號(hào)在密鑰派生中的使用方式,ChaCha20-Poly1305容易受到Terrapin攻擊并可以完全被利用。這個(gè)算法本身并沒(méi)有加密弱點(diǎn),只是在SSH中的使用方式存在問(wèn)題。
我們了解到,CBC-Encrypt-then-MAC(CBC-EtM)也容易受到攻擊,并且“有概率”可以被利用。當(dāng)然,根據(jù)具體的實(shí)現(xiàn)情況,攻擊可能會(huì)失敗。CTR-Encrypt-then-MAC算法容易受到攻擊,但實(shí)際上無(wú)法被利用。
超過(guò)77%的面向公眾的SSH服務(wù)器支持“至少一種在實(shí)踐中可以被利用的模式”。三位研究人員表示,其中57%將可被利用的算法設(shè)置為首選。
打補(bǔ)丁還是采取緩解措施?
研究人員很快得出結(jié)論,這個(gè)漏洞并不需要立即停止工作并優(yōu)先處理。
他們說(shuō):“這種攻擊需要主動(dòng)的中間人攻擊者有能力攔截并修改連接在TCP/IP層的流量。此外,需要協(xié)商使用ChaCha20-Poly1305或任何密碼分組鏈接(CBC)模式與Encrypt-then-MAC結(jié)合作為連接的加密模式。”
留意補(bǔ)丁或軟件更新是一個(gè)不錯(cuò)的選擇。這樣,在有需要時(shí)可以快速安裝。如果您使用Linux系統(tǒng),通過(guò)常規(guī)的發(fā)行版更新應(yīng)該可以獲取補(bǔ)丁或軟件更新。
本周一發(fā)布的OpenSSH 9.6包含了對(duì)Terrapin的嚴(yán)格密鑰交換協(xié)議的修復(fù)。如果服務(wù)器和客戶端都支持的話,這就足以挫敗Terrapin攻擊。
研究人員指出,“將一個(gè)容易受攻擊的客戶端連接到已修復(fù)的服務(wù)器上,或?qū)⑷菀资芄舻姆?wù)器連接到已修復(fù)的客戶端上,仍然會(huì)導(dǎo)致連接易受攻擊。”
與此同時(shí),Putty 0.8于本周發(fā)布,以解決Terrapin問(wèn)題。libssh 0.10.6和libssh 0.9.8也已發(fā)布,以抵御Terrapin攻擊。我們預(yù)計(jì)還會(huì)有其他解決方案。
除了安裝軟件更新之外,管理員還可以通過(guò)在SSH服務(wù)器配置中禁用受影響的加密模式并使用無(wú)漏洞算法(如AES-GCM)來(lái)緩解攻擊。
研究人員警告說(shuō),如果服務(wù)器配置不當(dāng)或客戶端不支持配置,可能會(huì)導(dǎo)致服務(wù)器訪問(wèn)失敗。舊版本的OpenSSH(6.2和6.3)在使用AES-GCM時(shí)也容易受到緩沖區(qū)溢出的攻擊,需要特別注意。
三位研究人員總結(jié)道:“Terrapin不是一個(gè)可以通過(guò)更新單個(gè)庫(kù)或組件來(lái)修復(fù)的簡(jiǎn)單軟件漏洞。相反,客戶端和服務(wù)器都需要更新,保護(hù)連接免受前綴截?cái)喙簟_@意味著我們需要加強(qiáng)對(duì)所有SSH客戶端和服務(wù)器實(shí)現(xiàn)問(wèn)題的認(rèn)識(shí),這需要相當(dāng)大的工作量。”
參考資料:https://www.theregister.com/2023/12/20/terrapin_attack_ssh/
來(lái)源:安全內(nèi)參