受影响的版本
Xlight 32 和 64 位版本 <= 3.9.4.2
影响
未经身份验证的攻击者可以访问 Xlight SFTP,从而执行代码或导致拒绝服务。
根本原因
在 SFTP 协议中通过网络发送的字符串以四字节长度作为前缀。Xlight 用于从网络数据包读取这些字符串的函数在验证长度和分配所需内存量时会发生整数溢出。通过为字符串制作四字节长度,我们可以触发从攻击者控制的缓冲区越界到堆的大型 memmove(~4GB)。
该易受攻击的函数用于在整个 SSH 握手过程中接收字符串,包括从客户端接收支持的算法、密码套件以及用户名和密码时的预身份验证。我们可以针对这些字符串中的任何一个,以精心设计的长度来触发漏洞。
可利用性
这很容易触发,但利用的难易程度取决于 Xlight 二进制的位数。
在 32 位上,副本将从堆的末尾运行,破坏进程中的所有内容,然后导致崩溃。在野外复制使进程崩溃之前,很可能破坏堆上的相邻结构并利用此服务器的多线程特性来访问损坏的数据。
在 64 位上,我们无法获得 OOB 写入,因为内存分配调用的大小参数是 size_t(即在为 64 位编译时为 64 位宽),这意味着我们无法通过添加两个 32 位整数来溢出此值,而是只能分配一个较大的 ~4GB 缓冲区。此错误会导致 OOB 读取,从而导致进程崩溃。
项目地址:
https://github.com/kn32/cve-2024-46483/tree/master
原文始发于微信公众号(Ots安全):CVE-2024-46483 - Xlight SFTP 服务器中的预身份验证堆溢出
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论