16日libssh官方发布安全公告,由NCC安全组的Peter Winter-Smith披露了一个SSH2登陆身份验证绕过漏洞(CVE-2018-10933)。攻击者利用漏洞可以在没有任何凭据的情况下成功进行身份验证,登陆SSH。

漏洞描述

libssh版本0.6及更高版本在服务端代码中存在身份验证绕过漏洞。通过向服务端发送SSH2_MSG_USERAUTH_SUCCESS消息来替换服务端期望启动身份验证的SSH2_MSG_USERAUTH_REQUEST消息,攻击者可以在没有任何认证凭据的情况,扩过SSH身份验证,完成SSH登陆,入侵服务器。截止目前还没有相关漏洞PVC披露。

libssh项目在客户端和服务器实现通讯过程,当新连接完成握手过程时,有不同的回调来处理数据包类型。SSH协议定义了在处理身份验证请求时要发送的多个响应。其中一条消息是USERAUTH_SUCCESS,服务器发送该消息以通知客户端认证成功,并且所请求的服务已准备就绪。相关代码:

问题就出在这里, Libssh没有一种机制来确定是否允许传入数据包来确定当前的链接状态。攻击者可以启动连接,服务器将发送身份验证查询,攻击者将使用USERAUTH_SUCCESS响应进行回复。问题是此响应仅由能有服务器而不是客户端发送,并且只能在身份验证完成之后才发送。由于共享代码,服务器错误地跳转到该消息类型的处理程序,并标记完成的身份验证阶段。此时,守护进程设置SSH连接状态就像客户端已经过身份验证一样,攻击者成功获得了权限。

这个漏洞是由NCC集团的Peter Winter-Smith发现的,他私下向libssh透露了这个问题。今天提供了更新的libssh版本,并且同时发布了问题的详细信息。如果您安装了libssh,特别是如果你正在使用服务器组件,请安装此重要更新。这是一个很低级的安全漏洞,但幸好libssh并没有被广泛用于SSH服务器上,更常被用作SSH客户端。

影响范围

libssh0.6及以上的版本,使用该库的各种软件。Redhat官方安全中心已经将该漏洞评定为危险漏洞(9.1)

Red Hat Enterprise Linux 7 和对应的Centos 7会受影响,Centos 6暂不受影响。

目前平台广泛使用的OpenSSH,不依赖libssh库,所以不受该漏洞影响。

风险评级

CVE-2018-10933:严重

安全建议

目前该漏洞补丁已经由redhat和libssh组的Anderson Toshiyuki提供,各大发行版OS补丁估计随后就会发出。

源码安装:

下载官方patch文件,重新安装libssh修复漏洞。

防火墙ACL限制

禁止SSH对外,只针对特定允许的ip开放访问权限,可通过iptables配置,

iptables -I INPUT -s (具体IP) -p tcp -m state --state NEW -dport 22 -j ACCEPT

iptables -A INPUT -p tcp -dport 22 -j REJECT --reject-with icmp-host-prohibited

查看原文 >>
相关文章