施耐德 PLC 仿真器远程代码执行漏洞CVE-2020-7559研究

施耐德 PLC 仿真器远程代码执行漏洞CVE-2020-7559研究

时间:2022-05-05 作者:安帝科技 VulEye-小菜逼

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

Part1 漏洞状态

Part2 漏洞描述

该漏洞源于当通过Modbus协议收到一个手动构造的恶意请求时,会导致EcoStruxure Control Expert软件中的PLC仿真器程序崩溃或远程代码执行。

Part3 影响范围

Schneider Electric EcoStruxure Control Expert version <= v14.1

Part4 复现环境

Windows 10
Schneider Electric EcoStruxure Control Expert v14.1

Part5 漏洞复现

– 安装Schneider Electric EcoStruxure Control Expert v14.1
– 软件路径
C:\Program Files (x86)\Schneider Electric\ControlExpert 14.1\PLC_Simulator

– 启动sim仿真器程序

– 查看启动端口502开放,程序启动成功!

– 运行测试脚本

强制关闭远程连接,进程退出,复现成功!

Part6 漏洞细节

· Xdbg加载sim.exe 在tcp/ip模块中下断点。

· 然后运行test.py测试脚本。
程序断下,单步运行,查看接收buffer位置数据。

是我们发送的测试数据。
在接收数据位置下硬件访问断点。

· 运行程序。

程序断到这里,返回一层。

可以看到是 exec.dll 模块中调用memcpy 时产生的栈溢出,
再返回一层。

发现接收网络发包的位置是ebp-0x8004,
可以推算网络发包数据超过0x8000就可以造成栈溢出,
然后构造恶意数据包,利用栈溢出造成远程代码执行。
如果要达到远程代码执行的目的,需要绕过栈Cookie校验,SafeSEH检测和DEP保护三道防护才可以。

Part7 修复和缓解建议

· 升级软件到最新版本。
· 如果不能升级到最新版,可以使用流量检测设备监控Modbus协议MBAP中data_length字段,数值超过 0x8000 大小(10进制32768)即可报警。
· 安装主机卫生设置通讯白名单。

———————————————-
获取更多情报
联系我们,获取更多漏洞情报详情及处置建议,让企业远离漏洞威胁。
电话:18511745601
邮箱:shiliangang@andisec.com