BLSA-2016:0076 – [紧急] java-1.8.0-openjdk 安全警告及修复方法



  • BLSA-2016:0076 – [紧急] java-1.8.0-openjdk 安全警告及修复方法

    问题描述

    最近java-1.8.0-openjdk暴露出一系列安全漏洞,这些漏洞会导致一些不受信任的java应用程序破坏虚拟机内存并绕过Java沙箱限制,从而对系统造成危害等等。为了增加系统安全强度,建议所有使用受影响产品的用户都安装BCLinux提供的的更新补丁。

    jdk简介
    JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境,JAVA工具和JAVA基础的类库。
    openjdk简介
    OpenJDK是一款只能运行在i386 和AMD-64机器上的软件。OpenJDK做为GPL许可(GPL-licensed)的Java平台的开源化实现,Sun正式发布它已经六年有余。从发布起,Java社区的大众们就又开始努力学习,以适应这个新的开源代码基础(code-base)。
    jdk和openjdk区别
    1.授权协议的不同:
             openjdk采用GPL V2协议放出,而JDK则采用JRL放出。两者协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用,而JRL只允许个人研究使用。
    2.OpenJDK不包含Deployment(部署)功能:
             部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,这些功能在Openjdk中是找不到的。
    3.OpenJDK源代码不完整:
             在采用GPL协议的Openjdk中,sun jdk的一部分源代码因为产权的问题无法开放openjdk使用,其中最主要的部份就是JMX中的可选元件SNMP部份的代码。因此这些不能开放的源代码 将它作成plug,以供OpenJDK编译时使用,你也可以选择不要使用plug。而Icedtea则为这些不完整的部分开发了相同功能的源代码 (OpenJDK6),促使OpenJDK更加完整。
    4.部分源代码用开源代码替换:
             由于产权的问题,很多产权不是SUN的源代码被替换成一些功能相同的开源代码,比如说字体栅格化引擎,使用Free Type代替。
    5.openjdk只包含最精简的JDK:
             OpenJDK不包含其他的软件包,比如Rhino Java DB等,并且可以分离的软件包也都是尽量的分离,但是这大多数都是自由软件,你可以自己下载加入。

    影响版本

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

    详细描述

    • CVE-2016-5582
      OpenJDK中的Hotspot组件被被暴露在某些情况下没有正确地检查System.arraycopy()函数参数,这样一些不受信任的Java程序或者应用可以利用这个漏洞来破坏虚拟机内存并绕过Java沙箱限制。

    • CVE-2016-5573
      OpenJDK中的Hotspot组件未能正确地对接收到的Java调试线协议(JDWP)数据包进行检查,攻击者可以利用这个漏洞向开启调试功能的Java应用程序发送调试命令,使被攻击者的浏览器发送HTTP请求包到开启调试功能的应用程序的JDWP端口,从而危害系统安全。

    • CVE-2016-5542
      OpenJDK中的Libraries组件未能对Jar(Java的一种文档格式)完整性校验算法集进行限制。攻击者可以利用这个漏洞,通过使用弱签名密钥或散列算法去改变Jar文档内容。

    • CVE-2016-5554
      OpenJDK中的JMX组件在处理Java类装载器时被暴露出存在一个安全漏洞,不受信任的Java应用程序可以利用这个漏洞绕过某些Java沙箱限制。

    • CVE-2016-5597
      OpenJDK中的Networking组件在处理HTTP代理的身份验证时暴露出一个漏洞。在代理服务器请求身份验证信息时,Java应用程序可以通过存文本链接到HTTP代理服务器,从而使HTTP代理服务器的身份验证信息暴露给外界。

    解决方案

    目前,BCLinux的官方源已经可以提供更新的java-1.8.0-openjdk软件包。
    BCLinux 6用户需要升级到1.8.0.111-0.b15.el6_8版本;
    BCLinux 7用户需要升级到1.8.0.111-1.b15.el7_2版本。

    以BCLinux 7用户安装更新为例:

    1.检查YUM源设置,确保使用的是BCLinux官方YUM源

    [root@BCLinux ~]# ls -l /etc/yum.repos.d/
    total 16
    -rw-r--r--. 1 root root 1127 Jan  7  2016 BCLinux-Base.repo
    -rw-r--r--. 1 root root  794 Jan  7  2016 BCLinux-Kernel.repo
    -rw-r--r--. 1 root root 1153 Jan  7  2016 BCLinux-Source.repo
    -rw-r--r--. 1 root root  801 Jan  7  2016 BigCloud.repo
    

    2.安装更新

    [root@bclinuc ~]# yum update java-1.8.0-openjdk
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Resolving Dependencies
    --> Running transaction check
    ---> Package java-1.8.0-openjdk.x86_64 1:1.8.0.101-3.b13.el7_2 will be updated
    ---> Package java-1.8.0-openjdk.x86_64 1:1.8.0.111-1.b15.el7_2 will be an update
    --> Processing Dependency: java-1.8.0-openjdk-headless = 1:1.8.0.111-1.b15.el7_2 for package: 1:java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64
    --> Running transaction check
    ---> Package java-1.8.0-openjdk-headless.x86_64 1:1.8.0.101-3.b13.el7_2 will be updated
    ---> Package java-1.8.0-openjdk-headless.x86_64 1:1.8.0.111-1.b15.el7_2 will be an update
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    =====================================================================================================================================================
     Package                                                Arch                              Version                                  Repository
    =====================================================================================================================================================
    Updating:
     java-1.8.0-openjdk                                     x86_64                            1:1.8.0.111-1.b15.el7_2                    updates
    Updating for dependencies:
     java-1.8.0-openjdk-headless                            x86_64                            1:1.8.0.111-1.b15.el7_2                    updates
    
    Transaction Summary
    =====================================================================================================================================================
    Upgrade  1 Package (+1 Dependent package)
    
    Total download size: 32 M
    Is this ok [y/d/N]: y
    

    3.复查

    [root@BCLinux ~]# rpm -qa | grep java-1.8.0-openjdk
    java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64
    java-1.8.0-openjdk-headless-1.8.0.111-1.b15.el7_2.x86_64
    

    4.重启应用

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

    外部链接

    1.BCLinux安全更新