火电厂设备层通信网络安全问题

火电厂设备层通信网络安全问题

[摘要]火电厂传统分散控制系统(DCS)设备层采用硬接线方式,不存在通信安全问题,随着公开、透明的工控协议通信网络代替传统DCS硬接线进入设备层,工控协议所具有的协议漏洞及容易受到网络攻击的特性开始显现。本文分析了火电厂控制系统设备层通信网络协议存在的漏洞和攻击问题,重点分析了攻击防护,并给出了攻击方式的示例。最后提出,在漏洞防护上,应采用管理措施和技术措施相结合;在攻击防护上,建议在实现PROFIBUS、MODBUS等工控协议时,增加时间戳和会话机制,或在建立PROFIBUS、MODBUS等工控协议通信前,实现基于身份的验证机制。

[关键词]DCS;通信安全;设备层;协议漏洞;网络攻击;火电厂;防护措施

分散控制系统(DCS)、可编程控制器(PLC)等工业控制系统与现场总线通信网络的有机结合,产生了兼容型的现场总线控制系统(FCS)[1]——设备层采用现场总线通信网络的DCS。兼容型的FCS是指在DCS设备层中使用现场总线智能仪表和执行机构,将智能设备的变量输入或输出与DCS控制层相连接。兼容型FCS的控制层和网络层与传统DCS一致,这种结构的DCS能够接入智能型总线设备,能够通过DCS对智能设备进行直接的参数访问、诊断和报警访问。当前火电厂DCS网络安全防护重点放在网络层计算机信息安全的管理[2],并且要求不断加强控制层安全防护功能。但是现场总线智能设备层缺乏相对应的安全检测及防护手段。

1火电厂控制系统存在安全问题

目前火电厂控制系统中,以公开、透明的工控协议通信网络代替传统硬接线信号作为火电厂设备层通信网络,其优势是突破了传统硬接线的信息数量限制[3],所采用的数字化通信网络,给火电厂带来众多生产和管理信息;其弱点在于像所有工控协议一样,具有一定的程序设计漏洞并且容易受到网络攻击。1.1工控系统协议漏洞漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷[4],可以使攻击者能够在未授权的情况下访问或破坏系统。来自几大供应商的PLC被曝存在漏洞,攻击者可利用漏洞执行任意代码。存在漏洞的产品来自多个企业,包括SchneiderElectric、GE和Alley-Bradley等。其中,影响Schneider的漏洞为CVE-2017-6034/6032[5],攻击者可以基于MODBUS协议,对工业控制设备进行基于指令的操作,包括打开或关闭阀门,读写线圈数据,启动或停止PLC,甚至可以更改控制逻辑,下载梯形图等危险操作。现场总线协议跟其他工控协议一样存在漏洞,如2019年底,西门子向全球公告称:SPPA-T3000应用服务器存在19个漏洞,SPAA-T3000MS3000迁移服务器存在35个安全漏洞[6]。在这54个漏洞中,有些被评为严重漏洞,可被利用来进行拒绝服务(DoS)攻击或在服务器上执行任意代码。攻击者通过访问PROFIBUS现场总线协议中的ApplicationHighway或AutomationHighway实行远程攻击。另外,现场总线技术集成了工业以太网协议的新趋势[7],也带来了相应的漏洞安全隐患。现场总线标准的应用非常广泛,大部分现场总线标准是基于已有的串行通信协议标准设计的,与以太网技术有着很大的区别。随着系统复杂程度的增加,基于串行通信协议标准设计的现场总线难以满足通用性和高性能的要求,使得设备生产商转向采用基于以太网的通信技术。在上述需求的指引下,很多现场总线标准都已经集成到工业以太网协议中,在实现实时通信和工业互联的同时,较好地兼容了原有现场总线的软件和硬件。但是,由此也同时引入了工业以太网协议所天然具备的漏洞问题。1.2工控协议攻击控制层与现场设备层智能设备之间的工控协议标准是公开、透明的,这些数据很容易被解释为有意义的信息,即各个节点之间的通信就没有任何保密性可言。工控协议数据交换中的这种不安全因素来自工控协议本身。工控协议采用类似局域网的广播报文方式进行通信[8],因此上述的这种窃听就可以获取设备层通信的所有信息。对于火电厂而言,机、炉、电、水、煤、灰渣等各系统传递的参数是火电厂安全生产的关键,如果这些信息被窃取甚至被篡改,后果将难以估计。例如,如果攻击者充分了解目标使用的工控协议,则可以在控制系统中执行中间人攻击[9]。攻击者可以修改传输中的数据包,可以实现对操作员人机界面的欺骗,实现对控制系统的全面控制。通过在指令流中插入或修改指令,攻击者可以发出任意或者特定的指令,通过修改返回数据,欺骗操作员看到一个数据被修改过的监控页面。

2安全问题对策

2.1漏洞防护

目前,针对工控协议存在的漏洞,一般从管理和技术2个方面采取相应措施。

2.1.1管理措施

1)加强管理,禁止未授权人员直接对设备层现场总线通信网络进行访问。2)针对授权使用者,建议只在局域网进行操作,使用者调试时所使用的便携式工具(包括笔记本电脑、编程器等)不能直接连接互联网。3)当便携工具必须连接到互联网时,应采取必要的防护措施,如与设备生产商确认风险,提前做好数据及系统备份等应急方式准备。2.1.2技术措施1)安装设备生产商提供的相应补丁程序,并升级设备固件版本,以便不受已发现漏洞的威胁。2)及时修改配置,关闭不需要使用的部分功能,使系统更加安全。3)设置漏洞扫描,及时发现不合法的命令。

2.2攻击防护

在工业通信中,攻击防护的第一步是要完全掌握设备层工控协议的内容。工控协议在任何时刻都不能出现不合法报文帧,一旦发现此类报文即认为是一种篡改式攻击行为。即使合法的报文帧,出现在不合适的地方,也可能是一种插入命令式攻击行为。

2.2.1攻击分析

PROFIBUS和MODBUS都是典型的工控应答协议,其中MODBUS协议格式(图2)较为简单,而PROFIBUS协议格式(图3)则较为复杂。

2.2.2攻击示例

1)篡改式攻击

篡改功能码工控协议中,部分FC(功能码)是协议强制要求规定的,另外一部分功能码允许不同厂商进行自定义[12]。PROFIBUS协议的MS0通信协议主要由诊断、设置参数、检查组态和数据交换等数据协议组成。其中设置参数协议是主站对从站的操作方式,包括通信参数、功能设定、装置参数和ID号等的设定,该协议在进行组态时自动产生。当出现异常时,MS0提供了一个方便、功能强大的诊断数据协议,用以分享故障。数据交换协议采用Default-SAP(不适用SAP)方式[13]。数据交换协议中的功能码FC=0x08,表示这是一个低优先级的报文帧。当主站与从站已经处于Data_Exchange状态下时,从站突发故障,此时必须及时报告给主站,通过将数据交换协议中的FC(功能码)设置为0x0A,来达到通知主站的目的。主站会在下一个总线循环周期发出诊断请求报文帧,用以中断数据交换请求报文帧的发送,这样从站就可以把诊断响应报文帧传送给主站。攻击者如果在正常数据交换时对FC实施篡改,将其置为0x0A,则会造成通信由数据交换至诊断状态的跳转,导致数据刷新中断,严重影响设备层数据通信的稳定。篡改目的或源地址为达到防止设备地址冲突的目的,PROFIBUS和MODBUS协议都是通过设备地址唯一性来识别现场设备的[14]。攻击者如果对地址进行篡改,将可能导致原本下发给A设备的命令,最终被B设备执行;或者篡改设备地址一致即地址冲突,引起2个或多个设备无法被主站所识别,最终导致设备从通信网络中离线。

2)插入命令式攻击

DSAP和SSAP指明了具体的服务类型,通过它们就能够知道某个协议具体是诊断、设置参数、检查组态和数据交换协议中的哪一个。攻击者如果在数据交换阶段插入带有服务访问点的协议报文帧,将会导致不合法协议的出现,大量占据通信带宽[15],造成数据交换的暂停,导致数据刷新中断,严重影响设备层数据通信的稳定。

2.2.3防护建议

通过分析协议应用场景,可以看出攻击者可访问设备层通信网络,拦截发往DCS、PLC的数据,一旦获取明文传输的协议,攻击者就能发送请求篡改任意命令。即攻击者可以通过简单发送不同功能码的报文,就可以达到恶意操作设备的目的。针对设备生产商,建议在实现PROFIBUS、MODBUS等工控协议时,增加时间戳和会话机制,防止攻击者通过简单协议重放达到不可预期的目的。或者,在建立PROFIBUS、MODBUS等工控协议通信之前,实现基于身份的验证机制。上述措施能够在篡改、屏蔽、插入新命令等协议攻击发生的情况下,第一时间发现安全风险并进行防护。

3结语

发电厂控制系统网络安全性问题至关重要,在生产实践中,不但要加强网络层和控制层网络安全,而且对设备层工控协议通信网络存在的安全问题也应引起足够重视。设备层通信网络安全问题主要来自协议漏洞和协议攻击两方面。在今后的工作中,应从工控协议漏洞扫描和工控协议深度解析2个方向,逐步加强对设备层工控协议通信网络的防护水平,进而建立涵盖DCS网络层、控制层和设备层的网络安全防护体系。

作者:崔逸群 王文庆 刘超飞 毕玉冰 董夏昕 单位:西安热工研究院有限公司