Schneider Electric EcoStruxure Control Expert(前称Unity Pro)是法国施耐德电气(Schneider Electric)公司的一套用于Schneider Electric逻辑控制器产品的编程软件。CVE-2020-28213漏洞存在于其中的PLC仿真器,该仿真器是EcoStruxure Control Expert编程软件内置的一个有PLC仿真功能windows应用程序。
Part1 漏洞状态
漏洞细节 | 漏洞POC | 漏洞EXP | 在野利用 |
有 | 有 | 有 | 无 |
Part2 漏洞描述
EcoStruxure Control Expert上的 PLC 仿真器中存在没有完整性检查的代码下载漏洞,当通过 Modbus 发送特制请求时,该漏洞可能导致未经授权的命令执行。
漏洞名称 | 施耐德PLC仿真器中的无约束代码执行漏洞 |
CVE编号 | CVE-2020-28213 |
漏洞类型 | 远程代码执行 |
漏洞等级 | 8.8 高危 |
影响范围 | Schneider Electric EcoStruxure Control Expert version <= v14.1 |
公开状态 | 公开 |
时间线 | 2020-11-05 -分配CVE2020-11-08 -公开发布 |
复现环境:
Windows 10
Schneider Electric EcoStruxure Control Expert v14.1
Part3 漏洞复现
- 安装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白名单。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)