glibc gethostbyname 缓冲区溢出漏洞 修复建议

包括Linux不支持在线升级替换内核在内, 还有这个CASE, 还是不如AIX啊.

http://www.ksyun.com/indexNotice/info/2015/2185.html#80b8ba67-599d-4f7d-a0e3-196dcc238f03

一、漏洞背景

代码审计公司Qualys的研究人员在glibc库中的__nss_hostname_digits_dots()函数中发现了一个缓冲区溢出的漏洞,这个bug可以经过gethostbyname*()函数被本地或者远程的触发。

1)通过gethostbyname()函数或gethostbyname2()函数,将可能产生一个堆上的缓冲区溢出。经由gethostbyname_r()或gethostbyname2_r(),则会触发调用者提供的缓冲区溢出(理论上说,调用者提供的缓冲区可位于堆,栈,.data节和.bss节等。但是,我们实际操作时还没有看到这样的情况)。

2)漏洞产生时至多sizeof(char* )个字节可被覆盖(注意是char*指针的大小,即32位系统上为4个字节,64位系统为8个字节)。但是payload中只有数字( '0 '...' 9') ,点( “.”) ,和一个终止空字符('\0' ) 可用。

3)尽管有这些限制,我们依然可以执行任意的代码。

二、影响范围

该漏洞影响glibc库版本2.2-2.17的Linux操作系统

操作系统类型包括

CentOS 6 & 7

Debian 7

Red Hat Enterprise Linux 6 & 7

Ubuntu 10.04 & 12.04

各Linux发行版

三、漏洞测试

1、编译以下测试代码

#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <gnu/libc-version.h>
#define CANARY "in_the_coal_mine"
struct {
char buffer[1024];
char canary[sizeof(CANARY)];
} temp = { "buffer", CANARY };
int main(void) {
struct hostent resbuf;
struct hostent *result;
int herrno;
int retval;
/*** strlen (name) = size_needed - sizeof (*host_addr) - sizeof (*h_addr_ptrs) - 1; ***/
size_t len = sizeof(temp.buffer) - 16*sizeof(unsigned char) - 2*sizeof(char *) - 1;
char name[sizeof(temp.buffer)];
memset(name, '0', len);
name[len] = '\0';
retval = gethostbyname_r(name, &resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno);
if (strcmp(temp.canary, CANARY) != 0) {
puts("vulnerable");
exit(EXIT_SUCCESS);
}
if (retval == ERANGE) {
puts("not vulnerable");
exit(EXIT_SUCCESS);
}
puts("should not happen");
exit(EXIT_FAILURE);
}

测试结果:

四、漏洞修复

       更新是在glibc包中,但是这个库会被很多运行中的服务使用。在更新之后,每个服务都要重启一下。要找到所有依赖glibc的服务,请使用如下命令,它会显示所有打开的文件(lsof),然后找到引用glibc库的文件。

$ lsof | grep libc | awk '{print $1}' | sort | uniq

最安全的办法是重启所有你上面用lsof找到的服务。当然也可以重启服务器。建议如果机器或服务不是对外开放访问的, 还是别升glibc了。优先升级重启对外开放的服务器,如Web和Mail等等。

 

目前,Debian和Ubuntu,以及CentOS已经提供补丁更新,你可以通过如下方式升级。

Debian/Ubuntu升级方法:

#apt?-get update

#apt-get install libc6

 

RHEL/CentOS升级方法:

#yum update glibc

如果有开放网络端口的服务太多, 还不如重启, 例如

#  lsof | grep libc | awk '{print $1}' | sort | uniq

abrtd

atd

auditd

automount

awk

bash

certmonge

crond

csvlog_up

cupsd

dbus-daem

grep

hald

hald-addo

hald-runn

init

irqbalanc

lsof

master

mcelog

mingetty

pickup

postgres

qmgr

rpcbind

rpc.statd

rsyslogd

sleep

snmpd

sort

sshd

udevd

uniq

xinetd

时间: 2024-10-24 17:40:59

glibc gethostbyname 缓冲区溢出漏洞 修复建议的相关文章

GNU glibc 爆 gethostbyname 缓冲区溢出漏洞

GNU glibc 标准库的 gethostbyname 函数爆出缓冲区溢出漏洞,漏洞编号:CVE-2015-0235,漏洞详情请看这里. 该漏洞使黑客能够在不知道系统的id和密码的情况下远程控制系统.通过glibc的gethostbyname函数触发.这个函数几乎被用于所有联网的Linux电脑(当其被另一个联网的计算机使用/etc/hosts等文件访问时,或者更常见的通过DNS来解析一个互联网域名). 利用该漏洞,所有攻击者可以通过对一个DNS解析应用使用一个无效的主机名参数来引发缓冲区溢出.

绿盟科技网络安全威胁周报2017.01 请关注MatrixSSL堆缓冲区溢出漏洞CVE-2016-6890

绿盟科技发布了本周安全通告,周报编号NSFOCUS-16-39,绿盟科技漏洞库本周新增30条,其中高危9条.本次周报建议大家关注 MatrixSSL 堆缓冲区溢出漏洞 ,目前,此漏洞已经公布了一段时间并且官方已经进行了修复,强烈建议仍在使用受影响版本的用户进行升级. 焦点漏洞 MatrixSSL 堆缓冲区溢出漏洞 NSFOCUS ID  35726 CVE ID  CVE-2016-6890 受影响版本 3.8.5 漏洞点评 MatrixSSL是SSL/TLS的开源实现,主要应用于嵌入式系统中.

Cisco Nexus 7000和7700交换机OTV缓冲区溢出漏洞 绿盟科技专家给出变通防护方案

2016年10月5日,思科官网发布了存在于Cisco Nexus 7000系列和7700系列交换机中的OTV技术存在缓冲区溢出漏洞,此漏洞编号为CVE-2016-1453.该漏洞将导致攻击者执行任意代码,或者思科交换机的全部权限.官方已经给出升级补丁,如果您的交换机暂时无法升级,绿盟科技的专家给出了变通防护方案. 该漏洞位于Overlay Transport Virtualization(OTV)技术的GRE隧道协议实现中,由于对OTV包头部的参数没有进行完整校验,导致攻击者可以通过向受影响设备

Oracle 8i TNS Listener 缓冲区溢出漏洞

Oracle 8i TNS Listener 缓冲区溢出漏洞 (Other,缺陷)     Oracle 8i 发现重大漏洞,允许攻击者执行任意代码 详细: Oracle 8i TNS (Transparent Network Substrate) Listener 负责建立和维系客户机同 ORACLE 数据库服务的远程连接.发现该 Listener 存在缓冲区溢出漏洞.攻击者成功利用此漏洞,将能在数据库服务器上执行任意代码. 更为糟糕的是,缓冲溢出发生在验证之前,这意味着激活了口令保护机制的

iPlanet Web Server 缓冲区溢出漏洞

server|web 涉及程序: iPlanet 描述: iPlanet Web Server 缓冲区溢出漏洞 详细: iPlanet Web Server 4.x存在一个缓冲区溢出漏洞.该漏洞允许恶意的用户远程执行任意代码或产生拒绝服务攻击. 通过发送一个长度大约为 198-240 字符并以.shtml 作后缀的HTTP请求,将产生缓冲区溢出. 该漏洞只有在服务器端打开'parsing' 选项时才被利用.成功地利用这个漏洞恶意的攻击者可以完全控制目标主机. 受影响的系统:Sun Solaris

Skype爆严重缓冲区溢出漏洞,可提权于无形之中

本文讲的是Skype爆严重缓冲区溢出漏洞,可提权于无形之中,近日,微软旗下非常流行的免费网络短信和语音呼叫服务Skype被发现了一个严重的漏洞,该漏洞可以让黑客远程执行恶意代码或者导致系统崩溃.  Skype是一种免费的在线服务,允许用户之间通过互联网进行语音,视频和即时消息进行通信.由于其在全球具有很高的知名度,该服务于2011年5月被微软公司以85亿美元收购.  这枚未知的堆栈缓冲区溢出漏洞(CVE-2017-9948)位于Skype Web的消息和通话服务中,该漏洞是来自德国based s

虚拟机危险!一个存在11年的缓冲区溢出漏洞--毒液

本文讲的是 虚拟机危险!一个存在11年的缓冲区溢出漏洞--毒液,CrowdStrike的研究人员昨日声称,他们发现当今大多数最流行的虚拟机平台软件中,都存在一个缓冲区溢出漏洞,该漏洞能够潜在的导致攻击者访问主机. 雪上加霜的是,即使管理员禁止访问虚拟软盘驱动代码(话说这年代谁还用软盘?),另一个完全无关的漏洞,仍然允许该代码被访问. 由于害怕媒体放大漏洞危害而引起恐慌,研究人员在建立了介绍及修补"毒液"漏洞的网站之后才通知了媒体. 研究人员将这个漏洞称为"毒液"(V

缓冲区溢出:十年来攻击和防卫的弱点_漏洞研究

摘要: 在过去的十年中,以缓冲区溢出为类型的安全漏洞占是最为 常见的一种形式了.更为严重的是,缓冲区溢出漏洞占了远程网 络攻击的绝大多数,这种攻击可以使得一个匿名的Internet用户 有机会获得一台主机的部分或全部的控制权!如果能有效地消除 缓冲区溢出的漏洞,则很大一部分的安全威胁可以得到缓解.在 本文中,我们研究了各种类型的缓冲区溢出漏洞和攻击手段,同 时我们也研究了各种的防御手段,这些手段用来消除这些漏洞所 造成的影响,其中包括我们自己的堆栈保护方法.然后我们要考 虑如何在保证现有系统功能

SAP HANA漏洞及修复建议

SAP HANA漏洞及修复建议   http://mp.weixin.qq.com/s/ylYT2KGS3YZCGRYXUf_IQw   近期,中国国家信息安全漏洞共享平台(CNVD)收录了SAP云商务平台HANA系统存在多个漏洞中的两个关键漏洞:HANA自助服务身份认证漏洞与会话固定(Session Fixation)漏洞(CNVD-2017-02799.CNVD-2017-02802).利用这些漏洞,外部或内部攻击者未经任何身份认证就能够冒用其他用户甚至是高权限用户身份,远程控制SAP HA