CVE-2024-40766
2024 年 8 月 23 日,Sonicwall 发布了 CVE-2024-40766 漏洞预警信息,该漏洞被描述为 “访问控制不当”。可能造成未授权访问或导致系统崩溃,本文对此漏洞进行简要分析。
该漏洞可能已被在野利用,建议用户立即安装补丁,检查设备 SSLVPN 用户情况,并应用 SonicWall 提供的缓解措施。
基本信息
根据公开信息,该漏洞似乎仅影响 SonicWall 防火墙的硬件设备,影响 GEN5、GEN6 以及 GEN7 小于等于 7.0.1-5035 版本。
公告描述这可能是一个验证绕过漏洞,但我们找到 GEN5 系列的更新公告,其中提到新版本仅进行了一项修复:
1 | SonicOS unauthenticated stack-based buffer overflow vulnerability (SNWLD-2024-0015). GEN5-73 |
所以这个漏洞可能是一个未授权栈溢出,通过溢出覆盖了某些关键结构导致身份验证绕过。
漏洞分析
GEN5 系列更新的项目较少,我们选择它为目标进行补丁对比,GEN5 只提供 sig 格式的升级包,但通过之前的文章已经知道 sig 文件的解密方法,所以直接选择最近两个版本解密来分析。
解密 5.9.2.14-12o 和 5.9.2.14-13o 两个版本的固件,使用 binwalk 分析解密后固件格式
1 | DECIMAL HEXADECIMAL DESCRIPTION |
直接解压,会得到一个叫做 195 的 ELF 文件,这个实际上就是系统主要程序,内部实现了很多功能,包括管理端口 WEB 相关功能。
利用 Bindiff 对比新旧两个程序,得到结果显示差异很小,仅有 20 余个函数发生变化。
逐个分析发生变化的函数,定位到疑似漏洞点,代码列举如下
1 | // 旧版本 |
1 | // 新版本 |
对比可以发现新版本去掉了调用 woHandleSshConnect 的代码,并且在调用 spnHandleSshConnect 之前新增了调用函数 sub_829B0BDC 和 sub_829B1D20
实际上这个函数是处理发往管理端口 HTTP 请求的入口点,v36 + 32 表示当前的请求方法,6 表示 CONNECT 方法,v36 + 36 表示请求的 URL,v36 + 52 表示请求头。
也就是说当发送类似以下请求时,会触发 woHandleSshConnect 函数
1 | CONNECT /test?(wxaappliance)->aaa HTTP/1.1 |
1 | __int64 __fastcall woHandleSshConnect(__int64 unknow, __int64 maybe_query_string, __int64 maybe_header) |
woHandleSshConnect 函数又会调用 sub_82860ACC
1 | __int64 __fastcall sub_82860ACC(__int64 buf, __int64 a2, _DWORD *a3) |
最终会调用 sub_8284D554 函数
1 | __int64 __fastcall sub_8284D554(__int64 buf, __int64 a2) |
当 buf 即 Query String 不以 [
字符开头时,来到 [1]
处,接着会在 [2]
处调用 sub_825DC8E8 函数。
1 | __int64 __fastcall sub_825DC4B8(__int64 buf, int a2) |
很明显在 [3]
处,代码会调用 strcpy 尝试将用户可控的数据拷贝到 v32,而 v32 是一个位于 stack 的固定长度的缓冲区,在拷贝时缺少长度验证,这将导致栈溢出。
一个可能的 POC 如下
1 | CONNECT /test?(wxaappliance)->aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa HTTP/1.1 |
该二进制程序也没有开启 canary 等保护措施,所以理论上可以利用此漏洞实现命令执行,v32 变量下方可能存在某些关键数据结构,也许通过溢出覆盖这些结构就可以实现未授权访问等。
由于我没有合适的设备进行测试,该漏洞能否利用?如何利用?就留给感兴趣的读者研究了。
参考链接
本文简要介绍了 CVE-2024-40766 漏洞,通过补丁对比找到了漏洞可能的位置并分析了漏洞成因。该漏洞评分为 9.3 属严重漏洞,建议使用 SonicWall 相关设备的用户及时更新最新补丁。
https://psirt.global.sonicwall.com/vuln-detail/SNWLID-2024-0015
- Title: CVE-2024-40766
- Author: Catalpa
- Created at : 2024-09-05 00:00:00
- Updated at : 2024-10-17 08:47:08
- Link: https://wzt.ac.cn/2024/09/05/CVE-2024-40766/
- License: This work is licensed under CC BY-NC-SA 4.0.