libssh CVE-2018-10933 身份验证绕过漏洞分析报告

0x00 事件背景

2018-10-16 libssh发布更新公告旨在解决CVE-2018-10933的问题

libssh版本0.6及更高版本在服务端代码中具有身份验证绕过漏洞。

通过向服务端提供

SSH2_MSG_USERAUTH_SUCCESS消息来代替服务端期望启动身份验证的

SSH2_MSG_USERAUTH_REQUEST消息,攻击者可以在没有任何凭据的情况下成功进行身份验证。

进而可以进行一些恶意操作。

0x01 详情分析

在libssh的example中已经存在一些server端的例子,测试环境则采用这些例子进行说明这个漏洞能用,但目前就分析而言发现,无法很好的泛用,所以建议及时进行更新以免遭受影响

在libssh中以session的方式对会话进行处理,无论是server的建立还是client的连接。

均以

进行session建立

因为这个漏洞是直接获得AUTH所以服务端的配置和客户端的连接认证方式等完全不用在意

简单的client连接示例部分代码,以体现逻辑为主。

首先是设置一些参数,然后利用session进行连接

然后进行knownhost认证处理,这步就是平时在进行ssh连接的时候进行提醒的是否要保存信息

authenticate_console(session)

的流程为先发送一个ssh_userauth_none再根据选择的AUTH方式,尝试GSSAPI、PublicKey、Password的方式这里采用的patch掉client中发送密码认证的时候的数据包

将第二行的SSH2_MSG_USERAUTH_REQUEST->SSH2_MSG_USERAUTH_SUCCESS

并且需要在ssh_userauth_get_response之前直接返回,因为这一步会再次向服务端进行通

信,但此时受影响版本的server已经Authentication successful

这时候的session就已经可以获得相应的权限了。通过官方的Tutorial的执行命令的例子调用ssh_channel_request_exec进行命令执行

0x02 修复分析

官方通过增加字段,并注册额外的session状态校验函数进行检验,在处理流程中标注session处于的状态,避免client随意发送SSH2_MSG_USERAUTH_SUCCESS进行bypass

该校验函数判断session的状态是否处于SSH_AUTH_STATE_PUBKEY_AUTH_SENT

,SSH_AUTH_STATE_PASSWORD_AUTH_SENT,SSH_AUTH_STATE_NONE_SENT

这些个状态来确认是否要接受数据包里带有SSH2_MSG_USERAUTH_SUCCESS

的情况

同时在每次的response校验中增加该字段,如果该字段存在就直接返回error

0x03 验证截图

执行命令

获得shell

0x04 影响范围

libssh0.6以上的版本

目前各大发行版中部分已经对相应package进行更新,但还未完全进行版本迭代,具体情况可以关注以下链接

Debain

https://security-tracker.debian.org/tracker/CVE-2018-10933

ubuntu

https://people.canonical.com/~ubuntu-security/cve/2018/CVE-2018-10933.html

opensuse

https://www.suse.com/security/cve/CVE-2018-10933/

redhat

https://access.redhat.com/security/cve/cve-2018-10933

通过360CERT Quake资产检索平台发现共计3,170台设备开放libssh服务在外网,但并非所有的libssh服务均处于受影响的版本范围。该漏洞影响范围有限。

0x05 修复建议

及时对服务端libssh版本进行更新

可以在如下网址下载最新的0.7.6以及0.8.4版本

https://red.libssh.org/projects/libssh/files

或者在如下地址寻找对应版本的patch文件

https://www.libssh.org/security/

0x06 时间线

2018-10-16libssh 官方发布重要更新

2018-10-16360CERT发布预警报告

2018-10-17360CERT发布分析报告

0x07 参考链接

libssh官方更新

[https://www.libssh.org/2018/10/16/libssh-0-8-4-and-0-7-6-security-and-bugfix-release/]

libssh修复patch

[https://www.libssh.org/security/patches/stable-0.6_CVE-2018-10933.jmcd.patch01.txt]

libssh CVE-2018-10933说明

[https://www.libssh.org/security/advisories/CVE-2018-10933.txt]

360CERT预警报告

[https://cert.360.cn/warning/detail?id=2c98df690f55f968ae4a9c582bc89e79]

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181017B2053O00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励