天天看點

越快越好 Linux使用者需要趕緊補上glibc漏洞

本文講的是越快越好 Linux使用者需要趕緊補上glibc漏洞,隻需點選一個連結或是連接配接到伺服器,便可導緻遠端代碼執行。攻擊者可盜取密碼、監視使用者,甚至控制計算機。更甚者,任何與網絡相連的軟體,如果使用glibc的話,都有危險。

越快越好 Linux使用者需要趕緊補上glibc漏洞

Glibc(GNU C Library)是大多數Linux中的關鍵元件,漏洞(CVE-2015-7547)存在于glibc的DNS解析器中,是一個基于堆棧的緩沖區溢出漏洞。一台惡意DNS伺服器可以傳回給查詢者超量的資訊,利用這個漏洞用代碼淹沒程式記憶體,進而危害該程式,或者是掌握整個系統。

攻擊方法

攻擊者首先建立一個惡意的DNS伺服器,然後發送帶有此域名的惡意連結,受害者一旦點選這個連結,其使用的用戶端或浏覽器就會發送這個域名的查詢請求,最終從這個惡意DNS伺服器得到一個緩沖區溢出的響應。

這個域名還能夠插入到伺服器日志檔案中,當解析這個域名時将觸發遠端代碼執行,即便是SSH加密的用戶端也無法避免。同樣,在網絡中使用中間人攻擊的手段,即可篡改DNS響應,注入惡意代碼的載荷。

有各種各樣的漏洞利用方法,影響自2009年5月以來發行的glibc2.9版以後所有的版本。

漏洞原理

發現這個漏洞的谷歌研究人員解釋,glibc通過alloca()函數在堆棧中保有2048位元組,這個函數響應DNS查詢請求的函數_nss_dns_gethostbyname4_r() ,然後是send_dg()和send_vc()兩個函數。如果響應大于2048位元組,就會從堆配置設定一個新的緩沖區并更新所有的資訊,包括緩沖區指針、新的的緩沖區大小和響應包大小。在某些情況下,造成堆棧緩沖之間的不比對,并會配置設定新的堆。最後的結果就是,堆棧緩沖将被用于存儲DNS響應,即使響應包大小超過了堆棧緩沖,以及配置設定了堆緩沖。該行為導緻堆棧緩沖的溢出。

關鍵問題存在于resolv/res_send.c中,并在使用getaddrinfo()函數調用時觸發。當啟動sudo、curl或其他工具時,均可觸發此漏洞利用。

影響程度

凡是使用glibc的Linux使用者均受此漏洞影響,幸運的是許多嵌入式Linux裝置逃過此劫,因為諸如家用路由器等裝置使用的是輕量級的uclibc庫。

實際上,該漏洞早去年7月就已經被發現,但當時這個程式設計上的問題被嚴重低估。當谷歌安全人員撞到這個漏洞時,他們發現紅帽的兩位研究人員也正在分析這個問題,但由于問題的嚴重性,兩人并未公布相關資訊,隻是在私下的進行研究。最終谷歌、紅帽雙方合力開發了更新檔更新。

補救措施

實作遠端代碼執行,攻擊者必需繞過作業系統的安全機制,如ASLR(位址空間布局随機化)、非可執行堆棧保護等。防火牆也可以過濾一些可疑的DNS響應。

是以,安全運維人員可以限制所有TCP協定的DNS響應包大小在1024位元組之内,并丢棄超過512位元組的UDP協定DNS包。

原文釋出時間為:二月 17, 2016

本文作者:Recco

本文來自雲栖社群合作夥伴安全牛,了解相關資訊可以關注安全牛。

繼續閱讀