glibc升级小记

2015年元月最后几天,glibc幽灵漏洞来袭,引用 中华财经网的报道 稍做介绍:

Linux glibc函数库日前曝出名为GHOST(幽灵)的高危漏洞,漏洞编号是CVE-2015-0235。攻击者可利用此漏洞实施远程攻击,并完全控制目标系统。据360网络攻防实验室介绍,各大Linux发行商已经发布漏洞补丁,提醒企业网管做好服务器的安全更新。
Glibc是GNU发布的libc库,即c运行库。它是Linux系统中最底层的API,几乎其它任何运行库都会依赖于glibc。glibc除了封装Linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。
国外安全研究人员发现,glibc的__nss_hostname_digits_dots()函数有缓冲区溢出漏洞。这一漏洞既可以本地利用,也可以远程利用。研究人员对漏洞进行了测试验证:向目标邮件服务器发送特别构造的邮件,从而获得了远程登录Linxu系统的shell脚本。通过这种方式可以绕过32位和64位系统上的所有现存保护机制(比如SSLR、PIE和NX)。
受glibc-2.2影响的GNU C函数最早版本是在2000年11月发布的。这一漏洞曾在2013年5月被修补(在glibc-2.17 和glibc-2.18版本之间)。但由于当时并没有被认定为安全威胁,包括Debian 7、Red Hat Enterprise Linux 6 & 7、 CentOS 6 & 7和Ubuntu 12.04在内的多数知名Linux版本在长达一年半的时间都没有修补幽灵漏洞。
据360网络攻防实验室的安全专家介绍,Linux glibc幽灵漏洞最容易的攻击入口是邮件服务器,和存在SSRF(Server-side Request Forgery)漏洞的WEB接口。值得庆幸的是,此漏洞目前还没有公开通用的攻击代码,这也给了服务器管理员们及时安装补丁的宝贵时间。
目前Debian 、Red Hat Enterprise Linux、 CentOS和Ubuntu等Linux发行商已发布了漏洞补丁,用户只需要根据各发行版的安全公告升级glibc就可以修补漏洞,避免受到黑客的幽灵攻击。

两天后,各大牛纷纷推出了自己的bug修复脚本,这里我借用turnkeylinux的博客做相关业务服务器的更新:

1. 测试代码 ghosttest.c

/* ghosttest.c: GHOST vulnerability tester */
/* Credit: http://www.openwall.com/lists/oss-security/2015/01/27/9 */
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.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);
} 

编译ghosttest.c生成可执行文件ghosttest

#gcc -o ghosttest ghosttest.c

2. 升级脚本 update.sh

#!/bin/bash
update_log="/root/glibc_update.log"
rpm -qa | grep glibc >> $update_log
yum clean all >> $update_log
yum -y update glibc >> $update_log

cd /tmp/
chmod 700 /tmp/ghosttest
./ghosttest >> $update_log
./ghosttest
rm /tmp/ghosttest

/etc/init.d/crond restart >> $update_log
/etc/init.d/rsyslog restart >> $update_log
/etc/init.d/acpid restart >> $update_log
/etc/init.d/sshd restart >> $update_log

3. 后续操作就是重启业务服务,balabala ^_^

后记:

内网一台服务由于安装失误,导致在磁盘的开始位置写了两个引导分区,故而每次重启机器都引导出错,报错信息如下:

报错信息解释一下:系统引导获取grub.conf指定的img文件,img文件指定的磁盘分区表已经失效,故而每次重启都因找不到对应的磁盘分区而失败。

解决方案:用光盘启动,执行 grub-install --root-directory=/boot /dev/sda

时间: 2024-10-10 06:22:23

glibc升级小记的相关文章

Centos6.5 glibc 升级

libnuma.so.1共享库安装yum install libnuma*http://blog.itpub.net/8183550/viewspace-1820856/ 运行以下命令检查动态库c++:strings /usr/lib64/libstdc++.so.6|grep GLIBC 查看系统glibc库版本可使用如下命令: strings /lib64/libc.so.6 |grep GLIBC_ Centos6.5 glibc 升级 http://hardog.net/2016/03/

glibc升级,解决glib版本过低的问题

Debian wheezy下的glibc版本为2.13,安装几个软件都运行不了,报以下类似错误:xxxx: /lib/i386-linux-gnu/i686/cmov/libc.so.6: version `GLIBC_2.15' not found (required by xxxx) 解决方法:把glibc升级到2.15版本:添加软件源,刷新系统: echo "deb http://ftp.debian.org/debian sid main" >> /etc/apt/

GLIBC升级

GLIBC升级 1.安装 1.1 说明 目前大部分架构都已经是GLIBC2.14了,难免会有一些老的机器会是GLIBC2.12,所以下面是我升级GLIBC的过程及步骤. GLIBC是系统核心服务,升级一定要注意了:笔者是CentOS6系统升级成功,其他系统自行斟酌. 1.2 下载并解压 [[email protected] ~]# cd /usr/local/src/ [[email protected] src]# wget http://ftp.gnu.org/gnu/glibc/glibc

【linux】glibc升级

glibc升级 步骤如下: 1.下载解压glibc wget http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz tar zxvf glibc-2.18.tar.gz cd glibc-2.18 2.编译安装 mkdir build cd build/ ../configure --prefix=/usr make -j4 make install 3.验证是否安装成功 [[email protected] build]# strings /lib64/

gcc glibc升级

很久以前花了一周琢磨出来的方法,最近看同事对于升级gcc.glibc需求挺频繁的,就发出来,供有需要的同学参考一下. 由于在升级过程中可能会出现各种问题,所以只供参考只供参考只供参考,遇到不一样的报错还需要根据报的错误具体分析,另外多开几个窗口,glibc安装过程中当前窗口会挂掉,需要在其它窗口操作 友情提示:升级glibc是个痛苦的过程,请做好心里准备.最好先在虚拟机中试验,每步做好快照.祝顺! 升级的过程是先升级gcc再升级glibc 参考文档: http://blog.csdn.net/u

glibc升级导致系统段错误问题解决方案

系统:阿里云ECS CentOS6.5 当前GLIBC版本:2.12 准备升级GLIBC版本:2.19 一,GLIBC介绍glibc是GNU发布的libc库,即c运行库.glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc.glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现.内核实现一个功能,glibc要花很久才会用上,由于glibc和内核不是一块开发的,所以glibc需要去兼容不同版本的内核,而内核也要去兼容不同版

glibc升级GLIBC_2.14,一定不要mv libc.so.6 libc.so.6_bak……

背景:首先说一下背景,源于年前的一次libc的升级.再迁移打包机环境时遇到了报错/lib64/libc.so.6: version `GLIBC_2.14' not found 报错很明显,直接安装了对应的版本libc-2.14.so.然后按照网上的操作进入/lib64/,想着将当前的版本覆盖到旧版本libc-2.12.so上 然后就脑抽没有注意到libc.so.6实际是个软链到正确版本的,还想着先mv 备份一下,再copy回来一个高版本…… 一定不要执行的操作:mv libc.so.6 lib

Linux升级Glibc

一.简介 glibc是gnu发布的libc库,即c运行库.glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc.glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现... 本文介绍Glibc升级方法,参考:http://www.cppblog.com/prayer/archive/2009/07/22/90836.html 二.升级 步骤如下: wget http://ftp.gnu.org/gnu/glibc/gli

glibc简单升级(2.12-&gt;2.14)

·        1. 升级原因 ·        2. 检测系统glibc版本及动态库路径 o   2.1 检测 glibc 版本 o   2.2 检测动态库所在目录下的libc.so.6软连接的动态库 ·        3 升级glibc版本 o   3.1 升级libc.so版本 o   3.2 升级glibcxx版本 ·        4. 验证升级后的glibc是否满足引擎需要 1. 升级原因 由于目前在项目中使用的linux系统都为centos6.4原生系统,其自带的libc动态库版