Linux glibc幽灵(GHOST)漏洞检测及修复方案

2023-05-16

安全研究人员近日曝出一个名为幽灵(GHOST)的严重安全漏洞,这个漏洞可以允许攻击者远程获取操作系统的最高控制权限,影响市面上大量Linux操作系统及其发行版。该漏洞CVE编号为CVE-2015-0235。
 
什么是glibc
 
glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。glibc囊括了几乎所有的UNIX通行的标准。
 
漏洞概述
 
代码审计公司Qualys的研究人员在glibc库中的__nss_hostname_digits_dots()函数中发现了一个缓冲区溢出的漏洞,这个bug可以经过gethostbyname*()函数被本地或者远程的触发。
 
应用程序主要使用gethostbyname*()函数发起DNS请求,这个函数会将主机名称转换为ip地址。

影响范围
 
该漏洞影响glibc库版本2.2-2.17的Linux操作系统
版本号的排列顺序是 2.2到2.5到2.17 ,而不是 2.2到2.17到2.5 
版本号是按1到100这样排,所以2.5不是最大.所以2.5处在2.2到2.17之间


操作系统类型包括
 CentOS 6 & 7
Debian 7
Red Hat Enterprise Linux 6 & 7
Ubuntu 10.04 & 12.04
各Linux发行版



漏洞测试
 
1、编译以下测试代码
 #include
#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("not vulnerable");
exit(EXIT_SUCCESS);
}
puts("should not happen");
exit(EXIT_FAILURE);


文件命名ghost.c 

2、上述测试程序可以显示出glibc版本和主机是否存在漏洞
 gcc ghost.c -o CVE-2015-0235
./CVE-2015-0235


./CVE-2015-0235  
vulnerable
表示存在漏洞,需要进行修复。 
 
./CVE-2015-0235
notvulnerable
表示修复成功。 


建议修补方案  
  
特别提示:由于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* 

补充下
OS:CentOS 和 RedHat  更新方法如下:
1)用户使用root用户, 在系统上执行: #yum clean all; yum update glibc
2)以上命令执行完成后,
查看Glibc版本:# rpm –qa|grep glibc-2.12 (跟右侧对应glibc版本对应的话,说明修复成功)  
OS版本                                                  对应Glibc版本
CentOS6.x/redhat6.x                               glibc-2.12-1.149.el6_6.5
CentOS 6.2 安全版(tlinux)                       glibc-2.12-1.149.tl1.5
CentOS5.x/redhat5.x                               glibc-2.5-123.el5_11.1

OS: Ubuntu 更新方法如下:
1)用户使用root权限登录系统或使用sudo获取root权限,执行以下命令:#apt-get update#apt-get install libc6
2)执行完成以后,查看版本, 输出如下表示更新完成:root@VM-ubuntu:~# dpkg -l|grep libc6
  
OS版本               对应Glibc版本
Ubuntu12.x          2.15-0ubuntu10.10
Ubuntu14.x          2.19-0ubuntu6
Ubuntu10.x          2.11.1-0ubuntu7.20

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux glibc幽灵(GHOST)漏洞检测及修复方案 的相关文章

  • 在Linux上编译C# + WPF以便在Windows上运行

    我有一个 C 应用程序 其中某些部分是使用 WPF 编写的 Mono 不支持 可以在 Linux 上编译这个应用程序吗 最终 该应用程序将在 Windows 上运行 但它是更大框架的一部分 并且我们的整个构建过程在 Linux 上运行 因此
  • 修改linux下的路径

    虽然我认为我已经接近 Linux 专业人士 但显然我仍然是一个初学者 当我登录服务器时 我需要使用最新版本的R 统计软件 R 安装在 2 个地方 当我运行以下命令时 which R I get usr bin R 进而 R version
  • Android:ANT 构建失败,并显示 google-play-services-lib:“解析为没有项目的 project.properties 文件的路径”

    我正在尝试使用 ANT 构建我的应用程序 但在包含 google play services lib 库项目后 我惨遭失败 Step 1 我在 project properties 文件中设置了对库项目的引用 android library
  • 如何禁用 GNOME 桌面屏幕锁定? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何阻止 GNOME 桌面在几分钟空闲时间后锁定屏幕 我已经尝试过官方手册了在红帽 https access redhat com doc
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • 为什么 Linux perf 使用事件 l1d.replacement 来处理 x86 上的“L1 dcache misses”?

    在英特尔 x86 上 Linux用途 https stackoverflow com a 52172985 149138事件l1d replacements来实施其L1 dcache load misses event 该事件定义如下 计数
  • 无法从 jenkins 作为后台进程运行 nohup 命令

    更新 根据下面的讨论 我编辑了我的答案以获得更准确的描述 我正在尝试从詹金斯运行 nohup 命令 完整的命令是 nohup java jar home jar server process 0 35 jar prod gt gt var
  • Linux中的定时器类

    我需要一个计时器来以相对较低的分辨率执行回调 在 Linux 中实现此类 C 计时器类的最佳方法是什么 有我可以使用的库吗 如果您在框架 Glib Qt Wx 内编写 那么您已经拥有一个具有定时回调功能的事件循环 我认为情况并非如此 如果您
  • chown:不允许操作

    我有问题 我需要通过 php 脚本为系统中的不同用户设置文件所有者权限 所以我通过以下命令执行此操作 其中 1002 是系统的用户 ID file put contents filename content system chown 100
  • sendfile64 只复制约2GB

    我需要使用 sendfile64 复制大约 16GB 的文件 到目前为止我所取得的成就是 include
  • 在哪里可以找到并安装 pygame 的依赖项?

    我对 Linux 比较陌生 正在尝试安装 python 的 pygame 开发环境 当我运行 setup py 时 它说我需要安装以下依赖项 我找到并安装了其中之一 SDL 然而 其他人则更加难以捉摸 Hunting dependencie
  • fopen 不返回

    我在 C 程序中使用 fopen 以只读模式 r 打开文件 但就我而言 我观察到 fopen 调用没有返回 它不返回 NULL 或有效指针 执行在 fopen 调用时被阻止 文件补丁绝对正确 我已经验证过 并且不存在与权限相关的问题 任何人
  • 域套接字“sendto”遇到“errno 111,连接被拒绝”

    我正在使用域套接字从另一个进程获取值 就像 A 从 B 获取值一样 它可以运行几个月 但最近 A 向 B 发送消息时偶尔会失败 出现 errno 111 连接被拒绝 我检查了B域套接字绑定文件 它是存在的 我也在另一台机器上做了一些测试 效
  • 添加要在给定命令中运行的 .env 变量

    我有一个 env 文件 其中包含如下变量 HELLO world SOMETHING nothing 前几天我发现了这个很棒的脚本 它将这些变量放入当前会话中 所以当我运行这样的东西时 cat env grep v xargs node t
  • NPTL 和 POSIX 线程有什么区别?

    NPTL 和 POSIX 线程之间的基本区别是什么 这两者是如何演变的 POSIX 线程 pthread 不是一个实现 它是几个函数的 API 规范 纸上的标准 英文 其名称以pthread 以及定义在
  • 如何在apache 2.4.6上安装apxs模块

    我刚刚用过apt get update我的 apache 已更新为2 4 6 我想安装 apxs 来编译模块 但收到此错误 The following packages have unmet dependencies apache2 pre
  • Linux 可执行文件与 OS X“兼容”吗?

    如果您在基于 Linux 的平台上用 C 语言编译一个程序 然后将其移植以使用 MacOS 库 它会工作吗 来自编译器的核心机器代码在 Mac 和 Linux 上兼容吗 我问这个问题的原因是因为两者都是 基于 UNIX 的 所以我认为这是真
  • Linux:如何从特定端口发送TCP数据包?

    如何打开原始套接字以从特定 TCP 端口发送 我希望所有连接始终来自临时端口以下的一系列端口 如果您正在使用raw套接字 然后只需在数据包标头中填写正确的 TCP 源端口即可 相反 如果您使用 TCP 套接字接口 socket connec
  • 有谁知道在哪里定义硬件、版本和序列号。 /proc/cpuinfo 的字段?

    我想确保我的 proc cpuinfo 是准确的 目前它输出 Hardware am335xevm Revision 0000 Serial 0000000000000000 我可以在代码中的哪里更改它以给出实际值 这取决于 Linux 的
  • ubuntu:升级软件(cmake)-版本消歧(本地编译)[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我的机器上安装了 cmake 2 8 0 来自 ubuntu 软件包 二进制文件放置在 usr bin cmake 中 我需要将 cmake 版本至少

随机推荐

  • c++实现的阻塞队列

    阻塞队列 block queue 什么是阻塞队列 xff1a 在多线程编程时当有多个线程访问一个队列时如果队列为空 xff0c 则获取队列中元素的方法就会阻塞 xff0c 直到队列中有元素可以获取 解决的问题 xff1a 队列的线程安全问题
  • kafka生产者客户端架构和处理流程

    Kafka生产者客户端整体架构如图 xff1a 整个生产者客户端主要有两个线程 xff0c 主线程以及Sender线程 Producer在主线程中产生消息 xff0c 然后通过拦截器 xff0c 序列化器 xff0c 分区器之后缓存到消息累
  • 19、常用类——Collections 类

    Collections 类 Collections 则是集合类的一个工具类 帮助类 xff0c 其中提供了一系列静态方法 xff0c 用于对集合中元素进行排序 搜索以及线程安全等各种操作 常用方法 public static lt T ex
  • 【时间规划】C/C++发展之路--读书

    0 xff1a 图书馆的N本C xff0c C 43 43 书 1 xff1a C语言深度解剖 2 xff1a 高质量C 43 43 c编程指南 3 xff1a C 43 43 primer第四版 4 xff1a Windows程序设计 5
  • SpringSecurity(十七)------CSRF

    一 引入 从刚开始学习Spring Security时 xff0c 在配置类中一直存在这样一行代码 xff1a http csrf disable 如果没有这行代码导致用户无法被认证 这行代码的含义是 xff1a 关闭csrf防护 二 什么
  • Android Native Leak分析

    Native Heap 为 Android C 43 43 层 xff08 也为so库 xff09 所分配的内存 问题描述解决方式数据分析 问题解决方法获取数据方法脚本 python3解析结果 出现问题技巧 问题描述 使用dumspsys
  • CentOS 7安装Python 3.6,pip3报错问题

    在CentOS 7上安装Python3 6 3后 xff0c 在使用pip命令时报如下错误 Traceback most recent call last File 34 usr Python3 6 3 lib python3 6 site
  • SpringCloud调用接口流程

    Spring Cloud调用接口过程 Spring Cloud 在接口调用上 xff0c 大致会经过如下几个组件配合 xff1a Feign gt Hystrix gt Ribbon gt Http Client xff08 apache
  • seata的部署和集成

    一 部署Seata的tc server 1 下载 首先我们要下载seata server包 xff0c 地址在http seata io zh cn blog download html 当然 xff0c 课前资料也准备好了 xff1a 2
  • 强化学习:Q-learning与DQN(Deep Q Network)

    文章目录 Q learning一些名词epsilon greedy算法流程 DQN记忆库 Experience replay 固定Q 目标 Fixed Q target 算法流程 Q learning是一种很常用很传统的强化学习方法 xff
  • 解决windows FTP共享、局域网共享文件等解决方案。

    nbsp nbsp nbsp 最近单位在局域网共享了一个电脑 有自己的IP地址 直接在运行输入 192 168 nbsp 按理说就能访问 nbsp nbsp nbsp 但是别人的机器都可以 只有我的不行 研究了半天终于找到原因 这个原因还真
  • mariaDB安装与配置

    cd到 etc yum repos d 目录下 xff0c 使用touch MariaDB repo创建MariaDB repoMariaDB repo文件 vim MariaDB repo 进入配置文件 在官网找到配置信息 选择阿里云镜像
  • archlinux安装

    转载地址 https wiki archlinux org index php Beginners 27 Guide 28 E7 AE 80 E4 BD 93 E4 B8 AD E6 96 87 29 欢迎 xff0c 本文档将指导您安装
  • 2030年的人工智能与生活(AI and Life in 2030)

    作者 xff1a Anqi 链接 xff1a https zhuanlan zhihu com p 22308870 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c 非商业转载请注明出处 第一部分 xff1
  • 如何将origin pro的界面切换变成中文显示?

    origin其实自带中文界面 xff0c 很多朋友反馈不知道如何设置 xff0c 软件里面也没看到有改变语言的选项 xff0c 它设置需要更改注册表 xff0c 相对复杂一点 那么今天就手把手的教大家如何将origin的语言改为中文吧 wi
  • Java高并发秒杀平台(Redis + RabbitMQ)

    Seconds Kill 本项目是一个模拟高并发环境下基于 SpringBoot 的秒杀购物平台 为了减少对数据库的直接访问 xff0c 通过 Redis 实现了缓存优化 xff1b 并通过 RabbitMQ 消息中间件来接收大量的并发请求
  • Ubuntu 配置

    配置源 如果是网通或者教育网建议选择上海交大的源 sudo cp etc apt sources list etc apt sources list backup sudo gedit etc apt sources list 用以下内容替
  • vncserver: Failed command ‘/etc/X11/Xvnc-session‘: 256!

    安装vncserver启动时出现如下报错 xff1a Starting applications specified span class token keyword in span etc X11 Xvnc session Log spa
  • Windows Media Player SDK 简介

    Windows Media Player SDK 简介 2002年9月 适用于 xff1a Microsoft Windows Media Player 摘要 xff1a 了解如何更改 Windows Media Player 的外观和行为
  • Linux glibc幽灵(GHOST)漏洞检测及修复方案

    安全研究人员近日曝出一个名为幽灵 xff08 GHOST xff09 的严重安全漏洞 xff0c 这个漏洞可以允许攻击者远程获取操作系统的最高控制权限 xff0c 影响市面上大量Linux操作系统及其发行版 该漏洞CVE编号为CVE 201