目标
-
Ivanti Connect Secure <= 22.7R2.5
-
Pulse Connect Secure (EOS) <= 9.1R18.9
-
Ivanti Policy Secure <= 22.7R1.3
-
ZTA Gateways<= 22.8R2
解释
Ivanti Connect Secure 是一款 SSL VPN 设备,用于管理企业网络边界的 VPN 访问和安全策略。该设备中发现一个基于堆栈的缓冲区溢出漏洞 (CVE-2025-22457),可能允许未经身份验证的远程攻击者实现远程代码执行 (RCE)。
该漏洞存在web于服务器进程内的 HTTP 请求处理逻辑中,具体存在于假定为函数中。 [来源 37、42] 此逻辑处理WebRequest::dispatchRequest用户可配置的配置值CUSTOM_IP_FIELD中指定的 HTTP 标头(默认值:)。X-Forwarded-For
存在漏洞的代码获取该标头值并strspn使用函数计算字符串的长度 ( ),该字符串在值的开头仅由数字 ( 0-9) 和句点 ( ) 组成。之后,我们使用一个函数在堆栈上分配一个该大小的缓冲区,并使用一个函数将部分标头值(字节)复制到该堆栈缓冲区中。.
ipLen
alloca
ipLen + 2
strlcpy
ipLen + 1
headerValue = httpHeader->Value;ipLen = strspn(headerValue, "0123456789.");v58 = alloca(ipLen + 2); strlcpy(&v178, *(_DWORD *)&v176[4], ipLen + 1);strlcpy(s, headerValue, ipLen + 1);
攻击者X-Forwarded-For可以发送一个 HTTP 请求,该请求的标头中包含一个非常长的值,该值仅由数字和句点组成。在这种情况下ipLen,该值会变得非常大,并且alloca由于函数试图在堆栈上分配过大的缓冲区,或者strlcpy函数将数据复制到分配的缓冲区的边界之外,因此会发生堆栈缓冲区溢出。这web可能会导致进程异常终止。
Ivanti 最初认为该漏洞不太可能导致实际的 RCE 或 DoS 攻击,因为它只能因数字和句点而溢出,但他们后来证实,该漏洞正被利用“复杂的手段”在现实世界中发起 RCE 攻击。 Mandiant 表示,自 2025 年 3 月中旬以来,该漏洞就被用于主动攻击,以安装后门。
要测试此漏洞,X-Forwarded-For 只需向易受攻击的版本发送带有长标头的请求,如下所示:
curl -k https://<TARGET_IP>/ --header "X-Forwarded-For: 1111111111111111111111111111111111111111111111111111111111111111.1111..."
服务器端生成进程崩溃日志web,修补后的系统返回 HTTP 400 响应。
原文始发于微信公众号(Ots安全):CVE-2025-22457:Ivanti Connect Secure X-Forwarded-For 堆栈缓冲区溢出漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论