全部产品
Search
文档中心

【漏洞公告】CVE-2016-10009:OpenSSH远程代码执行漏洞

更新时间: 2018-12-17

2016年12月19日,漏洞平台SecurityFocus上发布了最新的OpenSSH远程代码执行漏洞CVE-2016-10009。该漏洞的影响范围包括OpenSSL版本5.0到7.3。

本次OpenSSH官方发布的最新OpenSSH版本中,同时修复了包括CVE-2016-10009、CVE-2016-10010、CVE-2016-100011、CVE-2016-100012以及几个没有CVE编号的漏洞。

漏洞详情见下文。


漏洞编号

CVE-2016-10009

漏洞名称

OpenSSH远程代码执行漏洞

漏洞描述

sshd服务可以利用转发的agent-socket文件,欺骗本机的ssh-agent来加载一个恶意的PKCS#11模块,从而可以远程执行代码。

官方评级

中危

漏洞危害

黑客利用漏洞实现远程命令执行,严重情况下可能会导致数据泄露。

漏洞利用条件

可以实现远程利用。

该漏洞利用依赖ssh-agent。该进程默认不启动,只在多主机间免密码登录时才会用到,漏洞利用条件也比较苛刻。

漏洞影响范围

  • OpenSSH 7.3
  • OpenSSH 7.2p2
  • OpenSSH 7.2
  • OpenSSH 7.1p2
  • OpenSSH 7.1p1
  • OpenSSH 7.1
  • OpenSSH 7.0
  • OpenSSH 6.9p1
  • OpenSSH 6.9
  • OpenSSH 6.6
  • OpenSSH 6.5
  • OpenSSH 6.4
  • OpenSSH 6.3
  • OpenSSH 6.2
  • OpenSSH 6.1
  • OpenSSH 6.0
  • OpenSSH 5.8
  • OpenSSH 5.7
  • OpenSSH 5.6
  • OpenSSH 5.5
  • OpenSSH 5.4
  • OpenSSH 5.3
  • OpenSSH 5.2
  • OpenSSH 5.1
  • OpenSSH 5.0

漏洞检测

  • 使用以下命令查看当前版本。

    1. ssh -V
  • 使用安骑士检查。

漏洞修复建议(或缓解措施)

阿里云提供的ECS操作系统中默认的OpenSSH,不受该漏洞影响。如果您变更过OpenSSH版本,并确认当前OpenSSH版本在受影响范围内,阿里云建议您将SSH服务端升级到OpenSSH version 7.4及以上。升级方法见下文。

同时,建议您不要直接将SSH服务等高风险端口服务直接开放到互联网。推荐您使用VPN和堡垒机等更安全的方式进行远程运维,防止发生暴力破解和漏洞利用入侵事件。

升级OpenSSH

推荐您使用yum update升级,如果更新源无最新安装包,您可以按照以下升级方法升级。下文以CentOS 6.8 64bit为例进行说明。

注意

  • 在升级前,强烈建议您做好快照和文件备份,防止出现升级失败无法远程管理等意外事件。

  • 在执行以下安装操作时,请务必再开一个SSH窗口连接所需要升级的服务器,避免SSH升级失败后,无法连接服务器。或者,在升级前最好安装Telnet服务作为备用方案,直到升级成功后再停止Telnet。

  1. 执行以下代码升级zlib。

    1. wget wget http://zlib.net/zlib-1.2.11.tar.gz
    2. tar zxvf zlib-1.2.11.tar.gz
    3. cd zlib-1.2.11
    4. ./configure
    5. make
    6. make install

    使用以下命令查看升级后的libz版本。

    1. ll /usr/local/lib

    结果如下所示。

    zlib

  2. 升级openssl-flips。在安装前查看是否为最新版本。如果是,请直接到第4步;如果不是,执行以下代码下载最新版本并升级。

    1. wget https://www.openssl.org/source/openssl-fips-2.0.14.tar.gz
    2. tar zxvf openssl-fips-2.0.14.tar.gz
    3. cd openssl-fips-2.0.14
    4. ./config
    5. make
    6. make install
  3. 执行以下代码升级openssl。

    1. wget https://www.openssl.org/source/openssl-1.0.2i.tar.gz
    2. tar zxvf openssl-1.0.2i.tar.gz
    3. cd openssl-1.0.2i
    4. ./config
    5. make
    6. make install
    7. ln -s /usr/local/lib64/libssl.so.1.0 /usr/lib64/libssl.so.1.0
    8. ln -s /usr/local/lib64/libcrypto.so.1.0 /usr/lib64/libcrypto.so.1.0
    9. ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

    查看升级后的OpenSSL版本,结果如下:

    openssl upgrade

  4. 执行以下代码安装PAM。

    1. yum install pam* -y
  5. 升级安装OpenSSH。

    1. wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.4p1.tar.gz
    2. tar zxvf openssh-7.4p1.tar.gz
    3. cd openssh-7.4p1
    4. ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-privsep-path=/var/lib/sshd --with-ssl-dir=/usr/local/lib64 --without-hardening
    5. make
    6. make install
    7. # 备份sshd文件,重命名为sshd_20170209_old
    8. mv /etc/init.d/sshd /etc/init.d/sshd_20170209_old
    9. # 复制配置文件、赋权、添加到开机启动项
    10. cd /root/openssh-7.4p1/contrib/redhat
    11. cp sshd.init /etc/init.d/sshd
    12. cp ssh_config /etc/ssh/ssh_config
    13. # 根据提示,输入y进行覆盖(若对原文件重命名,则无需覆盖)
    14. cp -p sshd_config /etc/ssh/sshd_config
    15. # 根据提示,输入y进行覆盖(若对原文件重命名,则无需覆盖)
    16. chmod u+x /etc/init.d/sshd
    17. chkconfig --add sshd
    18. chkconfig sshd on
    19. # 重启sshd服务
    20. service sshd restart

    查看升级版本,显示为最新版本。

    1. ssh -V
    2. OpenSSH_7.4p1, OpenSSL 1.0.2i 22 Sep 2016

情报来源

  • www.securityfocus.com/bid/94968/info
  • lwn.net/Articles/709677/
  • www.openssh.com/txt/release-7.4