信息來源:國家互聯(lián)網應急中心
近日,國家信息安全漏洞共享平臺(CNVD)收錄了GNU glibc getaddrinfo()堆棧緩沖區(qū)溢出漏洞(CNVD-2016-01100,對應CVE-2015-7547)。攻擊者利用漏洞可通過構建惡意dns服務或使用中間人的方法對受害者發(fā)起攻擊,對Linux終端設備構成安全威脅。
一、漏洞情況分析
GNU glibc是一款按LGPL許可協(xié)議發(fā)布的開源C語言編譯程序,是Linux操作系統(tǒng)中C庫的實現(xiàn)。
glibc中getaddrinfo函數在處理特定dns response數據包時存在棧溢出漏洞。由于glibc通過alloca()函數在棧中為_nss_dns_gethostbyname4_r函數2048字節(jié)的空間,用于托管DNS響應;若響應大于2048字節(jié),程序會從堆中重新分配一個緩沖區(qū),并更新所有信息(緩沖區(qū)指針,緩沖區(qū)大小和響應大小);在一定條件下,會出現(xiàn)棧緩沖區(qū)和新分配的堆內存的錯誤匹配,導致超過棧緩沖區(qū)大小的響應仍然存儲在棧中,進而發(fā)生緩沖區(qū)溢出。攻擊者利用漏洞可通過構建惡意dns服務或使用中間人攻擊的方法對Linux主機或相關設備發(fā)起攻擊,導致遠程代碼執(zhí)行,進而可獲取用戶終端控制權。
CNVD對該漏洞的綜合評級為“高?!?。
二、漏洞影響范圍
漏洞影響glibc>2.9的所有版本,glibc是Linux系統(tǒng)中最底層的API,應用于眾多Linux發(fā)行版本中,因此該漏洞影響范圍廣泛。所有Debian 系列、Red Hat 系列的Linux 發(fā)行版,只要glibc版本大于2.9均受該漏洞影響。
三、漏洞修復建議
目前,互聯(lián)網上已披露針對該漏洞的利用原理分析及利用代碼。廠商暫未發(fā)布升級補丁修復該漏洞,CNVD建議用戶采取如下臨時措施:該漏洞存在于resolv/res_send.c文件中,當getaddrinfo()函數被調用時會觸發(fā)該漏洞,技術人員可以通過將TCP DNS響應的大小限制為1024字節(jié),并丟棄所有超過512字節(jié)的UDP DNS數據包來緩解該問題。
附:參考鏈接:
https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-7547
https://sourceware.org/ml/libc-alpha/2016-02/msg00416.html (補丁鏈接)
http://www.cnvd.org.cn/flaw/show/CNVD-2016-01100