Linux glibc再曝漏洞,可導致Linux軟件劫持

jopen 8年前發布 | 5K 次閱讀 Linux軟件

Linux glibc再曝漏洞,可導致Linux軟件劫持

近日,Google和Red Hat的安全人員發現GNU C Library (glibc)中存在嚴重的安全漏洞,可導致Linux軟件被攻擊者劫持,進而在Linux平臺上執行任意代碼,獲取密碼,監視用戶,甚至控制計算機。CVE編號為CVE-2015-7547。

Linux glibc再曝漏洞,可導致Linux軟件劫持

glibc是GNU發布的libc庫,即c運行庫。它是Linux系統中最底層的API,幾乎其它運行庫都會依賴于glibc。glibc應用于眾多Linux發行版本中,所以此類漏洞影響范圍十分廣泛。

漏洞概述

glibc的DNS客戶端解析器中存在基于棧的緩沖區溢出漏洞。當軟件用到getaddrinfo庫函數(處理名字到地址以及服務到端口的轉換)時,攻擊者便可借助特制的域名、DNS服務器或中間人攻擊利用該漏洞,控制軟件,并試圖控制整個系統。

攻擊者使用惡意的DNS域名服務器創建類似于evildomain.com的域名,然后向目標用戶發送帶有指向該域名的鏈接的郵件,一旦用戶點擊該鏈接,客戶端或瀏覽器將會開始查找ildomain.com,并最終得到惡意服務器的buffer-busting響應。該域名被嵌入服務器日志中,一旦解析就會觸發遠程代碼執行,SH客戶端也會因此被控制。或者,位于目標用戶網絡中的中間人攻擊者可以篡改DNS響應,向惡意代碼中動態注入負載。

根據目前的調查情況,此漏洞影響自2.9之后的所有版本,其他舊版本也可能受到影響。

技術細節

glibc 通過alloca()函數在棧中為_nss_dns_gethostbyname4_r函數2048字節的空間,用于托管DNS響應。若響應大于2048字節,程序會從堆中重新分配一個緩沖區,并更新所有信息(緩沖區指針,緩沖區大小和響應大小)。

在一定條件下,會出現棧緩沖區和新分配的堆內存的錯誤匹配,導致超過棧緩沖區大小的響應仍然存儲在棧中,進而發生緩沖區溢出。觸發該漏洞的利用向量十分普遍,并且ssh、sudo和curl等工具中。

緩解

該漏洞存在于resolv/res_send.c文件中,當getaddrinfo()函數被調用時會觸發該漏洞。技術人員可以通過將TCP DNS響應的大小限制為1024字節,并丟棄所有超過512字節的UDPDNS數據包來緩解該問題。值得慶幸的是,許多嵌入式Linux設備,例如家庭路由器,更傾向于使用uclibc庫,因此可以免受該漏洞的影響。

補丁獲取: sourceware

POC: github

* 參考地址: GoogleOnlineSecurity ,vul_wish編譯,轉載請注明來自FreeBuf黑客與極客(FreeBuf.COM)

來自: http://www.evil0x.com/posts/13208.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!