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
漏洞检测
使用以下命令查看当前版本。
ssh -V
使用安骑士检查。
漏洞修复建议(或缓解措施)
阿里云提供的ECS操作系统中默认的OpenSSH,不受该漏洞影响。如果您变更过OpenSSH版本,并确认当前OpenSSH版本在受影响范围内,阿里云建议您将SSH服务端升级到OpenSSH version 7.4及以上。升级方法见下文。
同时,建议您不要直接将SSH服务等高风险端口服务直接开放到互联网。推荐您使用VPN和堡垒机等更安全的方式进行远程运维,防止发生暴力破解和漏洞利用入侵事件。
升级OpenSSH
推荐您使用yum update升级,如果更新源无最新安装包,您可以按照以下升级方法升级。下文以CentOS 6.8 64bit为例进行说明。
注意:
在升级前,强烈建议您做好快照和文件备份,防止出现升级失败无法远程管理等意外事件。
在执行以下安装操作时,请务必再开一个SSH窗口连接所需要升级的服务器,避免SSH升级失败后,无法连接服务器。或者,在升级前最好安装Telnet服务作为备用方案,直到升级成功后再停止Telnet。
执行以下代码升级zlib。
wget wget http://zlib.net/zlib-1.2.11.tar.gz
tar zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make
make install
使用以下命令查看升级后的libz版本。
ll /usr/local/lib
结果如下所示。
升级openssl-flips。在安装前查看是否为最新版本。如果是,请直接到第4步;如果不是,执行以下代码下载最新版本并升级。
wget https://www.openssl.org/source/openssl-fips-2.0.14.tar.gz
tar zxvf openssl-fips-2.0.14.tar.gz
cd openssl-fips-2.0.14
./config
make
make install
执行以下代码升级openssl。
wget https://www.openssl.org/source/openssl-1.0.2i.tar.gz
tar zxvf openssl-1.0.2i.tar.gz
cd openssl-1.0.2i
./config
make
make install
ln -s /usr/local/lib64/libssl.so.1.0 /usr/lib64/libssl.so.1.0
ln -s /usr/local/lib64/libcrypto.so.1.0 /usr/lib64/libcrypto.so.1.0
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
查看升级后的OpenSSL版本,结果如下:
执行以下代码安装PAM。
yum install pam* -y
升级安装OpenSSH。
wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.4p1.tar.gz
tar zxvf openssh-7.4p1.tar.gz
cd openssh-7.4p1
./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
make
make install
# 备份sshd文件,重命名为sshd_20170209_old
mv /etc/init.d/sshd /etc/init.d/sshd_20170209_old
# 复制配置文件、赋权、添加到开机启动项
cd /root/openssh-7.4p1/contrib/redhat
cp sshd.init /etc/init.d/sshd
cp ssh_config /etc/ssh/ssh_config
# 根据提示,输入y进行覆盖(若对原文件重命名,则无需覆盖)
cp -p sshd_config /etc/ssh/sshd_config
# 根据提示,输入y进行覆盖(若对原文件重命名,则无需覆盖)
chmod u+x /etc/init.d/sshd
chkconfig --add sshd
chkconfig sshd on
# 重启sshd服务
service sshd restart
查看升级版本,显示为最新版本。
ssh -V
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