云安全提醒:Apache Guacamole漏洞可控制網(wǎng)關(guān),竊取個人信息,升級1.2.02版本可修復(fù)
Apache Guacamole是實現(xiàn)遠程辦公的流行基礎(chǔ)架構(gòu),容易受到與遠程桌面協(xié)議(RDP)相關(guān)的眾多安全漏洞的攻擊。管理員應(yīng)更新其系統(tǒng),以避免針對竊取信息或遠程執(zhí)行代碼的攻擊。
一旦控制了網(wǎng)關(guān),攻擊者就可以竊聽所有傳入的會話,記錄所有使用的憑據(jù)遠程辦公,甚至可以發(fā)起新的會話來控制組織中的其余計算機。當(dāng)大多數(shù)組織都在遠程辦公時,這個立足點相當(dāng)于獲得對整個組織網(wǎng)絡(luò)的完全控制。
Apache Guacamole在全球范圍內(nèi)有超過1000萬的Docker下載,并且還嵌入到Jumpserver Fortress,Quali和Fortigate等其他產(chǎn)品中。鱷梨醬網(wǎng)關(guān)實質(zhì)上可以保護和處理來自公司外圍用戶的連接。
本質(zhì)上,員工使用瀏覽器連接到公司的面向Internet的服務(wù)器,經(jīng)過身份驗證過程,然后可以訪問公司的計算機.雖然員工僅使用他的瀏覽器,但Guacamole服務(wù)器選擇一種受支持的協(xié)議(RDP,VNC,SSH等),并使用開源客戶端連接到特定的公司計算機。連接后,Guacamole服務(wù)器將充當(dāng)中間人,來回中繼事件,同時將事件從所選協(xié)議轉(zhuǎn)換為特殊的“ Guacamole協(xié)議”,反之亦然。
Apache Guacamole易受其自身基礎(chǔ)架構(gòu)內(nèi)部的幾個嚴重漏洞的影響,以及FreeRDP中的其他漏洞。該漏洞使網(wǎng)絡(luò)攻擊者可以入侵網(wǎng)關(guān),然后攔截并控制與該網(wǎng)關(guān)連接的所有會話。
攻擊場景和漏洞
有兩種不同的攻擊情形:在反向攻擊中,公司網(wǎng)絡(luò)內(nèi)部的受感染計算機利用傳入的良性連接來攻擊網(wǎng)關(guān),目的是接管網(wǎng)關(guān)。在惡意工作者的場景中,一個惡意雇員使用網(wǎng)絡(luò)內(nèi)的一臺計算機來利用他對連接兩端的控制并控制網(wǎng)關(guān)。
為了啟用這兩種方法,使用信息泄露錯誤的漏洞利用鏈,內(nèi)存損壞問題和特權(quán)利用是必不可少的。
信息泄露漏洞CVE-2020-9497
為了在RDP連接和客戶端之間中繼消息,開發(fā)人員為默認的RDP通道實現(xiàn)了自己的擴展。一個這樣的通道負責(zé)來自服務(wù)器的音頻,因此被稱為rdpsnd(RDP聲音)
通過發(fā)送惡意的rdpsnd通道消息,惡意的RDP服務(wù)器可能使客戶端認為該數(shù)據(jù)包包含大量字節(jié),實際上是客戶端本身的內(nèi)存字節(jié)。這反過來導(dǎo)致客戶端使用這些字節(jié)將響應(yīng)發(fā)送回服務(wù)器,并為RDP服務(wù)器授予一個龐大的,令人討厭的樣式,信息公開原語。
CVE-2020-9497中也涵蓋了另一個信息泄露漏洞,但該漏洞會將越界數(shù)據(jù)發(fā)送到連接的客戶端,而不是發(fā)送回RDP服務(wù)器。
RCE內(nèi)存損壞漏洞CVE-2020-9498
RDP協(xié)議將不同的“設(shè)備”公開為單獨的“通道”,每個設(shè)備一個通道。據(jù)分析,這包括用于聲音的rdpsnd頻道、用于剪貼板的cliprdr等。作為一個抽象層,通道消息支持一個碎片,使其消息的長度達到4GB。
任何消息中的第一個片段都必須包含CHANNEL_FLAG_FIRST片段,該片段分配合適大小的流(稱為wStream)以容納總消息的總體聲明長度。
但是,如果攻擊者發(fā)送不帶此標(biāo)志的片段會怎樣?似乎只是將它附加到先前的剩余流中。零碎的消息完成重組并繼續(xù)解析后,它被釋放。就是這樣。沒有人將懸空指針設(shè)置為NULL。
這意味著惡意RDP服務(wù)器可能會發(fā)送一個使用先前釋放的wStream對象的無序消息片段,從而有效地創(chuàng)建一個釋放后使用的漏洞,該漏洞可用于任意讀寫攻擊。
通過使用漏洞CVE-2020-9497和CVE-2020-9498,可以成功地實現(xiàn)任意讀和任意寫攻擊原語.使用這兩個功能強大的原語,成功地實現(xiàn)了一個RCE攻擊,當(dāng)遠程用戶請求連接到他(受感染的)計算機時,惡意公司計算機(我們的RDP‘服務(wù)器’)可以控制guacd進程。
這個guacd進程只處理一個連接,并且以低權(quán)限運行,因此黑客尋找一個權(quán)限提升的路徑,從而允許接管整個網(wǎng)關(guān)。
在成功地對客戶機進行身份驗證后,guacamole客戶機啟動一個與guacamole服務(wù)器的guacamole協(xié)議會話,為客戶機創(chuàng)建一個匹配的會話。這是通過連接到guacd進程正在監(jiān)聽的TCP端口4822(默認情況下)上的guacamole服務(wù)器來完成的。此端口上的通信不使用身份驗證或加密(可以啟用SSL,但不是默認設(shè)置)。會話創(chuàng)建后,guacamole客戶機只在guacamole服務(wù)器和客戶機瀏覽器之間來回傳遞信息。
guacd可執(zhí)行文件中的漏洞允許訪問完整的內(nèi)存布局(用于繞過地址空間布局隨機化(ASLR)計算機安全性)和完整的內(nèi)存內(nèi)容。
通過利用所有這些弱點,黑客能夠完全控制測試guacamule網(wǎng)關(guān),從而截獲流經(jīng)該網(wǎng)關(guān)的所有信息。
值得注意的是,該基礎(chǔ)設(shè)施也容易受到FreeRDP(一種在Apache許可下發(fā)布的RDP的免費實現(xiàn))中現(xiàn)有的bug的攻擊。
漏洞修復(fù)
在FreeRDP中的漏洞,只在2.0.0-rc4之后版本得到修補,2020年1月之前發(fā)布的所有版本都會受到漏洞影響。
至于其他漏洞,Apache通過6月28日發(fā)布的Apache Guacamole 1.2.02版解決了所有這些問題。