立即修復(fù)!Unix bug令各類Linux系統(tǒng)身陷風(fēng)險
譯文【51CTO快譯】研究人員已經(jīng)在GNU C庫(即glibc)當中發(fā)現(xiàn)一項高危安全漏洞,其可能導(dǎo)致現(xiàn)代Linux服務(wù)器面臨遠程代碼執(zhí)行攻擊所帶來之風(fēng)險。API Web服務(wù)與Rails、PHP乃至Python等高人氣Web框架也都因此受到影響。
此安全漏洞(CVE 2015-7547)為存在于glibc DNS客戶端解析器之getaddrinfo()函數(shù)中的基于堆棧緩沖區(qū)溢出問題,且目前已經(jīng)得到修復(fù)。任何使用glibc 2.9以及更新版本(2.9版本于2008年5月發(fā)布)的用戶都有可能受到影響,這意味著幾乎全部glibc使用者都應(yīng)當盡快安裝該補丁。紅帽企業(yè)Linux 5采用glibc 2.5,因此其不會受到該漏洞的影響; 不過紅帽企業(yè)Linux 6(使用glibc 2.12)、紅帽企業(yè)Linux 7(使用glibc 2.17)、Debian squeeze(使用glibc 2.11)、Debian wheezy(使用glibc 2.13)以及Debian jessie(使用glibc 2.19)則全部受到影響。
“必須認真對待這一問題,即盡快為glibc安裝修復(fù)補丁。該安全漏洞確實非常嚴重,”Open Crypto Audit項目主管兼安全研究員Kenneth White在自己的推文當中寫道。
該漏洞最初由Ciena的Robert Holiday及其glibc項目小組所報告,時間點為2015年7月。在此之后,紅帽公司首席軟件工程師Carlos O’Donnell與紅帽產(chǎn)品安全團隊成員Florian Weiner對該漏洞的影響做出評估并為其準備了相應(yīng)補丁。谷歌公司研究員Fermin J. Serna與Kevin Stadmeyer亦獨立發(fā)現(xiàn)了報告中提及的該安全漏洞,并推出了一項針對該漏洞的概念驗證利用方案。
“我們還沒有發(fā)現(xiàn)任何使用這項安全漏洞的實際攻擊活動,”O’Donnell指出。
其中g(shù)etaddrinfo()函數(shù)通常被用于解析IP地址,在這種情況下,攻擊者可以利用該漏洞通過接入惡意DNS服務(wù)器實現(xiàn)對應(yīng)用程序及系統(tǒng)的控制權(quán)。利用這一安全漏洞進行攻擊的可行途徑多種多樣,其中包括但不限于ssh、sudo以及curl,谷歌研究人員們解釋稱。
“使用該函數(shù)的軟件可能被攻擊者通過受控域名、攻擊者控制之DNS服務(wù)器或者中間人攻擊活動所影響,”Serna與Stadmeyer在咨詢意見當中寫道。
該安全漏洞會在系統(tǒng)從DNS服務(wù)器處接收到長度過大的UDP或者TCP響應(yīng)結(jié)果時被觸發(fā),具體為超過2048字節(jié)——而在此之前,攻擊者還需通過另一項響應(yīng)對該堆棧進行覆蓋。要觸發(fā)這項緩沖區(qū)管理漏洞,目標系統(tǒng)必須嘗試對攻擊者控制下的域名進行DNS搜索。第一條接收到的響應(yīng)長度為2048字節(jié),這意味著其會占滿整個緩沖區(qū)、不留任何剩余空間。由于該緩沖區(qū)無法進行復(fù)用,因此系統(tǒng)會建立一個新的緩沖區(qū)。但漏洞的存在導(dǎo)致原有緩沖區(qū)與新緩沖區(qū)同時存在,意味著整體緩沖區(qū)空間為65535.第二項響應(yīng)則迫使該系統(tǒng)重試這項查詢。第三項響應(yīng)包含有2048字節(jié)的有效響應(yīng),但除此之外攻擊載荷仍有63487字節(jié)空間可以使用。
該漏洞之所以會發(fā)生,是因為當該查詢重新開始時,其指向的其實是擁有錯誤容量的緩沖區(qū),O’Donnell解釋道。“當然還有其它辦法觸發(fā)這個緩沖區(qū)管理漏洞,但其需要對響應(yīng)計時進行深入控制,并使用輪詢超時以通過兩次攻擊者響應(yīng)實現(xiàn)漏洞利用(而非三次),”O’Donnell表示。
紅帽公司的研究員們還得以利用該緩沖區(qū)溢出漏洞控制一項free()調(diào)用的執(zhí)行,并借此控制EIP注冊表。盡管他們并沒有嘗試進一步利用該漏洞,但此次嘗試已經(jīng)證明了遠程控制執(zhí)行的可能性。
“包絡(luò)分析結(jié)果顯示,攻擊者可以利用受控載荷編寫出格式正確的DNS響應(yīng),從而突破DNS緩存結(jié)構(gòu)并借此接入到緩存背后的設(shè)備本體,”O’Donnell在其glibc項目群發(fā)郵件中寫道。
該漏洞產(chǎn)生的危害水平取決于系統(tǒng)現(xiàn)有緩沖區(qū)溢出漏洞應(yīng)對能力。遠程代碼執(zhí)行可能“并不簡單”,因為其需要繞過ASLR,谷歌公司的Serna解釋稱。管理員與開發(fā)人員如果無法立即安裝glibc補丁,也應(yīng)當馬上采取臨時性應(yīng)對措施,從而防止?jié)撛诘墓粜袨?。一種可行選項在于將本地DNS解析器所能接收的響應(yīng)長度限制在1024字節(jié)。
對于這種長度限制需要高度關(guān)注,因為使用DNSSEC等先進功能的系統(tǒng)可能需要接受超出正常長度水平的UDP響應(yīng)。DNSSEC需要配合EDNSO,這項客戶端功能負責通知服務(wù)器其能夠接收長度超過512字節(jié)的UDP響應(yīng)。因此,阻斷高長度DNS響應(yīng)有可能會破壞EDNSO功能。“DNS解析可能因此發(fā)生失敗,或者出現(xiàn)顯著延遲,”SAN協(xié)會的Johannes B. Ullrich提醒稱。
管理員應(yīng)當確保網(wǎng)絡(luò)之上的全部系統(tǒng)都采用特定解析器,同時阻斷一切出站DNS——除非其由已知解析器所生成。通過這種方式能夠限制漏洞被利用的可能性,而且“是種不錯的處理辦法,”Ullrich指出。
與此同時,禁止雙A與AAA查詢可能也有助于緩解這種安全漏洞,而徹底禁用IPv6則無法禁用AAAA查詢或者預(yù)防漏洞問題。阻斷IPv6的本地或者中間解析器并不能預(yù)防此類漏洞狀況,因為漏洞利用載荷仍然能夠得到切實交付。“它屬于觸發(fā)該緩沖區(qū)管理漏洞的并發(fā)查詢,”O’Donnell寫道。
盡管相關(guān)補丁已經(jīng)正式推出,不過這場競賽仍在進行當中,而且最終結(jié)果取決于哪方行動更快——攻擊者還是防御者。“現(xiàn)在捕鼠貓已經(jīng)出籠,開發(fā)團隊需要快速檢測其應(yīng)用程序是否處于風(fēng)險當中:但這項工作非常困難,因為glibc以深層方式集成在各類應(yīng)用當中,”Black Duck軟件公司的Patrick Carey表示。修復(fù)的過程同樣相當漫長,特別對于那些移動設(shè)備或者其它面向用戶的應(yīng)用程序而言。
需要指出的是,glibc庫屬于GNU項目所采用的標準C庫,而且被廣泛應(yīng)用于各類包含Linux內(nèi)核的GNU Linux及其它系統(tǒng)當中。這也是最近幾個月來該庫曝出的第二個高危安全漏洞:就在去年,研究人員們發(fā)現(xiàn)glibc當中存在著GHOST漏洞(CVE 2015-235)。
原文標題:Patch now! Unix bug puts Linux systems at risk