CVE-2019-17498: libssh2整数溢出漏洞 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

CVE-2019-17498: libssh2整数溢出漏洞

ang010ela 新闻 2019-10-21 10:06:47
233306
收藏

导语:文中研究人员分析了libssh2整数溢出漏洞。

研究人员发现libssh2中存在漏洞,但是该漏洞并不是位于openssh中,所以不影响ssh的使用。Libssh2是一个客户端C语言库,可以让应用连接到SSH服务器。但漏洞也并不位于libssh中,libssh值是一个提供与libssh2类似功能的不相关的C函数库。

该漏洞位于libssh2 v1.9.0及之前版本中,截至目前,该bug已经在master分支修复,但含有补丁的官方发布版本还没有正式发布。

该漏洞是一个越界读漏洞,可能会导致DoS或远程信息泄露。当libssh2被用于连接恶意SSH服务器时该漏洞就会被出发。当SSH服务器发送disconnect消息时,就会发生溢出。也就是说该漏洞是在认证完成之前的连接阶段的早期被触发的。

触发漏洞

该漏洞是源位置是packet.c:480

if(message_len < datalen-13) {

datalen的值是不可信的,因为它是由远程SSH服务器控制的。如果datalen == 11,那么减就会溢出,message_len边界检查也就是无效的。message_len是远程SSH服务器控制的32位的无符号整数,所以会在第485行引发越界读:

language_len =
    _libssh2_ntohu32(data + 9 + message_len);

越界读只会引发segmentation fault(分段错误),但有可能在调用499行的LIBSSH2_DISCONNECT时引发其他伤害:

if(session->ssh_msg_disconnect) {
    LIBSSH2_DISCONNECT(session, reason, message,
                       message_len, language, language_len);}

这取决于libssh2库如何使用,因为session->ssh_msg_disconnect是默认为空的回调函数,但库的用户可以通过调用libssh2_session_callback_set对其进行设置。

研究人员编写了一个POC漏洞利用,其中恶意SSH服务器会返回一个datalen == 11,message_len == 0x41414141的disconnect消息,导致libssh2出现分段错误。

PoC见:https://github.com/kevinbackhouse/SecurityExploits/tree/8cbdbbe6363510f7d9ceec685373da12e6fc752d/libssh2/out_of_bounds_read_disconnect_CVE-2019-17498

  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2024 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务