摘要
随着“中国制造2025”以及工业4.0的快速发展,工业化与信息化的融合趋势越来越明显,工业控制系统也在利用最新的计算机网络技术来提高系统间的集成、互联以及信息化管理水平。
未来为了提高生产效率和效益,工控网络会越来越开放,而开放带来的安全问题将成为制约两化融合以及工业4.0发展的重要因素。传统的物理隔离解决方法已经不能满足现阶段两化融合发展对安全的需求,广大的工业控制系统用户迫切需要解决如下问题:防止对工控系统的非法指令操作;防止非法身份的用户对工控系统的访问;防止非法时间段对工控系统的操作;防止非法协议进入工控系统等。
一、背景
2018年3月,思科Talos安全研究团队发文指出罗克韦尔自动化公司的 Allen-Bradley MicroLogix 1400系列可编程逻辑控制器( PLC )中存在多项严重安全漏洞,这些漏洞可用来发起拒绝服务攻击、篡改设备的配置和梯形逻辑、写入或删除内存模块上的数据等。
二、概述
AB-MicroLogix 1400控制器是MicroLogix系列新的产品线,带有内置的模拟量输入、以太网通讯、更快的高速计数器、可调脉冲输出,专为扩展应用范围而设计,目前被广泛应用与关键基础设施、食品生产加工行业、农业及水处理等行业的工业控制现场,用于控制电机、阀门等工业设备。
图1 AB 1400系列PLC
三、风险
以下是此次爆出的Allen-Bradley MicroLogix 1400 B 系列漏洞详情:
1.以太网卡格式错误的数据包拒绝服务漏洞(TALOS-2017-0440 / CVE-2017-12088)
该漏洞允许未经身份验证的攻击者发送特制数据包,从而使受影响的设备进入电源循环并进入故障状态,这种情况会导致先前存储在设备上的梯形逻辑被删除。需要注意的是,这个漏洞不是通过以太网/ IP 协议来利用的,因此使用 RSLogix 来禁用以太网/ IP 不会提供有效的缓解。
2.梯形图逻辑程序下载设备故障拒绝服务漏洞(TALOS-2017-0441 / CVE-2017-12089)
该漏洞允许未经身份验证的攻击者发送导致拒绝服务条件的特制数据包。该漏洞位于受影响设备的程序下载功能中,允许攻击者通过发送“ 执行命令列表 ”(CMD 0x0F,FNC 0x88)数据包而不使用“下载完成”( CMD 0x0F, FNC 0x52 )来强制设备进入故障状态( CMD 0x0F,FNC 0x52)。当出现这种情况时,设备会将此作为故障状态处理,进入非用户故障模式,从而导致设备停止正常操作并删除任何存储的逻辑。
3.SNMP 集处理不正确的行为顺序拒绝服务漏洞(TALOS-2017-0442 / CVE-2017-12090)
该漏洞与固件更新期间设备处理“ snmp-set ”命令的方式有关,可能会允许经过身份验证的攻击者在受影响的设备上发生拒绝服务条件。通过发送特制的’snmp-set’命令而不是发送通常与在固件更新过程中最终命令关联的后续’snmp-set’命令,攻击者可以迫使该设备在重新启动过程中无法使用。
4.未经身份验证的数据/程序/功能文件访问控制漏洞不正确(TALOS-2017-0443 / CVE-2017-14462 – CVE-2017-14473)
该漏洞与受影响设备上的文件访问控制不当有关。该漏洞允许未经身份验证的攻击者对存储在设备上的文件执行读取和写入操作,这可以用于从受影响的设备中检索敏感信息(包括设备主密码)、修改设备设置或梯形图逻辑、或导致设备进入导致拒绝服务条件的故障状态。
5.内存模块存储程序文件写入漏洞(TALOS-2017-0444 / CVE-2017-12092)
该漏洞允许未经身份验证的远程攻击者将在线程序写入受影响设备上已安装的内存模块。攻击者可以使用它来存储程序修改,直到设备重新启动后才能生效。随后,攻击者可以将新存储的程序与“加载内存模块的内存错误”设置结合使用来修改系统设置,从而导致启用的服务发生更改。
6.PLC 会话通信资源池拒绝服务漏洞不足(TALOS-2017-0445 / CVE-2017-12093)
该漏洞存在于受影响设备的会话连接功能中,默认情况下,这些设备最多支持 10 个同时连接。一旦达到最大值,设备将终止最早的连接,以在连接池中为新连接腾出空间。未经身份验证的攻击者可以在一段时间内发送多个“ Register Session ”数据包,以强制终止合法连接,并阻止对受影响设备建立额外的合法连接。
四、措施
目前,对类似曝出有高危漏洞的工控设备,我们一般采取以下措施:
1.将受影响设备升级到最新版本的固件,以便不再受到这些漏洞的影响;
2.在工控设备前部署安全防护设施,以防止工控设备被攻击。
由于工业现场的特殊性,一般工控设备部署完成后,基本是处于长期稳定运行状态,一年仅会有半个月到一个月左右的检修停机时间,即使利用检修时间去对工控设备进行固件升级,也可能存在内部程序被刷新或者被清空的风险,一旦生产控制程序被清空,那么其造成的损失和恢复成本都是极大的,所以在现场进行固件升级的可行性比较小。
那么第二种方案,在工控设备前部署安全防护设施是目前比较可行的防护方案。通过在PLC前部署工业防火墙,来对PLC设备进行安全防护的功能,如下图所示:
图2 工业防火墙部署示意图
该方案也满足《工业控制系统信息安全防护指南》和《GB/T 22239-2008 信息系统安全等级保护基本要求》。
那么也许我们会考虑为什么不能部署传统的防火墙,传统防火墙和工业防火墙的区别在哪里呢?传统防火墙主要有以下局限性:
1.工业网络采用的专用工业协议,工业协议的类别很多,有基于工业以太网(基于二层和三层)的协议,有基于串行链路(RS232、RS485)的协议,传统防火墙无法完全支持工业协议的白名单过滤。
2.传统防火墙无法对工业协议进行深度解析控制,针对违法指令无能为力。
3.一般部署在工业现场的防火墙以导轨式为主,同时对防火墙的环境适应性要求很高,产品往往要求无风扇、宽温支持等,传统防火墙无法适应工业严苛复杂的生产环境。
4.传统防火墙在出现自身故障时多采取阻断网络的方式,而工业现场则要求设备出现故障不能影响工业网络的正常通讯。
工业防火墙利用工业协议深度包解析技术,实现强大的工业协议白名单功能,通过智能学习引擎,帮助客户识别、定义和控制流通在工业现场中的合法指令,而对于未知的,无论是否对工业现场造成影响,都不允许其“穿墙而过”,防止未知威胁攻击,与工业现场要求的确定性和可控性完全吻合。
五、小结
虽然工业防火墙能够有效检测工控网络中的通信异常和协议异常,并加以阻止。可对控制设备进行协议级的只读防护,实现各生产线之间、各个工艺段之间的网络隔离、访问控制以及专用工控协议的控制,避免PLC、DCS等被攻击造成重大生产事故、人员伤亡和社会影响。但是我们对整体系统的安全防护还是要通过体系化的思路去考虑,同时辅以安全管理思想才能更好的保护工业现场的控制设备不被攻击。
*本文作者liujianshuai,转载请注明来自FreeBuf.COM