如何修补和保护OpenSSH客户端漏洞CVE-2015-0777和CVE-2015-0778 [14/Jan/2015]
OpenSSH项目发布了ssh客户端错误信息,该信息可能会将私钥泄漏到恶意服务器。
在OpenSSH中识别并修复的一种中间人攻击称为CVE-2015-0777和CVE-2015-0778。
如何在Linux或类似Unix的操作系统上修复OpenSSHs客户端漏洞?
在OpenSSH软件中发现并修复了一个严重的安全问题。
2015年1月14日在OpenSSH中发现了两个漏洞。
常见漏洞和披露项目确定了以下问题:
- 通过OpenSSH客户端漫游:CVE-2015-0777和CVE-2015-0778介于5.4和7.1之间的所有OpenSSH版本都容易受到攻击。
- CVE-2015-0777流氓SSH服务器可以利用信息泄漏(内存泄露)来诱骗客户端从客户端内存中泄漏敏感数据,包括私钥。
- CVE-2015-0778恶意SSH服务器也可以利用缓冲区溢出(导致文件描述符泄漏),但是由于代码中的另一个错误可能无法利用,并且仅在某些情况下(不是默认配置) ,当使用ProxyCommand,ForwardAgent或ForwardX11时。
在本教程中,您将学习如何在Linux或Unix之类的系统上修复OpenSSHs客户端和服务器的错误CVE-2015-0777和CVE-2015-0778,包括错误验证。
如何在Linux或类Unix系统上找到openssh版本?
在CentOS/RHEL/SL上查找openssh版本的语法如下:
# yum list installed openssh\*
在Debian/Ubuntu Linux上查找openssh版本的语法如下:
$ dpkg --list | grep openssh ### 或者# $ dpkg --list openssh\*
输出示例:
查找安装openssh服务器和客户端版本
受影响的Linux发行版列表
- CentOS Linux 7.x
- RHEL(RedHat企业Linux)7.x
- Debian Linux(挤压,微调,jessie,stretch和sid发行)Ubuntu Linux 15.10
- Ubuntu Linux 15.04
- Ubuntu Linux 14.04 LTS
- Ubuntu Linux 12.04 LTS
- SUSE Linux Enterprise Server 12(SLES 12)
- SUSE Linux Enterprise Server 12 Service Pack 1(SLES 12 SP1)
- SUSE Linux Enterprise Server 11 Service Pack 4(SLES 11 SP4)
- SUSE Linux Enterprise Server 11 Service Pack 3(SLES 11 SP3)
- openSUSE 13.2
- openSUSE Leap 42.1
修复#1:如何应用修补程序修复问题(CVE-2015-0777)
根据您的Linux或Unix变体执行命令:
修复FreeBSD上的openssh
## First be root and run command ## sudo -s echo 'UseRoaming no' >> /etc/ssh/ssh_config
修复Linux上的openssh
## run as root via sudo ## echo 'UseRoaming no' | sudo tee -a /etc/ssh/ssh_config
修复Apple Mac OS X上的openssh
## run as normal user ## echo "UseRoaming no" >> ~/.ssh/config
修复OpenBSD上的openssh
## run as root ## echo -e 'Host *\nUseRoaming no' >> /etc/ssh/ssh_config
上面所有的命令都将UseRoaming no
选项添加到/etc/ssh/ssh_config
或~/.ssh/config
ssh客户端配置文件中。
当然,您可以使用以下命令启动ssh客户端会话,以避免出现此错误:
$ ssh -oUseRoaming=no [email protected] $ ssh -oUseRoaming=no [email protected]
修复#2:升级您的openssh以修复CVE-2015-0778
要修复CVE-2015-0777,只需升级您的所有软件包,或至少升级openssh-server和openssh-client软件包:
Debian/Ubuntu/Mint Linux
执行以下apt-get命令以更新openssh:
$ sudo apt-get update $ sudo apt-get upgrade
或者
$ sudo apt-get update $ sudo apt-get install openssh-client openssh-server openssh-sftp-server
SL/RHEL/CentOS Linux
执行以下yum命令来修补和更新openssh:
$ sudo yum update
Fedora Linux
执行以下dnf命令来修补和更新openssh:
$ sudo dnf update
FreeBSD Unix用户
执行以下两个命令以应用二进制修补程序:
# freebsd-update fetch # freebsd-update install
SUSE Enterprise Linux
SUSE Linux Enterprise Server 12-SP1:
# zypper in -t patch SUSE-SLE-SERVER-12-SP1-2015-85=1
SUSE Linux Enterprise Server 12:
# zypper in -t patch SUSE-SLE-SERVER-12-2015-85=1
SUSE Linux Enterprise Desktop 12-SP1:
# zypper in -t patch SUSE-SLE-DESKTOP-12-SP1-2015-85=1
SUSE Linux Enterprise Desktop 12:
# zypper in -t patch SUSE-SLE-DESKTOP-12-2015-85=1
最后,要使系统最新,请运行:
# zypper patch
openSUSE Leap 42.1
# zypper in -t patch openSUSE-2015-38=1
最后,要使系统最新,请运行:
# zypper patch
如何重启由Linux或Unix驱动的服务器/笔记本电脑/计算机吗?
没有。
验证OpenSSH更新后系统是否仍然受到影响
要检查您的系统是否受到影响,您可以简单地运行:
$ ssh -v user@server $ ssh -v [email protected]
显示debug1: Roaming not allowed by server
表示您的系统受到了影响。
如果按照前面的说明应用修补程序,则不会看到此调试消息。