IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Linux Glibc库严重安全漏洞及修复方法

    小残、发表于 2015-01-30 10:01:07
    love 0

    日前Linux GNU glibc标准库的 gethostbyname函数爆出缓冲区溢出漏洞,漏洞编号为CVE-2015-0235。
    黑客可以通过gethostbyname系列函数实现远程代码执行,获取服务器的控制权及Shell权限,此漏洞触发途径多,影响范围大,请大家关注和及时临时修复,后续我们会尽快更新镜像修复。

    一、 漏洞发布日期
    2015年1月27日

    二、 已确认被成功利用的软件及系统
    Glibc 2.2到2.17 (包含2.2和2.17版本)

    三、 漏洞描述
    GNU glibc标准库的gethostbyname 函数爆出缓冲区溢出漏洞,漏洞编号:CVE-2015-0235。 Glibc 是提供系统调用和基本函数的 C 库,比如open, malloc, printf等等。所有动态连接的程序都要用到Glibc。远程攻击者可以利用这个漏洞执行任意代码并提升运行应用程序的用户的权限。

    四、 漏洞检测方法
    请自行检测:

    [[test]]
    $ cat > GHOST.c << EOF
    #include 
    #include 
    #include 
    #include 
    #include 
    #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("notvulnerable");
    exit(EXIT_SUCCESS);
    }
    puts("should nothappen");
    exit(EXIT_FAILURE);
    }
    EOF
    [test]
    $ gcc GHOST.c -o GHOST
    [test]
    $./GHOST
    vulnerable

    五、 建议修补方案

    特别提示:由于glibc属于Linux系统基础组件,为了避免修补对您服务器造成影响,建议您选择合适时间进行修复,同时务必在修复前进行备份,如果修复出现问题,可以迅速回滚快照恢复。

    Centos 5/6/7:
    yum update glibc

    Ubuntu 12/14
    apt-get update
    apt-get install libc6

    Debian 6
    wget -O /etc/apt/sources.list.d/debian6-lts.list http://mirrors.aliyun.com/repo/debian6-lts.list
    apt-get update
    apt-get install libc6

    Debian 7
    apt-get update
    apt-get install libc6

    Opensuse 13
    zypper refresh
    zypper update glibc*

    Aliyun linux 5u7
    wget -O /etc/yum.repos.d/aliyun-5.repo http://mirrors.aliyun.com/repo/aliyun-5.repo
    yum update glibc

    下面就以小残博客使用的是阿里云的CentOS 6.3为例进行修复漏洞方法:

    一、登陆linux服务器然后使用root权限执行

    yum clean all

    QQ截图20150130175743

    再执行

    yum update glibc

    QQ截图20150130175830

    yum clean all因为要先清除旧的缓存,我的是原生态的阿里云主机都要执行这个,所以%99的人也肯定必须要执行这个,否则你装的还是旧的版本

    二、查版本号执行

    rpm -qa|grep glibc-2.12

    更新后大的版本号是不变的,glibc-2.12-1.149 仅要后边是149就表示是最新的了,不会显示2.19

    QQ截图20150130175919

    三点
    2.18版本也受影响,官方仅写到2.17

    小残博客 点击此处订阅博客 作者:小残博客网
    本站部分文章来自网络,版权归原作者,转载请保留原作者署名!
    本文来自小残博客>>文章地址:“http://www.exehack.net/2680.html”



沪ICP备19023445号-2号
友情链接