三菱HMI工具E-Designer远程执行代码 技术分析与防护方案
2017-09-01
综述
美国工业控制系统网络应急响应小组(ICS-CERT)携手趋势科技(Trend Micro公司)的零日计划(简称ZDI)披露了多项对三菱电机E-Designer引擎(E-Designer 是用于给 E1000 人机界面(HMI)编程的工具)产生影响的多项高危安全漏洞。
软件简介
E-Designer是Beijer公司为三菱开发,用来编写E1000系列人机界面的软件。E-Designer组态软件的工程文件以后缀名为.mpa的文本文件存储,该文本文件存储了工程的详细参数信息,如PLC型号、驱动信息等(图2.1)。
图2.1 E-Designer组态界面以及工程文件
受影响版本
l 三菱电气E-Designer 7.52的所有版本。
漏洞分析
E-Designer组态软件的工程文件存储了工程项目的配置以及详细信息。工程文件的起始处为[Project],包含了工程文件创建的时间、最近修改的时间、PLC设备信息、通信协议信息等。[Project]后为一些[FontMapTable]、[Drivers]、[Setup]等子项参数。每一个子项参数又包含了更多的子项参数。例如[Setup]子项包含了[SetupIndex]、[SetupSystemSignals]、[SetupClock]等,如图4.1所示:
图4.1 E-Designer工程文件
Ed.exe组态程序打开工程时,需要加载.mpa工程文件。该组态程序在加载特定的异常.mpa工程文件时,存在堆溢出漏洞。
.mpa工程文件中[Setup]选项的[SetupAlarm]子选项中有一参数项为Font,在ed.exe中使用C函数库的sscanf()函数进行加载,其参数格式如下:
"%[A-Za-z]%ux%u%u%u%u%u"
%u表示无符号整形数,%[A-Za-z]为长度为100个字节的字符串。
如果.mpa工程文件存在[SetupAlarm]子选项,并且Font值的字符串超过100字节(图4.2所示),会触发堆溢出漏洞。
图4.2 异常工程文件
使用调试软件进行分析,当ed.exe程序加载异常工程组态文件时,会将.mpa文件中Font的值载入,最终造成堆溢出,如图4.3所示
图4.3 加载异常工程文件造成堆溢出
漏洞利用
A. 利用条件
被攻击者安装有E-Designer 7.52版本软件。
攻击者需要将异常的组态文件植入到被攻击者的计算机中。
B. 植入方法
攻击者可以通过向目标主机发送植入异常组态文件的数据包实现。数据包如图5.1所示
C. 漏洞利用影响
l 成功利用该漏洞,可实现提权执行代码。
l 未成功利用该漏洞,可实现该软件的拒绝服务。
检测与防护方案
A. 检测与防护
l 通过网络监控软件,检测网络中是否存在包含异常组态文件的攻击数据包--根据异常组态文件特征,检测网络中是否有向主机发送.mpa文件。并且检测文件内容中的[SetupAlarm]子项中的Font参数值是否超过100字节(图5.1)。
l 使用漏洞扫描工具检测计算机中E-Designer软件
1) 检测软件版本是否为7.52(图6.1)
图6.1 E-Designer组态软件版本检查
2) 根据异常组态文件特征,检测计算机中E-Designer的.mpa工程组态文件是否存在异常项。
B. 规避方案
l 打开组态工程时需检查该组态工程文件是否存在异常。
l 升级软件到更高版本以规避该漏洞。
C. 产品方案
l 使用js1996官网登录工控漏洞扫描系统(ICSScan)进行远程安全评估。
l 使用js1996官网登录防护类设备(IPS/NF)进行安全防护。
l 使用js1996官网登录安全审计系统进行实时安全监控。
参考链接
https://ics-cert.us-cert.gov/advisories/ICSA-17-213-01
声明
本安全公告仅用来描述可能存在的安全问题,js1996官网登录不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,js1996官网登录以及安全公告作者不为此承担任何责任。js1996官网登录拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经js1996官网登录允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。