漏洞编号
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服务等高风险端口服务直接开放到互联网。推荐您使用×××和堡垒机等更安全的方式进行远程运维,防止发生暴力破解和漏洞利用入侵事件。
升级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
结果如下所示。
zlib
升级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.1.0e.tar.gz
tar zxvf openssl-1.1.0e.tar.gz
cd openssl-1.1.0e
./config
make
make install
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
查看升级后的OpenSSL版本,结果如下:
openssl
执行以下代码安装PAM。
yum install pam* -y
升级安装OpenSSH。
wget https://mirrors.evowise.com/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