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[];
  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) - *sizeof(unsigned char) - *sizeof(char *) - ;
  char name[sizeof(temp.buffer)];
  memset(name, '', len);
  name[len] = '\0';
  retval = gethostbyname_r(name, &resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno);
  if (strcmp(temp.canary, CANARY) != ) {
    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 /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

glibc升级小记的更多相关文章

  1. 【linux】glibc升级

    glibc升级 步骤如下: 1.下载解压glibc wget http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz tar zxvf glibc-2.18.ta ...

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

    Debian wheezy下的glibc版本为2.13,安装几个软件都运行不了,报以下类似错误:xxxx: /lib/i386-linux-gnu/i686/cmov/libc.so.6: versi ...

  3. GLIBC升级

    GLIBC升级 1.安装 1.1 说明 目前大部分架构都已经是GLIBC2.14了,难免会有一些老的机器会是GLIBC2.12,所以下面是我升级GLIBC的过程及步骤. GLIBC是系统核心服务,升级 ...

  4. Centos7 -- glibc 升级失败、意外删除、故意删除后的处理方法

    第一部分:测试(如果不是想测试效果,可以直接跳到第三部分) 鉴于不久前 glibc-2.29 升级失败导致一系列的工具无法正常使用,‘’ 本着研究精神的我决定删除 glibc及其库文件 ,测试影响范围 ...

  5. 工程优化暨babel升级小记

    小记背景 随着业务代码的增多,项目代码的编译时长也在增多,遂针对这个痛点在dev下做些优化 第一部分:优化dev编译时间 这里优化的主要思路是在dev环境下,单独出来一个dll配置文件,将项目中的部分 ...

  6. SUSE glibc升级为2.18过程记录

    先验知识:1.运行时,动态库的装载依赖于ld-linux.so.6的实现,它查找共享库的顺序如下:(1)ld-linux.so.6在可执行的目标文件中被指定,可用readelf命令查看(2)ld-li ...

  7. react-router 从 v3 版本升到 v4 版本,升级小记

    react-router v4 跟 react 一样拆成了两部分,核心的 react-router 和依运行环境而定的 react-router-dom 或 react-router-native(跟 ...

  8. 编译centos6.5:glibc 升级2.14问题

    第一种:不需要 ln 创建软连接,缺点嘛,就是直接安装到系统文件夹/lib64下,想换回来就比较麻烦.(我选择的第二种,因为公司需要fpm打包,写到脚本里面,第一种之间安装在/usr目录下,打包的包安 ...

  9. 【原创】大叔经验分享(27)linux服务器升级glibc故障恢复

    redhat6系统默认安装的glibc-2.12,有的软件依赖的是glibc-2.14,这时需要升级glibc,下载安装 http://ftp.gnu.org/gnu/glibc/glibc-2.14 ...

随机推荐

  1. 微信群的id

    今天网速慢了,竟然把微信群的id卡出来了,记录一下. 格式应该是一个像QQ群一样的数字,然后+@chatroom 看图!   文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言.评论.

  2. laravel 安装环境安了三天!!

    各种报错,各种升级,各种重装,重启!! 记录一下一些错误吧,,, 错误太复杂,,,, 原因:版本问题!.CPU虚拟化问题.win10问题.软件兼容性问题.还有就是各种不细心啥的         分割线 ...

  3. bootstrap model弹出框的使用

    之前,我们讲解了bootstrap tab的使用,今天我们来了解下bootstrap 中model弹出窗的使用. 效果: 代码:<input id="btntext" typ ...

  4. Makefile之写demo时的通用Makefile写法

    Makefile之写demo时的通用Makefile写法[日期:2013-05-22] 来源:CSDN  作者:gqb666 [字体:大 中 小] 前面的一篇文章Makefile之大型工程项目子目录M ...

  5. UML基本架构建模--类的辅助信息

    Organizing Attributes and Operations 组织属性和操作 When drawing a class, you don't have to show every attr ...

  6. 虚拟机VMware下CentOS6.5安装教程图文详解(VMnet8)

    (写在最前面:如果你下载的iso文件 CentOS-6.*-x86_64-minimal.iso 系列,那么需要这么安装:https://blog.csdn.net/lixianlin/article ...

  7. 用bcdedit.exe重建bcd

    使用下面方法之前需要bcdedit.exe和bootsect.exe两个文件,bootsect.exe文件在vista和windows 7的安装光盘的boot目录下,而bcdedit.exe文件可以在 ...

  8. Spring Cloud(九):分布式配置中心和消息总线

    我们在Spring Cloud(七):使用SVN存储分布式配置中心文件和实现refresh中讲到,如果需要客户端获取到最新的配置信息需要执行refresh,我们可以利用webhook的机制每次提交代码 ...

  9. 判断是否是IE浏览器和是否是IE11

    判断是否是IE浏览器用下面这个函数, function isIE() { //ie? 是ie返回true,否则返回false if (!!window.ActiveXObject || "A ...

  10. tornado异步web请求

    1.为什么要使用异步web服务使用异步非阻塞请求,并发处理更高效. 2.同步与异步请求比较同步请求时,web服务器进程是阻塞的,也就是说当一个请求被处理时,服务器进程会被挂起直至请求完成. 异步请求时 ...