APP下载

冶金工业控制系统软件安全研究

2022-10-11李腾飞万振华宋荆汉

现代计算机 2022年15期
关键词:冶金漏洞程序

李腾飞,黄 相,万振华,宋荆汉

(1.武汉科技大学计算机科学与技术学院,武汉 430065;2.深圳开源互联网安全技术有限公司,深圳 518131)

0 引言

复杂的ICS带来了独特的安全、安保和可靠性工程挑战。冶金行业是我国国民经济的支柱性产业,是关系国计民生的基础性行业。冶金ICS生产包括球团、烧结、焦化、炼铁、炼钢、连铸、轧制等多个复杂环节,受环境(辐射、高温)等条件的限制,有些工序和环节必须应用自动化系统来辅助进行。自动化和信息化的高度融合已成为冶金行业的发展趋势,以以太网为主的控制网络系统得到普遍应用。

“德国工业4.0”“工业互联网”“中国制造2025”等一系列概念的提出,进一步促进了ICS的变革。然而,仅有极少数ICS能在变革期中完成强大的安全防护,这是由于传统的ICS几乎不与互联网发生交互行为,形成了绝对安全的“物理防护”,这使得大多数ICS在转型过程中忽略巨大的信息安全隐患。如今,ICS发展迅速,数据采集与监控系统(SCADA)作为ICS的核心设备,除了保证系统提供的服务和数据外,最有可能成为网络犯罪分子和黑客网络攻击的目标。表1列举了近年来工业信息安全的事故案例。由于工业现场控制系统关乎国计民生,收到网络攻击后可直接造成人员伤亡、经济损失、环境污染等严重后果,因此保护工业现场控制系统的信息安全具有极其重要的经济价值和社会意义。

表1 ICS信息安全事故案例

1 冶金工业控制系统

冶金工艺过程管理的复杂性是由设备数量大、工艺过程连续性差、工艺参数不稳定等原因造成的,有关目标管理的决策可能会受到严重阻碍,其有效性可能会降低,所以需要比较先进的ICS。

1.1 冶金工业控制系统概述

冶金ICS系统结构如图1所示,结合冶金行业特点,通过多层次的隔离防护措施、全面的监控手段、立体的防御技术来实现对ICS的整体安全防护,从而保障整个ICS安全稳定运行。在管理层与数采监控层之间,主要进行身份鉴别、访问控制、入侵检测、行为审计、病毒过滤等安全防护;在数采监控层和PLC系统层之间,主要基于工业控制通信协议进行访问控制。

图1 冶金ICS系统结构

1.2 冶金工业控制系统安全隐患

随着黑客攻击手段和技术的日趋复杂和精密,针对ICS的攻击源源不断。作为复杂的混合流程工业,冶金行业的安全形势比较严峻,主要表现在以下几个方面:

冶金企业是典型的混合流程型企业,冶金企业具有工业领域生产流程的典型特点,自动化程度比较高,涉及到的自动化设备、子系统众多,促使控制系统网络拓扑比较庞大,复杂程度高,安全风险比较大。

冶金企业工艺流程涉及到大型设备,如高炉、转炉、轧机机组等,受到攻击时造成的损失也是无法估量的,因此冶金企业控制网络安全形势比较严峻。

由于冶金行业的控制网络庞大且流程稳健,所以安全边界难以界定;由于与物理世界的紧密联系,网络对实时性、可用性和业务连续性有很高的要求;由于目前移动存储介质是ICS病毒传播的主要途径,所以安全规定要有很高的要求,这些要求也增加了系统信息安全管理的复杂性。

冶金ICS由于要兼顾成本和便利性,采用的都是通用的集成系统,如Windows7、WindowsXP和Linux。由于冶金过程停止运行成本过高,所以系统并未定期维护,导致人们所熟知的系统漏洞隐患一直存留。同时考虑到更换设备所造成的成本增加,所以冶金设备大部分控制站均为兼容机结构,这些专用设备可能并未考虑过安全问题,甚至一些控制器并没有通信数据检查功能。

由于冶金ICS对可靠性要求高,导致一些防御攻击软件需要经过繁琐严格的审查流程后才能被允许安装到ICS中。

上述因素导致冶金ICS面临较高的安全隐患。

2 ICS安全威胁建模

如图1所示,PLC处于ICS架构的底层,直接控制冶金现场设备,同时兼顾通信功能。由于PLC是网络和现实之间的交互点,因此它们一直是网络攻击的主要目标。最著名的针对PLC的攻击“Stuxnet”对目标ICS造成了物理损坏。自“Stuxnet”以来,这些系统缺乏安全性的问题已受到越来越多的关注。

工业系统对PLC工业控制层次的威胁攻击可分为3类:①网络攻击,即来自信息空间的网络攻击,如截取数据包并篡改数据分组,破坏其完整性;②系统攻击,注入非法命令或组态进行攻击,破坏PLC的控制逻辑,使得PLC的逻辑执行跳转到攻击者指定的功能块上,从而达到精准实施攻击的目标;③恶意代码攻击,篡改PLC正常运行逻辑,从而使得PLC异常运行。

2.1 网络威胁建模

目前很多PLC通信协议缺乏安全机制,一些不法分子抓住这些漏洞进行攻击。

Lim等记录了2017年对施耐德Tricon PLC的调查,使用逆向工程技术,确定了Tricon通信协议的结构,从而对PLC进行攻击。Martín-Liras等在2017年对PLC使用的三种专有协议(S7Comm、UMAS、OptoComm)进行了比较分析,对有关协议漏洞的现有信息进行了研究。Ghaleb等在2018年的新出版物中记录了对S7协议漏洞的调查分析,从而进行攻击。

由于冶金工业生产过程中需要多个PLC程序协同工作,因此可以利用这些相连的PLC,将其中的一个PLC作为网关从而渗透整个ICS。Newman通过在线浏览网页对监狱中的值班监控进行攻击,虽然这两者并未直接连接,但这确实是一个很容易攻击的脆弱点。Klick在2015 USABlackHat上指出PLC最脆弱的攻击点就是那些面向互联网的PLC,然后将这些PLC作为网关来攻击那些难以直接攻击的PLC,从而致使整个ICS瘫痪。

2.2 系统威胁建模

PLC采用的大多是老旧的操作系统,这些系统在互联网高速发展的时代早已因千疮百孔而被淘汰。攻击者通过这些操作系统的漏洞就可以轻而易举地入侵到ICS中,从而攻击PLC。常见的PLC使用的操作系统如表2所示。

表2 常用PLC的操作系统

Beresford在Black Hat2011上指出,直接攻击Linux系统就可以连接到Simatic PLC设备,一旦这些以root权限运行的PLC程序受到攻击,整体ICS就会产生巨大的损失。

2.3 恶意代码威胁建模

PLC的恶意代码同样也是ICS安全的核心问题之一。周奇荣使用改进的KNN算法对PLC代码进行检测,通过实验验证了该方法的有效性。常天佑提出了一种基于状态验证的PLC恶意代码检测方法,解决了PLC代码安全严重依赖工程师对代码错误检测,缺乏行为检测的问题。陈志文等利用以太网数据监控和网络数据现场管理技术,检测PLC输入输出业务信息的一致性,实现PLC恶意代码检测。孟奂等通过调查PLC病毒攻击机制,引入基于数据流分析的恶意PLC代码检测技术。

3 工业软件安全分析

3.1 PLC漏洞

通过对工控系统行业漏洞库平台网站(http://ivd.winicssec.com)、CNVD工控漏洞子库网站(https://ics.cnvd.org.cn)、国家信息安全漏洞共享平台网站(https://www.cnvd.org.cn)和国家信息安全漏洞库网站(http://www.cnnvd.org.cn)中PLC漏洞的收集总结,将PLC漏洞分为以下十种类型:缓冲器错误漏洞、安全漏洞、信息泄露漏洞、拒绝服务漏洞、授权问题漏洞、输入验证错误漏洞、跨站脚本漏洞、密码漏洞的明文存储、资源管理错误漏洞及其它漏洞。

这十种PLC漏洞占比如图2所示,由图2可知,安全漏洞最常见,占全部漏洞近40%;其次是缓冲器错误漏洞、拒绝服务漏洞和授权问题漏洞,这四种漏洞占据了总漏洞的约80%。

图2 PLC漏洞类型占比图

3.1 PLC协议漏洞检测

Fuzzing是目前检测PLC协议漏洞最实用的方法之一,但是传统的fuzzing方法存在无法自动获取协议、耗时长、命中率低、异常定位困难等问题。为此,大量学者做了研究,如黄影等总结了目前传统Fuzzing测试技术的问题,结合隐马尔可夫模型、统计学、动态抽样、关联模糊策略、心跳检测的存活检测方案、Simhash的一致性检测方案等方法,提出了改进的Fuzzing测试,以检测PLC协议的漏洞。刘坤通过研究工控协议中各个字段之间的隐藏关系,设计了一种针对数据内容、消息、结构等多字段的改进Fuzzing技术,用以检测PLC协议的漏洞。朱振乾等在分析工业管理系统现状的基础上,结合Wireshark和Nmap软件对工业管理系统进行漏洞挖掘及分析,以检测PLC协议的漏洞。

3.2 PLC语法分析

PLC语言由梯形图、功能块图、顺序功能流程图、指令表、结构化文本组成,具体如图3~图7所示。

图3 梯形图

图4 功能块图

图5 顺序功能流程图

图6 指令表

图7 结构化文本

PLC直接控制着各类物理设备,PLC因语法错误导致ICS被攻击将会严重威胁设备甚至人身安全。因此,PLC的安全性保证具有严格的要求,与此同时,PLC语法分析方法成为了学者们研究的热门话题。PLC语法分析方法目前常用的有:模型检测、静态分析、定理证明、符号执行等。

模型检测是一种广泛使用的用于验证程序有穷状态是否满足预定义命题性质的方法,Darvas等结合NuSMV和nuXmv模型检测方法开发了一款新型模型检测工具PLCverif。

静态分析方法主要包括:抽象语法树分析法、控制流分析法、数据流分析法、指针分析法等。李学良等建立基于Backus-Naur范式(BNF)的指令表语法模型构造抽象语法树,该算法检测仅有线性复杂度。张晔等使用控制流分析方法对PLC程序语法进行检测,该方法首先用flex和bison构造抽象语法树,然后抽象语法树生成中间表示SSIR,最后基于SSIR构建程序控制流程图对PLC程序进行检测。黄海军等通过分析程序点的关联输入状态和关联输出状态变化来检测PLC程序中的问题。指针分析法通过指针代码对内存操作行为进行分析,从而检测代码的正确性。由于PLC梯形图难以转化为结构化文本,王炜新等提出一种基于AOV(activity on vertex)图和广义表的转换算法,将PLC梯形图转化为类汇编语言,解决了PLC梯形图难以进行分析的难题。由于单一的静态分析方法对PLC的检测并不全面,常天佑等针对PLC程序在进行NuSMV模型检测时无法对程序进行自动化建模的问题,提出一种PLC程序模型自动化构建方法,该方法首先将结构化文本语言解析为抽象语法树;其次,基于抽象语法树进行控制流分析,从而生成控制流图;然后,通过数据流分析生成程序依赖图;最后,根据程序依赖图自动生成NuSMV输入模型。实验结果表明,所提方法与传统手工模型构建方法相比,提高了模型生成的效率和准确率。

Biha等采用定理证明的方法将PLC程序转化为数学公式,并用定理证明器进行分析与验证。Mclaughlin等利用符号执行的方法分析程序的路径约束,通过约束求解计算满足目标约束的具体值,消除了不可达路径的访问,有效解决了PLC程序模型检测中状态爆炸的问题。

4 结语

本文以冶金工业为背景,针对ICS安全进行了研究分析,首先对工业控制系统进行了简述,从而对工业控制系统安全隐患进行研究分析。通过整理文献,对ICS软件的网络、系统和恶意代码威胁建模进行分析总结,同时对PLC常见漏洞进行了整理分析。最后对ICS软件的PLC语法分析的研究现状进行了分析。

猜你喜欢

冶金漏洞程序
漏洞
钢铁行业冶金工程项目管理存在问题与对策
浅析钢铁冶金工艺的发展
给Windows添加程序快速切换栏
简化化学平衡移动教学程序探索
侦探推理游戏(二)
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
漏洞在哪儿
视频、Office漏洞相继爆发