BLSA-2017:0031 – [中等] glibc 安全警告及修复方法



  • BLSA-2017:0031 – [中等] glibc 安全警告及修复方法

    问题描述

    glibc最近暴露若干安全漏洞,包括堆栈溢出漏洞(CVE-2014-9761、CVE-2015-8779)、整数溢出漏洞(CVE-2015-8778)和拒绝服务漏洞(CVE-2015-8776), 恶意攻击者综合利用这些漏洞可以使应用程序崩溃或者执行任意代码或者发起拒绝服务器攻击等。为增加系统安全强度,建议所有用户都安装BCLinux提供的的升级包,升级包包含了修复这些漏洞的补丁文件。

    glibc简介
    glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于 glibc 囊括了几乎所有的 UNIX 通行的标准,可以想见其内容包罗万象。而就像其他的 UNIX 系统一样,其内含的档案群分散于系统的树状目录结构中,像一个支架一般撑起整个操作系统。在 GNU/Linux 系统中,其C函式库发展史点出了GNU/Linux 演进的几个重要里程碑,用 glibc 作为系统的C函式库,是GNU/Linux演进的一个重要里程碑。

    libc、glibc和glib的关系
    glibc 和 libc 都是 Linux 下的 C 函数库。glibc是linux下面c标准库的实现,即GNU C Library。glibc本身是GNU旗下的C标准库,后来逐渐成为了Linux的标准c库,而Linux下原来的标准c库Linux libc逐渐不再被维护。Linux下面的标准c库不仅有这一个,还有uclibc、klibc和Linux libc等等,但是glibc无疑是用得最多的。glibc在/lib目录下的.so文件为libc.so.6。
    glib 和 glibc 基本上没有太大联系,可能唯一的共同点就是,其都是 C 编程需要调用的库而已。
    glib 是 Gtk+ 库和 Gnome 的基础。glib 可以在多个平台下使用,比如 Linux、Unix、Windows 等。glib 为许多标准的、常用的 C 语言结构提供了相应的替代物。

    影响版本

    • BigCloud Enterprise Linux 6
    • Red Hat Enterprise Linux 6
    • CentOS Linux 6

    详细介绍

    • CVE-2014-9761 [中等]
      在nan * 函数中发现了一个堆栈溢出漏洞,这可能会导致使用nan函数处理长字符串的应用程序崩溃或者执行任意代码。

    • CVE-2015-8776 [中等]
      strftime函数存在拒绝服务漏洞。通过越界时间值,上下文独立的攻击者可造成拒绝服务或获取敏感信息。

    • CVE-2015-8778 [中等]
      _hcreate_r 函数size参数存在整数溢出漏洞。通过触发越界堆内存访问,上下文独立的攻击者可造成拒绝服务或执行任意代码。

    • CVE-2015-8779 [中等]
      在catopen()函数中发现了一个堆栈溢出漏洞,这可能会导致使用nan函数处理长字符串的应用程序崩溃或者执行任意代码。

    解决方案

    目前,BCLinux的官方源已经提供 glibc 的更新软件包,受影响的 BCLinux 6 客户端用户需要升级到 2.12-1.209.el6 版本。

    1.检查YUM源设置,确保使用的是BCLinux官方YUM源
    [root@BCLinux ~]# ls -l /etc/yum.repos.d/

    total 12
    -rw-r--r--. 1 root root  969 Nov 16  2015 BCLinux-Base.repo
    -rw-r--r--. 1 root root 1053 Nov 16  2015 BCLinux-Source.repo
    -rw-r--r--. 1 root root 1184 Nov 16  2015 BigCloud.repo
    

    2.安装更新

    [root@BCLinux ~]# yum update glibc
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Setting up Update Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package glibc.x86_64 0:2.12-1.132.el6 will be updated
    --> Processing Dependency: glibc = 2.12-1.132.el6 for package: glibc-common-2.12-1.132.el6.x86_64
    ---> Package glibc.x86_64 0:2.12-1.209.el6 will be an update
    --> Running transaction check
    ---> Package glibc-common.x86_64 0:2.12-1.132.el6 will be updated
    ---> Package glibc-common.x86_64 0:2.12-1.209.el6 will be an update
    --> Processing Dependency: tzdata >= 2015g-4 for package: glibc-common-2.12-1.209.el6.x86_64
    --> Running transaction check
    ---> Package tzdata.noarch 0:2013g-1.el6 will be updated
    ---> Package tzdata.noarch 0:2016i-1.el6 will be an update
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ===============================================================================================================================================
     Package                             Arch                          Version                                Repository                      Size
    ===============================================================================================================================================
    Updating:
     glibc                               x86_64                        2.12-1.209.el6                         updates                        3.8 M
    Updating for dependencies:
     glibc-common                        x86_64                        2.12-1.209.el6                         updates                         14 M
     tzdata                              noarch                        2016i-1.el6                            updates                        452 k
    
    Transaction Summary
    ===============================================================================================================================================
    Upgrade       3 Package(s)
    
    Total download size: 18 M
    Is this ok [y/N]: y
    

    3.复查

    [root@BCLinux ~]# rpm -q glibc
    glibc-2.12-1.209.el6.x86_64
    

    4.重启应用

    安装升级包以后,重启应用,更新生效。

    外部链接

    1.BCLinux安全更新