2月16日,Google在博客中公布了一个关于GNU C Library (glibc)的安全漏洞,可导致GNU/Linux上的应用被攻击者劫持,进而在GNU/Linux上执行任意代码,甚至控制计算机。CVE编号为CVE-2015-7547。
glibc(GNUC Library)是GNU发布的libc库,是GNU/Linux中最底层的API,几乎其它任何运行库都会依赖于glibc。glibc除了封装Linux操作系统所提供的系统服务外,它本身也提供了许多其它必要功能服务的实现。
漏洞概述
Google的安全人员发现,glibc的DNS客户端解析器中存在基于栈的缓冲区溢出漏洞。当调用到getaddrinfo()库函数时,攻击者便可借助被劫持的域名、被劫持的DNS服务器或中间人攻击利用该漏洞,控制软件,甚至直接远程root。
小编只知道用C写的那都是很底层的东西,出漏洞了是可以直接影响到内存的
影响范围
glibc应用于众多Linux发行版本中,所以此类漏洞影响范围十分广泛。几乎所有的Linux发行版,只要glibc 版本大于2.9 就会受到影响。
漏洞详解
对于一个DNS查询来说,glibc中的_nss_dns_gethostbyname4_r()函数会通过aloca()在栈中预先分配2048字节的空间来存储DNS的应答结果。
接下来执行send-dg()和send_vc()函数时,如果response超过2048个字节,会在堆中分配一个新的缓冲区,其中所有的信息(buffer pointer, new buffer size 和response size)也会被更新。
某些情况下,栈中的缓冲区和新的堆分配会发生不匹配,尽管response会超出栈缓冲区的大小,新的堆缓冲区也被分配了,栈缓冲区依然会被用来存储DNS response,这就会造成栈缓冲区溢出。
ssh,sudo和curl等都有可能引起这个缓冲区溢出。
Google在博客中提供了POC测试(感兴趣的同学可以试一下这个漏洞到底有多大):https://github.com/fjserna/CVE-2015-7547
POC测试,即Proof of Concept,是业界流行的针对客户具体应用的验证性测试,根据用户对采用系统提出的性能要求和扩展需求的指标,在选用服务器上进行真实数据的运行。
Docker做了啥?
在这里要特别表扬下Docker,昨天Docker在第一时间就开始更新镜像,由于灵雀云镜像中心的library库是和Docker官方镜像库实时同步的,我们的工程师昨天就发现有几百个镜像更新任务在排队。目测Docker已经把官方库中所有镜像做了更新。Mesoscloud,Microsoft的镜像也都做了相关更新。
灵雀云做了啥?
灵雀云会尽快将这些镜像更新同步过来,目测今晚就能完成。大家最常用一些镜像已经优先做了同步。
灵雀云的服务器在第一时间更新了这些patch,请大家不要恐慌,放心使用灵雀云!
你应该做啥?
在这里强烈建议大家重新build自己的镜像!已经在运行的服务也停掉,重新build一下镜像,再运行!
最常用的Ubuntu镜像请使用这个版本:https://hub.alauda.cn/repos/library/ubuntu。
如果你的服务器是Ubuntu的,可以用以下方法进行更新:
http://www.ubuntu.com/usn/usn-2900-1/。
另外,由于大量镜像的更新,具有中国特色的registry mirror的使用体验会受到影响,还请大家体谅!
网友评论