施耐德PLC仿真器中的无约束代码执行漏洞研究

施耐德PLC仿真器中的无约束代码执行漏洞研究

时间:2022-06-30 作者:安帝科技


Schneider Electric EcoStruxure Control Expert(前称Unity Pro)是法国施耐德电气(Schneider Electric)公司的一套用于Schneider Electric逻辑控制器产品的编程软件。CVE-2020-28213漏洞存在于其中的PLC仿真器,该仿真器是EcoStruxure Control Expert编程软件内置的一个有PLC仿真功能windows应用程序。

Part1 漏洞状态

Part2 漏洞描述

EcoStruxure Control Expert上的 PLC 仿真器中存在没有完整性检查的代码下载漏洞,当通过 Modbus 发送特制请求时,该漏洞可能导致未经授权的命令执行。

复现环境:
Windows 10
Schneider Electric EcoStruxure Control Expert v14.1

Part3 漏洞复现

1.实验环境
– 安装Schneider Electric EcoStruxure Control Expert v14.1
– 启动Control Expert 14.1

– 新建项目(这里选择 BMX P32 2000 型号仿真器):

– 新建一个变量:

新建一个程序段:


– 写入一段ST赋值代码:

– 使用 xdbg附加 ControlExpert 并在编译函数处下断点:

– 连接PLC 然后将项目传输到PLC:

– Xdbg 暂停在断点处 单步执行一次:

– 搜索特征码:

– 双击过去反汇编查看:

可以看到对应研究者写的ST代码的汇编代码。
这里替换字节码为研究者的测试代码后,让程序运行。
– 提示上传信息完好:

– 启动PLC仿真器:

– 弹出计算器,PLC仿真器异常:

复现成功!

Part4 漏洞细节

通过逆向手段,定位到编译PLC程序到PLC仿真器可执行的字节码的函数,再执行之后,修改原本编译好的字节码,程序会把测试字节码传输到PLC仿真器中,当操作PLC仿真器执行任务的时候,就会执行到测试代码。

Part5 修复缓解建议

1. 软件升级至v15.1版本。
2. 监控网络流量,查看是否有恶意代码的流量特征。
3. 安装主机卫士,设置IP白名单。
———————————————-
获取更多情报
联系我们,获取更多漏洞情报详情及处置建议,让企业远离漏洞威胁。
电话:18511745601
邮箱:shiliangang@andisec.com