工业控制系统中存在的错误配置漏洞在自动运行时的缓解措施

工业控制系统中存在的错误配置漏洞在自动运行时的缓解措施

原文
Automated Runtime Mitigation for Misconfiguration Vulnerabilities in Industrial Control Systems
申明
版权归原文作者及出版单位所有,如有侵权请联系删除。

概述

​ 网络物理工业控制系统(ICS)通常实施配置参数,可以在运行时通过人机界面(HMI)进行远程调整。这些参数直接控制着ICS的行为,因此它们可以被攻击者利用来破坏ICS的安全,这一点已被世界范围内的实际攻击所证实。然而,现有的异常检测方法大多集中在可编程逻辑控制器(PLC)程序或传感器信号上,缺乏对配置对整个系统的影响的全面分析,因此不能有效地检测出不当的参数。目前还没有一种工具能够自动分析复杂的控制逻辑以确定配置的安全性。为了填补这一空白,我们设计了SmtConf,一个基于验证的框架,用于在运行时检测和缓解ICS中的不当参数。为了理解配置参数对复杂控制逻辑的影响,我们设计了一个符号化的形式模型,代表ICS在任何可能的配置参数下的行为。基于该模型,SmtConf作为一个监控系统,在不适当的配置被注入时,实时检测安全违规行为。为了进一步帮助开发人员确定安全配置,SmtConf通过解决一个优化问题推荐安全配置参数。在从两个生产级ICS测试平台收集的18个测试案例中,Smt-Conf检测到了所有由不适当的参数引起的真正的违规行为,在0.41秒,并在0.45秒内以推荐的安全参数正确修复ICS。

关键字

工业控制系统; 形式化验证

1 简介

​ 工业控制系统(ICS)的安全隐患已经成为一个严重的问题,因此引起了人们的极大关注。报告显示,许多致命的事件实际上是由故意攻击造成的[1-3, 19, 35, 36, 47]。许多努力[11, 13, 18, 23,25, 29, 40, 42, 43, 56]因此,为了自动检测恶意攻击和防止ICS的安全问题,已经做出了一些努力。

​ 然而,先前的工作在很大程度上取决于一个非常强烈的假设,即对手必须能够直接修改控制器代码(并重新启动整个控制系统)[4, 25, 40, 54]或完全控制工业网络,从而可以注入任意的控制数据[37]。然而,最近发生在佛罗里达水处理厂的事件[47]表明,通过使用合法但暴露的人机界面(HMI)改变关键的控制参数,可以很容易地实现对控制系统的攻击。与代码修改攻击相比,修改配置可以在运行时实现,不需要高度可疑的系统重启。与向空中封锁的工业网络注入虚假的传感器数据相比,在人机界面上操纵配置要容易得多,因此大大降低了在相同水平上造成物理损害的门槛。

​ 事实上,这类简单而隐蔽的新攻击可能会使现有的防御技术失效。针对代码修改和传感器数据注入,最先进的攻击检测器依赖于发现工业系统中各种数据点之间的不一致。一致性规则可以由PLC代码中实现的控制不变量[4, 15, 54]或根据物理规律在传感器测量中的内在依赖性[7, 53]来定义。然而,上述不一致性并没有出现在配置操作攻击中,这些攻击既不改变PLC的代码逻辑,也不改变传感器的测量值。相反,不恰当的配置参数利用了ICS现有的设计缺陷,因为开发人员不能完美地限制配置参数以排除所有潜在的安全风险。

​ 为了检测错误的设计,我们必须将配置参数与PLC控制逻辑和物理规律作为一个整体来考虑,完全列举ICS的行为,而不是只关注PLC或传感器。只有了解ICS配置和所有其他系统变量之间的相互作用,我们才能定量和精确地测量ICS配置参数的影响,以评估配置选择是否安全。

​ 为了弥补这一差距,我们建议在运行时使用形式化验证来检测不适当的配置参数。对于验证,常见的方法是构建一个形式化的模型来表示要分析的系统的行为。形式化模型的设计是至关重要的,因为它决定了我们可以支持的验证应用的能力。以前的ICS建模[22, 25, 26, 40, 56]没有考虑动态的系统参数,他们的验证在每次运行中都验证一个特定的系统配置。因此,现有的建模方法不能有效地分析配置参数的无限可能选择的安全性。为了解决这个问题,我们设计了一个新的形式化模型,引入了与PLC、机器或传感器的其他系统变量相互作用的对称配置参数。然后,我们设计了模型检查方法,通过考虑程序逻辑、物理规律和时间上的依赖性,来分析复杂的ICS环境中配置变化的影响。基于形式化的方法,我们自然地建立了各种应用,包括快速检测配置操作和推荐最佳安全参数。

​ 我们设计并实施了一个框架SmtConf,用于减轻ICS中的不当配置,同时考虑到恶意攻击者和粗心的操作者。SmtConf首先利用对可编程逻辑控制器(PLC)代码的程序分析和对真实数据追踪的数据挖掘,半自动地构建ICS的离线模型,命名为符号事件序列图(SESG)。SESG支持某些配置参数的符号化,并利用可满足性模态理论(SMT)来正式推理系统状态的可达性。通过分析SESG,SmtConf生成了一个离线的安全约束,它指出了配置参数的安全范围,这些参数对于系统开发者提供的一套安全规范来说是没有违规的。我们专注于有关基于时间的危险的安全规范,即错误的参数导致事件的错误时间顺序,根据以前的研究[56],这是ICS中的主要安全危险类型。在线缓解算法以ICS模型为基础,部署在控制器和人机界面之间的线内碰撞隔离设备上。当ICS运行时,SmtConf拦截配置参数的更新,并通过解决一个约束满足问题来检查新的配置是否会违反安全约束。如果检测到违反,Smt- Conf会阻止更新。如果ICS操作员要求,Smt-Conf还通过数学优化推荐安全和最佳配置值,作为ICS操作员正确配置ICS的指导。在健全的ICS模型的假设下,违规检测的假阴性率为零,推荐的参数没有违规。作为一个自动工具,SmtConf可以为人类专家赢得时间,对检测到的问题进行彻底调查,以建立一个永久性的解决方案。

​ 我们解决了几个挑战,使我们的框架能够在现实世界的ICS中部署和使用。首先,在线缓解必须具有低延迟,以便及时提供良性的配置更新。为了解决这个问题,SmtConf对ICS模型进行了彻底的离线分析,以生成安全约束条件。因此,在线过程只是解决约束条件上的轻量级数学问题,而不需要处理复杂的系统模型。其次,推荐的配置不仅应该是无违规的,而且还应该满足开发者的意图。例如,开发者可能需要安全的配置,可以最大限度地提高系统产量。为了实现这一功能,我们将推荐问题是一个数学优化问题,其目标函数可以自定义。

​ 为了证明SmtConf的有效性,我们在两个ICS测试平台上测试了它:SMART[34]和Fischertechnik[20]。在每个测试平台上,SmtConf花了大约20分钟准备系统模型和安全约束。然后我们收集了18个测试案例(即ICS场景),其中15个案例的测试平台配置不当。对于具有安全系统配置的3个测试案例,SmtConf验证了其安全性,并保证在健全的系统建模的假设下,它们是无违规的。我们对测试平台的模拟没有观察到这3个案例中有任何遗漏的违规行为(即假阴性)。对于有违规行为的15个测试案例,SmtConf在0.4秒内成功检测出每个案例的问题,根据人工验证以及模拟,我们确认所有检测到的违规行为都是真阳性。SmtConf还在0.45秒内为每个违规案例提供了安全和优化配置的建议。与之前的ICS安全验证工作VetPLC相比,SmtConf的ICS模型分析了216%的可能执行轨迹,发现了2个更多的危险案例,同时分析时间缩短了100到1000。

​ 我们的贡献总结如下。

1. 我们设计并实现了SmtConf,这是一个基于验证的框架,可以检测配置操纵攻击并自动将参数值调整到最佳安全状态。该框架系统地整合了模型检查、静态程序分析和数据挖掘以实现高效的验证。
1. 我们为ICS设计了一种新的建模方法--符号事件序列图(SESG),从中可以发现潜在的安全隐患并计算出配置参数的安全范围。
1. 我们在两个ICS测试平台上测试了我们的原型,证明了我们方法的正确性和效率。
2 研究背景

工业控制系统(ICS)是用于监测和控制工业流程的计算机系统。ICS的例子包括电网、运输和制造部门。一个典型的ICS包含许多控制回路、人机界面以及建立在通信网络协议上的诊断或维护工具[30]。传感器(如摄像机)、执行器(如机器人)和控制器(如PLC)共同实现控制回路。操作员或开发人员使用人机界面(HMI)来监控系统状态,并在控制器或其他设备中配置参数。特别是,PLC是处理复杂控制逻辑的核心控制单元。一个典型的PLC运行嵌入控制逻辑的程序,根据传感器测量结果生成控制命令。

可满足性理论(SMT)作为布尔可满足性(SAT)的扩展形式, 代表了一个用经典一阶逻辑表达的约束解算概率[8].SMT可以表示整数、实数和各种数据结构的理论,包括位矢量和数组。然后,SMT求解器(例如Z3[17])可以自动解决由上述理论定义的SMT问题。在计算机科学的研究中,SMT通常被用作形式验证的工具,其应用包括bug或漏洞检测[28, 52],测试用例生成[12],系统软件的正确性验证-2tion[44, 50, 57],等等。特别是,为了使用4个SMT进行漏洞检测,人们可以使用SMT的语言来定义潜在漏洞的存在,使用SMT 7求解器来解决约束满足问题,并且比黑盒方法更有效地发现棘手的漏洞,作为模糊处理和模拟。

在这里插入图片描述

图1 SMART单元中的设备(一个机器人手臂正在将一个零件从传送带上的托盘运送到CNC)
3 研究动机

在本节中,我们使用一个真实的ICS事件来介绍我们的研究17关于ICS运行时对错误配置漏洞的缓解。

3.1 例子

​ 我们使用SMART[34]来激励ICS错误配置的问题,SMART是由Rockwell Automa- tion(北美工业自动化的领先供应商)建立的制造部门测试平台,配备了Allen Bradley PLC和FANUC机器人。整个系统生产玩具车,我们的激励性例子集中在一个单元上,它处理最终生产的一个部分。整体工作流程。图1显示了SMART单元中的设备,包括两个门(即保持和停止),一个取放机械臂,一个计算机数控(CNC)机器,以及包括一个射频识别(RFID)收发器的传感器。一个PLC与上述所有的设备都有连接。该单元执行以下步骤来加工一个零件。(1) 装有零件的托盘沿着传送带移动,并通过挡板;(2) 然后托盘被挡板挡住,RFID收发器更新零件的RFID状态;(3) 机械臂从托盘上拿起零件,将其送到无人的CNC。(4)CNC对零件进行处理;(5)机器人手臂将完成的零件从CNC送回托盘;(6)当零件进入RFID收发器的探测范围时,RFID再次被更新;(7)最后,停止装置释放托盘。

​ 可配置的计时参数。请注意,CNC加工一个零件所需的时间在运行期间可通过HMI进行配置。通常情况下,开发人员倾向于选择更高的电机频率,从而缩短数控系统的加工时间,以提高整体产量。控制逻辑。清单1显示了PLC的控制逻辑(伪代码),协调单元内的设备。原始代码是用梯形逻辑语言编写的,但在清单1中我们使用伪代码进行演示。该代码处理一个RFID更新过程,当一个部件进入RFID收发器的检测范围时就会被触发(第8行)。RFID更新是在一个状态机中实现的,其状态是整数变量UpdateStep_RFID。对为了确保RFID更新工作的正确性,每当一个零件进入检测范围时,UpdateStep_RFID应该被重置为零。为了实现这种复位行为,定时器UpdateFinishedDelay记录了没有检测到零件后的累积时间(第15行,TON表示 “定时器开启”)。当累积时间达到一个阈值(即4秒)时,UpdateStep_RFID被重置(第18行)。UpdateFinishedDelay定时器的设计旨在避免RFID收发器的检测失败等故障。即使零件在很短的时间内没有被检测到,RFID的更新过程也不会被阻断。这个案例证明了ICS中定时器在容错方面的常见和必要用法。

在这里插入图片描述

清单1 SMART单元BLC的部分控制逻辑

违反安全规定。一个安全规范是,当每个部件进入RFID收发器的检测范围时,RFID更新过程应被重置。然而,该规范可能被违反。简而言之,该规范要求,事件 "RFID_UpdateStep复位 "是在 "部件进入RFID范围 "之前。由于计时器UpdateFinishedDelay有4秒的超时,两个事件 "部件离开RFID范围 "和 "RFID_UpdateStep复位 "有4秒的固定时间间隔。因此,"零件离开RFID范围 "和 "零件进入RFID范围 "之间的总时间,包括CNC处理的时间,必须超过4秒才能满足规范要求。当电机频率为3,000rpm时,CNC加工时间约为4秒,始终满足规范要求。但是,如果我们提高CNC的电机频率,将CNC加工时间缩短到2.5秒,就有可能出现零件进入RFID检测范围,但RFID复位却没有发生。在这种情况下,定时器将停止计数,永远不会触发后续的RFID更新。因此,过高的数控马达频率是我们需要摆脱的不恰当配置。缺少运行时间缓解。我们观察到一个真实情况,SMART的一个操作员在运行时调整了CNC的配置,并触发了上述安全违规行为。然而,SMART系统对不当的配置变化没有任何反应,继续生产有缺陷的产品。恶意攻击者也可以利用这个脆弱的参数来利用系统(详情见§3.2)。从上述事故中吸取教训,需要一个缓解机制来检测错误配置问题并自动提出安全参数。

3.2 模型

​ 鉴于这个动机的例子,我们定义了缓解ICS中的错误配置问题和相应的攻击模型。时间相关的安全隐患和配置。对于ICS安全,我们的目标是时间安全属性,就像以前基于验证的工作一样[26, 40, 56]。时间性是控制系统建模的一个关键属性,因为单个操作对速度有严格的安全要求,合作的工业过程必须严格遵循某些时间顺序。如果做不到这一点,可能会导致灾难性的后果,如致命的碰撞。

​ 我们的目标ICS在运行时有可配置的参数,通常是通过HMI。由于安全隐患是基于时间的,我们重点关注影响时间属性的配置参数,如各种计时器、移动设备的速度等。另外,Smt- Conf假设ICS可以被建模为一个有限状态系统。这是相关的基于验证的研究[22, 25, 40, 56]所使用的一个常见假设。

配置操纵攻击。我们关注的是某些参数在运行时通过预定义的用户界面被不适当地修改的攻击情况。我们考虑两种类型的广告:恶意的外部人员和良性的内部人员。恶意的局外人是指通过一般的网络攻击入侵用户界面,恶意改变系统的配置参数的攻击者。配置操纵攻击并不假定攻击者可以向PLC注入恶意代码或欺骗虚假的传感器信号。作为一个例子,在最近对佛罗里达市供水的攻击中[47],攻击者通过桌面控制应用程序(即TeamViewer)控制一名工人的电脑,并将水厂中的氢氧化钠的数量提高了100 .对印度不清楚的工厂[1]和丰田制造厂[2]的攻击也是通过HMI和恶意的配置参数。良性的内部人员是粗心的操作员,他们以合法的方式适当地改变配置参数,如激励性的例子所示。如果没有自动安全分析,这些开发者或操作者无法保证配置调整的正确性,可能会犯错误。

范围外的攻击。首先,我们不防御可以物理访问防御系统的恶意内部人员。我们将防御系统部署在Con- trollers和HMIs之间的线下隔离环境中,与相关的工作[4, 40]类似。我们还假设来自SmtConf的通信有适当的完整性检查和认证。攻击者不能破坏SmtConf的通信,以便SmtConf可以观察到真实的系统状态。其次,我们不防御传感器欺骗攻击[37]和控制逻辑注入[55],这些攻击直接破坏物理设备或内部网络。这些攻击需要比配置操纵更强的攻击能力,可以通过一系列现有的研究来防御[7, 16, 54]。

对防御系统可能的攻击。首先,攻击者可能会发起适应性攻击,即精确地操纵参数以破坏系统而不被发现。理想情况下,有了健全的模型,SmtConf保证了检测的完整性,作为一种验证方法,因此自适应攻击是不可行的。我们在第8节中讨论了攻击者可能利用的不准确之处。第二,攻击者可能持续改变配置值,重复触发检测算法,希望造成拒绝服务(DoS)。然而,这已经是一个强烈的攻击信号,因此可以很容易地被管理员观察和阻止。
在这里插入图片描述

表1 现有的基于验证的ICS/PLC防御系统
3.3 目前工作的局限性

​ 如第1节所述,基于控制数据或传感器测量值的不一致的异常检测方法[7, 16, 54]对错误配置并不有效。我们必须揭示配置和系统行为之间的偶然关系,以捕捉漏洞。为此,形式验证是一种合适的方法。

​ 我们在表1中总结了最先进的基于验证的PLC/ICS防御措施。SymPLC[25]是一个符号执行工具,检查低级别的PLC执行(例如,多任务调度),这与配置参数无关。TSV[40]和HyPLC[22]在PLC代码上应用形式化方法,并假设PLC接受由人工定义的约束条件限制的不同输入。然而,如果不对物理环境中的时序进行建模,在复杂的情况下,如我们的激励性例子,PLC的输入约束很难被识别。为了包括定时关系,UBIS[26]使用定时自动机和VetPLC[56]基于自定义的定时因果图对执行轨迹进行采样。不幸的是,UBIS和VetPLC的系统模型都不能对可改变的配置参数进行建模,因此它们不能推理出这些参数对ICS任务的影响。一旦参数发生变化,他们的最佳解决方案是重新进行验证过程以更新模型,这给违规检测带来了难以承受的延迟。为了填补这一空白,SmtConf在为ICS建模时应考虑这些参数的所有可能值。

​ 对于模型修复,TarTar[31]可以修复定时自动机模型中的时钟值的界限,但是在修复抽象自动机模型和推荐真实世界ICS中的配置参数之间存在差距。首先,TarTar不能修复系统配置,因为如前所述,定时自动机模型缺乏配置参数的符号化。另外,TarTar最小化了修改时钟边界的数量,但ICS开发者需要定制优化目标,以实现安全和生产之间的折衷。不同的是,SmtConf通过采用符号化、增强可定制性和最小化延迟,实现了第一个实用的ICS参数推荐。

4 smtconf概述

​ 我们提出了SmtConf,一个通过正规方法缓解ICS中错误配置漏洞的框架。SmtConf可以检测系统配置上的恶意攻击或良性故障,并推荐安全配置参数。

架构。通常情况下,人机界面通过某些通信协议与控制器相连[27]。SmtConf被部署在控制器和人机界面之间的一个隔离的线上碰撞设备中,用于拦截配置更新。例如,我们在Raspberry Pi上实施SmtConf,与PLC和HMI进行EtherNet通信。在大规模的监督控制和数据采集(SCADA)系统中,用户接口被组织成在一个层次结构中,SmtConf应该部署在每个与控制器有直接联系的最底层的HMI上。组件。SmtConf有处理系统建模和安全约束生成的离线模块,以及用于检测和推荐的在线模块(图2)。

在这里插入图片描述

图2 SmtConf框架的概述

​ 系统建模(§5)是一个半自动的过程,用于生成ICS系统模型。我们对PLC代码进行程序分析,对运行时的数据跟踪进行数据挖掘,以提取系统行为。然后,我们构建一个名为符号事件序列图(SESG)的有向图,其路径代表ICS的可能执行。然而,数据挖掘并不能保证其准确性,因此我们要求开发人员根据自动验证过程的反馈来修改模型。

​ 约束生成(§6.2)接受一组安全规范作为输入。然后,它分析SESG以生成一个约束,表明参数的安全范围。安全约束被在线过程所使用。每当配置参数更新时,违规检测和建议(§6.3)就会被触发。它验证新的配置是否满足安全约束的要求。

​ 如果不是,SmtConf会阻止参数的更新。如果系统操作人员提出要求。SmtConf可以推荐配置参数的无违规值,该值是针对用户提供的目标而优化的。在下面的章节中,我们分别介绍四个组件的详细设计。

5 系统建模

​ 为ICS建模的一个直接的方法是列举其可能的行为。ICS是一个具有异质设备的复杂系统,现有的方法由于建模不完整而存在不准确的问题(§3.3)。因此,我们将ICS建模为一个有限状态系统,考虑到各种关键因素,包括系统状态(§5.1),PLC执行模型(§5.2)和时间事件(§5.3)。最后,考虑到动态配置参数,我们建立一个图来表示ICS的可能行为(第5.4节)。

5.1 系统状态

​ 系统状态由从系统中提取的状态变量组成。不同的系统状态在状态变量上有不同的值。状态变量有以下类别。

​ (1) 设备之间的信号。ICS处理的复杂任务需要各种设备之间的合作,这可以通过让设备通过基于网络或有线连接相互发送信号来实现。通常情况下,传感器向PLC发送信号,然后PLC与机器人和机器互动。因此,信号是表明设备工作状态的重要变量。

​ (2)记忆中的变量。PLC利用可编程的存储器来处理复杂的动态控制逻辑。在PLC的执行过程中。一组本地定义的变量被存储在存储器中,并在每个执行周期中更新。这些变量与PLC的控制逻辑纠缠在一起,从而影响系统行为。

​ (3) 物体的物理状态。唯一的传感器信号不能描绘出物理世界的全貌,所以我们添加额外的变量来填补这个空白。在激励性的例子中,一个典型的物理状态是货盘和零件的位置。尽管物理参数(如位置)通常是连续的,但我们可以根据离散的控制逻辑将其离散化。例如,托盘的状态包括 “停止”、“通过停止”、“通过停止”,等等。改变托盘的状态意味着改变一些传感器信号。

​ 接下来,我们分析了系统状态之间的转换,它包含两类。PLC执行和时间性事件。

5.2 PLC执行模型

​ PLC以固定的小时间间隔(例如,SMART的PLC为60毫秒)迭代其执行周期,并直接修改状态变量。从形式上看,在每个周期中,我们将PLC的执行建模为一个函数,该函数接受状态变量作为输入,并产生具有更新值的同一组状态变量。

​ 然而,对PLC执行的建模是在精度和可扩展性之间的权衡。首先,我们忽略了PLC的低级特征,包括周期时间和多任务调度。分别对每个PLC周期进行建模是很昂贵的,而且不具有可扩展性。例如,TSV的符号模型检查[40]在14个PLC周期上花费了20分钟,而且时间成本随着周期数的增加呈指数增长。相反,我们将PLC对状态变量的更新视为即时操作,在我们的SESG模型中需要零时间(详情见5.4节)。尽管在状态变量更新的时间戳上引入了错误,但这种抽象大大减少了我们模型的状态空间。时间戳的误差很小–根据现有的ICS测试平台[27],PLC扫描周期时间不到系统事件之间平均时间间隔的1%。此外,我们通过使用保守的时间间隔界限来缓解时间事件的误差(§5.3)。其次,如果多个PLC进程同时运行,我们仍然按照SCAD-MAN[4]中的技术,通过合并它们的变量集和代码逻辑,生成一个组合的PLC执行模型。正如SCAD-MAN中所证明的,如果PLC的周期时间可以忽略不计,并且不存在变量更新的竞赛,那么合并将保留原始进程的功能。应避免PLC变量写入的竞赛,以确保稳健性。

生成。PLC执行模型是通过对PLC代码进行静态程序分析而自动提取的。首先,我们需要将PLC代码转换为可以在没有PLC硬件的一般操作系统上执行的程序,以方便进一步分析。以前的工作[25, 40, 56]对使用图灵完备语言来表示PLC代码的控制逻辑进行了很好的研究,其中事件驱动的PLC图被映射到高级编程语言的ifthen块。例如,TSV[40]将PLC代码(即指令列表)翻译成考虑到PLC特定特征(如定时器)的特定领域语言。SCADMAN[4]利用开源编译器MATIEC将PLC代码编译成C语言,并进一步提出了一种方法来合并来自多个PLC的代码。我们借用上述现有技术来实现考虑多个PLC的代码转换。然后将生成的程序转化为PLC执行模型是很直接的。程序中的每个变量都是一个系统状态变量和PLC执行模型中的功能是由程序本身定义的。详情见附录A。

关于配置参数。从ICS测试平台的调查中[27],PLC代码中有三种类型的配置参数。(1) 推送给远程设备/机器的参数,例如,激励性例子中的数控马达频率。这些参数影响到PLC外部的物理过程,它们的影响将被时间事件所捕获。(2) PLC代码中计时器的超时值。这些参数直接影响到时间关系,因此它们也被建模在时间事件中。(3) 作为条件的参数。开发人员使用配置参数来启用或禁用系统中的特定功能。在这种情况下,我们将这些参数的每个组合视为ICS的一个独特版本,并将我们的系统建模方法分别应用于每个版本。

5.3 时间性事件

​ 在ICS的执行中,由控制逻辑和环境的物理动态引起的时间依赖性是很常见的。为了对时间依赖性进行建模,我们定义了事件。一个事件是由一个触发器、一个操作和一个区间约束组成的三要素。触发器是对系统状态的一个约束。给定一个系统状态,如果约束条件得到满足,事件就被触发。操作是一个将一个系统状态更新为另一个状态的函数。该操作与触发器有因果关系。区间约束表示触发和操作之间的时间是多少。注意,边界可以是实数,也可以是符号配置参数的函数。在激励性的例子中,对于数控加工事件,触发器是零件被放置在数控系统中,操作是将CNC_Done设置为正值,而间隔约束取决于数控马达频率的配置。

​ 此外,我们考虑了一种特殊类型的事件,称为可中断事件,其操作只有在触发器所指定的约束条件在整个时间段内始终得到满足时才会发生。否则,事件就会被中断,操作就不会发生。一个典型的可中断事件是PLC代码中实现的定时器。指令TON(Timer ON)启用了一个定时器的计数功能。如果TON在连续的周期中被执行,定时器通常会增加它的值直到达到一个阈值。一旦TON在任何周期内没有被执行,定时器就会被重置。对于这种情况,我们定义一个可中断的事件,其触发器是TON的激活,间隔是定时器的阈值,操作是将PLC代码变量timer.DN(定时器完成)设置为正数。

生成。在开发人员的协助下,我们半自动地生成时间性事件。一组可中断的事件首先从PLC代码中的计时器中直接提取出来。我们通过采用VetPLC[56]中的数据挖掘技术,从真实世界的PLC数据轨迹中提取其他事件。我们为每个测试平台收集10小时的PLC数据痕迹(记录每个扫描周期的PLC变量值),包括各种配置设置下ICS的执行情况,数据挖掘包括两个主要步骤。首先,根据因果关系确定事件的触发和运行。对于连接到PLC的每个设备,其输入信号的更新可以是事件触发,而其输出信号的更新可以是事件操作。PLC代码标注了PLC变量和设备之间的联系,因此这个过程可以是自动的。其次,我们解析所有可用的数据追踪,确定所有触发器和操作的时间戳,并获得最大/最小的每个统计学上相关的触发器-操作对的时间间隔。数据挖掘的更多细节见附录B。

关于配置参数。如果时间界限受到任何配置参数的影响,时间界限应该是配置参数的函数,而不是常数实数。我们首先根据不同的配置设置对数据轨迹进行分割,并分别挖掘恒定的时间界限。然后,我们应用回归分析,将配置参数视为特征,将区间界限视为结果变量。因此,回归适合配置参数作为时间界限的函数。

​ 数据挖掘是减轻手工操作的最佳努力。然而,它没有经过验证,需要ICS开发人员在必要时手动进行补充。首先,数据挖掘只对PLC代码中定义的变量起作用(即§5.1中的传感器信号和内存中的变量)。一些涉及物理过程的因果关系,例如,传送带输送部分,并没有被PLC代码所表明,因此它们不能被数据挖掘所自动识别。然而,拥有系统工作流程知识的开发人员可以很容易地识别它们。第二,当数据跟踪的数量不足以探索极端的执行情况时,我们需要考虑一个保守的区间约束。如果有必要,开发者需要根据物理设备的规格和他们的专业知识来扩大事件间隔的界限。在得到开发人员的确认后,应进一步扩大边界,增加一个PLC扫描周期时间,以减轻§5.2中提到的不精确性。例如,我们扩大了时间间隔的界限从[C1, C2]到[C1 τ , C2 + τ],其中0 C1 C2是恒定实数,τ是最大的PLC周期时间。这样一来即使两个PLC不在同一时间执行扫描周期,所有可能的事件指令都被捕获。

​ 请注意,PLC代码(或相应的数据痕迹)用于§第5.2节和第5.3节是完全一样的。因此,生成的PLC执行模型和时间事件是自然兼容的–它们是同一组系统状态变量上的函数。

5.4 时间序列图符号化

​ 符号事件序列图(SESG)描述了一个ICS的可能执行轨迹。该图包含符号化的时间间隔和符号化的配置参数,因此我们可以使用SMT工具来正式推理配置对ICS执行的影响。符号化是SESG与现有ICS形式化模型的主要区别。来自TSV[40]的TEG模型没有对时间间隔进行符号化,因此不能处理带有量化时间变量的规范;TEG、TECG(来自VetPLC[56])和定时自动机(用于UBIS[26]等)都将配置参数视为具体的固定值,因此它们不能为动态配置建模。通过符号表示,SESG的有限图可以简洁地表示所有可能的配置设置下的无限的具体执行轨迹。

​ 形式上的定义。首先,我们在图3中展示与激励性例子(§3.1)相关的SESG的一部分。SESG是一个有向图G = (V, E, α, β,γ),覆盖系统状态集S,时间间隔集T,以及T上的约束集C。V是SESG的顶点,α:V→S是一个标记函数,它将顶点映射为系统状态。E⊆V×V是SESG的边。标签函数β : E → T将每条边与一个非负的符号时间间隔联系起来,而标签函数γ : E → C将每条边与一个卫兵联系起来,卫兵是对符号变量(即时间间隔和配置参数)的一种约束。一个路径π=(v0,v1,…),其中v0,v1,—∈V是一个由边连接的系统状态序列。路径代表ICS的一次执行,它从一个初始状态v0开始,沿着路径上的边转移系统状态。此外,只有当路径约束(即沿路径的所有守卫(Óvi,vi+1 ∈πiγ (vi,vi+1))的交集)得到满足时,该执行才是可行的。

​ 图3中的示例图从触发零件从传送带到CNC的系统状态(顶点#1)开始,到零件进入RFID检测范围时结束(顶点#6,#9)。有三个不同的路径:(123456)、(123786)和(12379)(数字是顶点ID)。特别是路径(12379)显示了一个失败的RFID更新,因为UpdateStep_RFID没有在#9处重置。在验证和参数推荐过程中,我们可以使用与符号时间间隔t1,t2,t6,t9和符号配置X(电机频率)相关的路径约束,来分析哪个X会导致违规。相比之下,其他两条路径是安全执行的,因为它们在到达#6之前分别在#4和#8重置了RFID状态。

​ 图形构建。算法1是SESG的构建算法。最初,有一组初始顶点表示初始系统状态。然后,该算法以循环方式执行,在每一次迭代中,我们尝试将新的顶点连接到图中。为了实现该算法,我们引入了几个数据结构。首先,每个顶点记录其触发的事件(图3中的绿框)和触发后的累积时间(即触发时间)。例如,图3中的1号顶点与系统状态有关,即从传送带到CNC的输送是新开始的。绿框中记录了被触发的事件,包括 "传送带-CNC交货 "和 “离开RFID范围”,这两个事件的触发时间为零,因为它们是由当前的系统状态新触发的。我们使用地图结构M来表示这种从顶点到触发事件和触发时间的映射。其次,每个顶点都有一个不变的因素。当相应的不变量可满足时,系统状态是可达到的。初始顶点的不变量被设置为恒定的真。在每个循环迭代中,算法选择一个可能有子顶点的顶点(vc),并进行以下步骤。

在这里插入图片描述

图3 激励性例子的SESG(§3.1)。顶点包含系统状态(选定的变量,蓝色)和触发的事件(绿色)。边缘包含符号化的时间间隔和防护约束。

​ 首先,检查顶点是否会触发新的事件(第5-12行)。对于每个定义的时间性事件,如果触发约束被当前的系统状态所满足,并且该事件尚未被触发,则将新事件添加到M中,并将触发时间设置为零。特别是,已经在当前顶点上被触发的可中断事件,如果它们的触发约束不被满足,应该被删除。经过这次更新,我们就有了在当前系统状态vc上被触发但尚未完成的事件列表。例如,如果vc是图3中的1号顶点,事件 "Con- veyor2CNC delivery " 被 触 发 ,因为触发约束Conveyor2CNC_Delivery_Start=true得到满足。

在这里插入图片描述

​ 第二,产生新的顶点,这些顶点可以成为vc之后的下一个系统状态(第15-26行)。新的系统状态的出现是由事件的操作来实现的。一旦一个事件完成,其操作功能将直接修改系统状态,PLC的执行将进一步更新更多的系统状态变量。对应于vc上的每个被触发的事件,用ω表示,con下一个顶点vc′的构建由以下两个步骤完成。(1) 该算法首先执行由以下定义的操作函数事件ω,然后重复执行PLC的执行,直到系统状态稳定。最终的稳定系统状态被分配给vc′。注意,我们将PLC执行周期的间隔抽象为可忽略的,如§5.2所述。 (2) 算法更新vc′上的触发事件(M vc′),它是从M vc复制的,但有以下更新。 ω被移除,因为它在vc′完成。其他被触发的事件的触发时间由前一个顶点和新顶点之间的边的时间间隔增加(β vc , vc′)。

​ 第三,考虑到时间上的约束,检查状态转换的有效性(第27-36行)。我们首先通过结合以下两个约束条件来计算从vc到v′c的边的防护。(1)完成的事件ω必须在事件的间隔边界所定义的范围内完成。这个约束可以写成M(vc ,ω) + β(vc ,v′c) ∈ [tmin,tmax ] 其中 [tmin,tmax ] 是事件ω的区间边界。 (2) 其他被触发但未完成的事件有可能在v′c之后完成。换句话说,v′cc上被触发的事件的触发时间不能超过它们的最大区间界限。形式上,这个约束是Ó M(v′c,ω′)≥0ω′ M(v′c,ω′)≤tω′max,其中tω′max是事件ω′的最大区间。然后我们计算新顶点v′c的不变量,它是前一个顶点vc的不变量和边(vc,v′c)的保护的交集。如果v′c的不变量是可满足的,就存在一个符号变量(即边的间隔和配置)的解决方案,使得从初始顶点到v′cs的至少一条路径满足时间约束。在这种情况下,我们将v′cin加入图中。此外,我们不允许重复的顶点,以使图的大小最小化。当两个顶点的系统状态和触发的事件相同时,我们认为它们是等价的。如果新的顶点v′c已经在图中了,我们就把它们的不变量联合起来,不增加任何顶点。

验证。SmtConf可以自动检查每个数据跟踪是否正确,也就是说,SESG中至少有一条路径再现了执行情况。如果不是,开发人员就会参与调试不准确的地方(例如,添加或修复事件,如第5.3节所述),直到验证通过。由于缺乏地面真相,保证模型的完美性是一个非常困难的挑战,但由于验证的反馈循环,我们的系统建模达到了最佳的精度。换句话说,SESG确保100%地覆盖了由开发人员或数据流确定的可能的执行情况,这是一个防御系统可以拥有的最好的知识。

6 运行时间缓解

​ 基于SESG,SmtConf检测安全隐患并推荐安全参数。我们介绍了规格(§6.1)、离线和在线过程(§6.2、§6.3)以及一个端到端的例子(§6.4)。

6.1 规格

​ SmtConf的规范采用了定义1中定义的定时命题时态逻辑(TPTL)的语法。TPTL不仅能说明事件的顺序,还能衡量两个事件之间的时间。TPTL及其变体通常用于模型检查,在检查时间属性方面很有效[6]。

​ 定义1(TPTL公式)。让P是一个命题系统,包含一组原子逻辑命题符号{p1,p2,…,p|A|},让Σ=2A是由P中的命题组成的有限字母。,p|A|},让Σ=2A是一个由P中的命题组成的有限字母表。TPTL公式由语法定义:T PT L ∋ϕ ::=p | ϕ ∧j | ¬j | ϕ Uj | x ∼ c | x。 ϕ 其中p∈P,x的范围是一个有限的时钟变量集,c的范围是Q,而∼∈{≤, <, =, >, ≤}。

​ 安全属性和活泼属性对工业系统很重要,我们可以用TPTL来定义它们。例如,安全属性□(¬Danдer)意味着由公式Danдer定义的安全危险永远不会发生,而活泼属性^ x.(Finish ∧x < 60)意味着系统最终在60个时间单位(秒)内达到Finish状态。在表2中,我们列出了我们实验中使用的安全规范。规范检查适用于SESG路径。根据规范的语义,它为每个路径生成一个违规约束(SMT表达式),约束的任何解决方案都是一个违反规范的具体执行路径。例如,我们可以对照关于 “跳过RFID更新”(表2中的#2)的规范,检查激励性例子(图3)的路径(1,2,3,7,9)。违规约束是一个恒定的真,因为顶点#9肯定会导致违规。为了使规范检查具有确定性,检查路径的长度必须是无限的。在SESG中,由于循环的存在,无限的路径是可能的。然而,由于ICS任务有严格的时间限制,无限路径肯定违反了基本的有效性要求。例如,SMART单元要求在60秒内完成零件的处理(表2中的规格#1),所以超过60秒的路径或有回环的路径都是违规路径。

6.2 离线安全约束的生成

​ 我们在每个SESG路径上应用规范检查(§6.1),并计算出一个安全约束,使所有的违反都不可能。形式上,我们把SESG记为G = (V, E, α, β,γ ),把可能路径的集合记为Π,把规范的集合记为S,把符号配置的集合记为W。特别是,我们用Tπ来表示沿着路径π∈Π的符号化时间间隔集合。如§5.4所述,当路径约束Cpπ=Óvi,vi+1∈πiγ(vi,vi+1)可满足时,一条路径π∈Π就有可能发生。如§6.1所述,当violation约束Cπs =Ô s ∈Ss(π),其中S是安全规范的集合,满足时,一条路径π∈Π至少违反了一个规范。鉴于一个路径是安全的,即只要该路径是可能的,就没有违反任何规范,而当所有路径都是安全的,系统就是安全的,ICS的安全约束是对符号配置W的约束,它不仅可以表示单个参数的安全范围,也可以表示多个参数的复杂互动。该约束是:。

在这里插入图片描述

​ 使用Z3[17]等SMT工具生成上述cπo∈nΠ约束可能很耗时,因为该公式包含量词,并在SESG中迭代所有路径。我们在附录C中介绍了一些实现技巧以减轻时间成本。

6.3 在线检测

检测。给定配置参数和它们的具体值,SmtConf检查配置是否会违反任何安全规范。SmtConf建立了一个配置约束(用CW表示),限制每个符号配置参数等于具体值。当安全约束在特定的配置下永远不会被违反时,ICS就被验证为无违约(即方程2是不可满足的)。

在这里插入图片描述

在这里插入图片描述

​ 建议。给定一个配置参数的搜索范围(用CW表示)和一个优化目标(配置参数的函数,用f W表示),SmtConf生成无违规、在范围内并针对目标函数优化的配置的具体值。建议算法首先准备了一个配置约束,表明安全配置值的搜索范围。建议是通过解决方程3中定义的优化问题来完成的

在这里插入图片描述

​ 正确性。如第5.4节所述,SESG详尽地包括了所有可能的执行路径,假设有健全的模型输入(例如,事件)。基于完整的SESG,根据定义,安全约束排除了规范所定义的任何安全违反。因此,在与SESG的正确性相同的假设下,检测实现了零假阴性,而推荐则保证了推荐的参数不违反任何规范。然而,检测的假阳性在理论上是可能的,因为时间性事件有保守的时间界限,并考虑到现实世界中可能不会发生的意外故障。

6.4 端到端缓解过程

​ 我们在每个SESG路径上应用规范检查(§6.1),并计算出一个安全约束,使所有的违反都不可能。形式上,我们把SESG记为G = (V, E, α, β,γ ),把可能路径的集合记为Π,把规范的集合记为S,把符号配置的集合记为W。特别是,我们用Tπ来表示沿着路径π∈Π的符号化时间间隔集合。如§5.4所述,当路径约束Cpπ=Óvi,vi+1∈πiγ(vi,vi+1)可满足时,一条路径π∈Π就有可能发生。如§6.1所述,当violation约束Cπs =Ô s ∈Ss(π),其中S是安全规范的集合,满足时,一条路径π∈Π至少违反了一个规范。鉴于一个路径是安全的,即只要该路径是可能的,就没有违反任何规范,而当所有路径都是安全的,系统就是安全的,ICS的安全约束是对符号配置W的约束,它不仅可以表示单个参数的安全范围,也可以表示多个参数的复杂互动。该约束是:。

​ 操作员打算提高电机频率以增加产量,但他的尝试失败了。他可以命令SmtConft启动推荐程序,确定一个优化的参数选择。SmtConf默认设置配置约束为3000≤X≤5000∧。.其中X在改变前和改变后的参数值之间,其他参数保持与当前值相等。另外,SmtConf默认将目标函数设置为|X-5000|,将X优化到配置变化的原始目标。在上述设置中,优化过程产生了优化配置X=3,814 rpm。

7 评价

​ 我们从三个方面对SmtConf进行评估:(1)检测和推荐的正确性,(2)效率–SmtConf流程的时间成本,以及(3)自动化–所需的人工工作量。为了回答上述问题,我们从SMART和Fischertechnik(§7.2)构建了18个测试案例,并分别对SmtConf的组件进行评估。我们在一台拥有英特尔至强CPU E5-4620v2 2.60GHz的服务器上进行所有的实验。请注意,检测和推荐的实验是在SESG模型上进行的,这些模型是通过数据跟踪和专家知识来验证的。我们在第7.6节中单独讨论了模型验证的人工努力。

7.1 实施

​ SmtConf 总共用7K LOC实现 , 包括 3220 行用于程序分析的Closure/Java代码,1859行用于数据挖掘的Python代码,以及1152行用于核心算法(SESG、检测、推荐等)的Python代码。我们使用SMT求解器Z3来解决约束条件满足和优化问题。

​ 除了SmtConf,我们还使用经过测试的ICS测试平台的模拟器进行评估,这些测试平台是由ICS开发者实施和验证的。给定一个系统配置,模拟器根据控制逻辑和物理规律,按照最先进的最佳实践[16],以10毫秒的固定时间间隔更新所有ICS对象(如传感器、PLC、机器人、零件/托盘)的状态。我们的模拟器还引入了随机化来模拟传感器和执行器的不确定性。

7.2 实验设置

系统。我们在表3所列的三种ICS上测试SmtConf。

​ (1) 如第3.1节所述,在一个SMART单元中进行零件处理。

​ (2) 零件通过SMART中一个有两个出口的分流器。分流器的任务是根据零件的RFID状态将 其 送 到正确的目的地 。

​ (3) Fischertechnik 的零件 处 理 。Fischertechnik是一个制造系统的测试平台,当零件到达出口并被两个CNC加工后,其零件加工就完成了。

关于SMART分流器和Fischertechnik的更多细节,见附录D。表3显示了场景的复杂性(即配置、状态变量和事件的数量)。

在这里插入图片描述

规格。我们为每个场景创建基于TPTL的安全规范,如表2所列。这些规范要求ICS及时完成其任务,并避免意外事故,如碰撞、进程受阻等。

测试案例。我们总共选择了18个可能发生在3个ICS上的测试案例,如表4所列。在18个测试案例中,有3个案例是安全的,SmtConf预计会报告不存在违规行为。在其他15个测试案例中,对手不适当地调整了一个参数。SmtConf的任务是检测错误的参数,并推荐同一参数的安全值。

在这里插入图片描述

图4 系统建模的可扩展性:动词和路径的数量与时态事件的数量。
7.3 系统建模

效率。我们在表3中记录了生成的SESG的复杂性以及系统建模的执行时间。从算法上看,图的构建和安全约束生成的执行时间分别随着SESG中顶点和路径数量的增加而线性增加。在三个ICS中,Fischertechnik有最大的图(6K顶点和7K边)和最长的图构建执行时间(约20分钟),而SMART cell有最多的路径(3.5K)和最长的安全约束生成执行时间(约22分钟)。整个离线过程需要4-25分钟。

可扩展性。由于SmtConf的性能与SESG的大小密切相关,我们分析了当ICS变得更加复杂时,图的大小如何增加。直观地说,一个关键因素是事件的数量和它们之间的互动。如果两个事件的顺序不是确定的,路径将被分叉为两个分支,从而使图的大小增加。一般来说,当有更多交织在一起的事件时,这种分叉的几率会更高。为了证实这一假设,我们用选定的事件子集重新生成了三个ICS的图,每个事件子集都模拟了原始ICS任务的一部分。我们提出了以下的关系图4显示了图的复杂性和事件数量之间的关系。一般来说,更多的事件会导致更大的图,ICS任务复杂部分的建模会使图大幅增长。对于SMART单元来说,当事件的数量增加时,图的复杂度会突然增加。

​ 对于SMART单元,当事件的数量从20个增加到22个时,图的复杂性突然增加了。新增加的2个事件是关于一个复杂的过程,即零件被放置到传送带上,并同时进行RFID更新。另外,我们发现,当图形较大时,图形的增长速度较快,这介于线性增长和指数增长之间。为了提高工作效率,我们建议开发者将ICS任务分成独立的阶段,并对每个阶段分别应用SmtConf。

7.4 探测

正确性。我们将SmtConf的检测应用于表4中的18个测试案例。3个测试用例有安全配置,SmtConf成功验证了它们的配置符合规范。其他15个测试用例包含注入的不当配置,SmtConf发现了这些违规行为。我们还使用模拟来验证检测结果。我们在模拟器中反复运行每个测试案例1000次,模拟可以重现所有违规情况。所以SmtConf在18个案例中显示出100%的真阳性率和0%的假阳性率。

效率。由于安全约束是离线生成的,在线检测是一个轻量级的约束满足求解过程,在18个案例中最多只需要0.45秒。由于同样的原因,时间成本主要取决于安全约束的复杂性,因此在相同的ICS下的测试案例几乎是相同的。实时违规检测使攻击者没有空间使用不当的配置来破坏ICS。

​ 与VetPLC[56]比较。VetPLC是发现PLC系统安全问题的先进工具,但在每次执行时只能检查一个特定的配置设置。为了对验证能力进行公平的比较,我们制作了SmtConf的降级版,称为SmtConf-,其中配置参数不再是符号变量而是具体数字。在每个测试案例中,SmtConf-生成SESG,并直接根据规范检查每个路径,以揭示违规行为,这与VetPLC的工作流程类似。这两个工具都应用于表4中的18个案例,我们旨在评估SESG和VetPLC的模型TECG的不同效率和准确性。

​ 正确性的比较。我们手动检查SmtConf-或VetPLC发现的路径是否代表现实世界中可行的执行(我们将VetPLC的 "事件序列 "翻译为SESG路径的格式)。如果执行路径服从PLC代码逻辑和物理定律,则违反路径为真阳性。结果显示在图5a中。
在这里插入图片描述

图5 在中国和美国之间的违规检测的比较SmtConf-(降级的SmtConf)和VetPLC。

​ 首先,SmtConf-覆盖了Vet- PLC发现的所有执行路径,分析的路径比VetPLC多216%。SmtConf-的结果中没有观察到假阴性,而VetPLC漏掉了354条(占总数的55%)真正的违规路径,并且在案例#11和#12中未能检测到违规。造成这种差异的原因有两个。首先,VetPLC通过离散化的时域和对可能的时间间隔的子集进行采样来说明事件的顺序。相比之下,SESG使用连续时间域中的符号实数来代表时间,这保证了对可能的执行路径的100%覆盖(假设事件定义是合理的)。其次,由于离散化的方法,VetPLC有可扩展性的问题,18个测试案例中有13个在超时(一小时)前没有完成,这导致了更多的路径缺失。

​ 第二,VetPLC有42个假阳性(即不可行的违规路径),而在SMTConf-中并不存在。这是因为VetPLC采用了不精确的系统模型。VetPLC的模型没有像SESG那样分别处理PLC的执行、不可中断事件和可中断事件(§5.3中定义的两类事件),而是将ICS的所有行为作为不可中断事件处理。当把VetPLC应用于激励性的例子时(表4中的案例#4),计时器UpdateFinishedDelay在零件进入RFID范围后继续计数,计时器被禁用,这导致了不可行的路径.

​ 性能的比较。对于SmtConf-和VetPLC,基于验证的检测的执行时间主要取决于SESG的大小和算法的处理速度。就处理速度而言,SmtConf-每秒产生13条路径,而VetPLC每秒产生11.5条路径。然而,VetPLC生成的路径中有99.4%是重复的路径,而SmtConf-生成的所有路径都是唯一的。两条路径重复意味着它们呈现出相同的事件顺序,尽管确切的时间间隔可能不同,而图5a已经删除了重复的部分。

​ 如图5b所示,我们评估了两个延迟指标:(1)检测延迟,即用于找到第一个违规路径的时间;(2)分析延迟,即枚举所有可能路径所消耗的时间。就完整的分析延迟而言,SmtConf最多在40秒内完成了每个测试案例,而VetPLC则失败了。在一小时内完成相同的测试案例(我们设定超时为一小时)。对于检测延迟,SmtConf-需要不超过1.3秒,而VetPLC在复杂情况下需要超过10秒。SmtConf-大大减少了执行时间,因为SmtConf-使用SMT定理证明,从公式中解决可能的路径,而不是盲目采样。

​ 总之,除了支持分析安全配置范围外,SmtConf在连续时间域上的全符号化系统建模实现了高覆盖率和高准确性的违规检测。

7.5 建议

​ 对于有违规行为的15个测试案例,SmtConf为检测到的不当参数推荐安全值,目标设定为最小化与原始目标值的距离,如图所示§6.4.我们在表4中记录了执行时间和优化后的配置值。

正确性。对于每个有违规行为的测试案例,我们根据专家知识手动计算出最佳的配置选择作为地面实况,并确认推荐值在安全范围内。在表4中,我们将误差百分比计算为(推荐值-基本事实)。例如,在搅拌的例子中(表4中的测试案例#4),电机频率约为3,950rpm,是实现产量最大化的最佳安全选择。SmtConf推荐3,814rpm,所以误差为-3.39%。表4显示,所有测试案例的推荐误差都小于5%。人们可以通过调整优化算法来减轻误差,这是在准确性和性能之间的一个权衡。此外,我们使用ICS模拟器来验证SmtConf的推荐结果。我们在范围内选择不同的配置值,并使用每个选择连续模拟1000次ICS任务。模拟发现的最佳配置与我们的人工分析一致。由推荐过程修补的系统可靠地工作。SMART cell和Fischertechnik分别在平均49秒和35秒内正确处理了1,000个零件,而SMART diverter则把所有2,000个零件送到正确的目的地。性能。我们用执行时间来评估推荐的性能,如表4所示。一般来说,由于离线生成的安全约束,推荐只需0.5秒就完成了。与在线检测类似,推荐时间取决于安全约束的复杂性,而不是具体的配置参数值。因此,SMART单元需要的推荐时间比其他两个ICS稍长,因为它的路径数量很多。

多参数推荐。正如第6.3节中提到的,配置约束可以被修改为一次推荐多个参数。为了衡量SmtConf的多参数在每个ICS上(即表4中的情况#1、#9、#13),我们对不同数量的参数进行重复推荐。如果我们对N个参数中的k个进行推荐,配置约束限制了k个参数在它们的定义范围内,其他参数等于它们的原始值。相应地,我们将目标函数设定为ICS任务完成的最大时间成本,以使生产吞吐量最大化。如图6所示,虽然推荐多个参数会增加时间成本,但推荐是有效和可扩展的,它可以在6秒内优化7个参数(SMART单元的所有参数)。

7.6 自动化

​ 除了部分事件挖掘、规范和推荐算法的可选定制,SmtConf的工作流程大部分是自动化的。

​ 在系统建模中,SmtConf的程序分析(§5.2)可以从PLC代码中ac- curately提取PLC的执行,这不需要手工操作。然而,数据挖掘(§5.3)不能保证准确和完整,所以我们要求开发人员手动检查挖掘出来的事件。对于三个测试的ICS,数据挖掘正确地提取了67个事件中的49个(80%)。开发人员增加了13个关于物理动态的事件(例如,机器人手臂移动部件),因为它们不是由PLC变量定义的,并修改了5个事件的临时约束,以涵盖一些最坏的情况(例如,缓慢的RFID更新)。开发人员平均为每个ICS花了两个工时来补充挖掘的事件。对于检测和建议,规范是使用TPTL语法手工编写的。表2中的13个规格是在大约30分钟内完成的。特别是对于推荐,开发者可以使用默认的配置范围和目标函数,如第6.4节所述,不需要任何人工努力。作为选择,开发者可以用一行代码和几秒钟的时间来修改上述两个输入。

8 讨论

攻击的范围。正如在威胁模型(§3.2)中所讨论的,我们假设内部通信是安全的,PLC设备是受保护的。SmtConf的目标是在运行时注入不当的配置,而不是控制逻辑注入或传感器欺骗。我们强调,配置操纵更容易启动,但却被现有的防御系统所忽视。

精确性问题。验证和推荐的算法在一个完善的模型的假设下保证其正确性,该模型详尽地涵盖了现实世界ICS的可能执行。然而,系统建模(第5节)有三个潜在的不准确的来源,我们分别缓解了这些错误。首先,由于统计方法的性质和收集到的数据痕迹的规模有限,对时间性事件的数据挖掘可能不完整或不准确。我们建议使用真实的数据痕迹来验证模型,以发现容易出现的错误,并需要开发人员的手工努力来做最后的检查。第二,系统模型SESG忽略了PLC扫描周期的间隔。我们通过使用保存性的时间界限5.3来缓解这个错误。第三,我们借用SCADMAN的方法[4],将多个PLC的代码逻辑组合成一个简单的函数,假设PLC进程中的竞赛条件为零。开发人员可以利用现有的代码分析方法[25]来检测这种竞赛条件。

9 相关工作

ICS攻击。少数研究探讨了挑战ICS安全的强势和隐性攻击。为了减少系统操作人员对攻击的可见性,[21]提出了中间人攻击,被入侵的PLC故意向监控工具发送欺骗信号。其他针对ICS的攻击包括拒绝服务(DoS)[49]和控制逻辑注入[55]也考虑类似的信号欺骗方法来隐藏攻击。为了获得系统模型,有人提出了一些通过数据分析[39]或HMI屏幕截图[48]的深度学习的模型推断方法。基于现有的攻击,我们将我们的威胁模型定义为§3.2。

ICS防御措施。大多数防御措施侧重于检测攻击或潜在的安全问题。一些研究挖掘控制不变性,并根据不变性检查系统行为,以报告可能的攻击[4, 7, 16, 38, 54],并且在假阳性和假阴性之间存在权衡。另一方面,基于验证的防御措施[51],虽然需要更多的系统模型的先验知识,但可以提供更强的检测准确性的保证。一些研究在PLC领域应用模型检查工具来验证PLC代码[13, 14, 25, 40],但不能推理出PLC和其他系统组件之间的交互。进一步的研究工作[41, 46, 56]将物理/数字设备加入系统模型。SmtConf更进一步考虑了动态参数引起的运行时安全隐患。此外,[24]提出了一个在PLC中插入运行时形式化验证过程的设备,这为SmtConf提供了硬件基础。

计时系统的修复。定时系统是代表具有时间依赖性的系统行为的形式化模型,它经常被用来为包括ICS在内的实时系统建模。人们提出了各种模型的自动修复机制,包括Petri网模型[9, 10]、定时自动机[32, 33],它们通过修改模型来消除违反规范的行为。然而,现有的方法不能适用于ICS的参数修复,因为它们没有考虑目标的动态配置和定制。SmtConf的建议是第一个生成ICS参数补丁的实用算法。

10 结论

​ 我们设计并实现了SmtConf,一个针对ICS错误配置漏洞的自动运行时缓解框架,以检测违反安全规范的行为,并自动生成优化的安全参数。SmtConf通过考虑在运行时可能被不当修改的动态参数,改进了ICS上基于模型的验证技术。通过分析动态配置参数的影响,SmtConf是指导开发人员安全配置复杂ICS的有效工具。

A 解析PLC代码

​ 在这一节中,我们将介绍如何将PLC代码翻译成通用的高级编程语言,如Python,以模拟PLC的执行。我们用梯形逻辑到Python的翻译作为示范,但该方法也适用于其他PLC代码语言,如结构化文本(ST)、指令表(IL)、顺序功能图(SFC)和功能块图(FBD)。

​ 由于PLC执行的性质,所有PLC代码语言都有类似的特性。首先,代码是在扫描周期内执行的。在每个周期中,PLC将传感器信号读入输入存储器,根据输入信号和当前PLC状态执行代码,最后将输出信号写到输出存储器。因此,PLC代码中有三种类型的变量:从输入存储器中读取的输入变量,代表PLC状态的状态变量,以及写入输出存储器的输出变量。第二,PLC的逻辑是事件驱动的。ICS中的任务大多是事件驱动的,如第5节所述。例如,当传感器观察到零件的存在时,机械臂就会抓取该零件,当PLC确认零件处理完成时,停机就会释放托盘,等等。为了实现这种事件驱动的行为,PLC代码可以被视为一组if-then块:如果输入变量和状态变量满足特定的模式,PLC就会修改状态变量和输出变量。

​ 鉴于PLC代码的特性,翻译主要有三个步骤,与TSV[40]和SCADMAN[4]类似。首先,对于每个PLC,我们确定其PLC代码的进入和退出,并区分三种类型的变量。对于梯形逻辑,执行的入口是一个特殊的例程,标记为 “主例程”(梯形逻辑中的例程与Python中的函数类似)。变量类型在梯形逻辑的源代码中也有很好的注释。第二,我们进行指令级翻译。梯形逻辑的指令被称为Rung指令。一条Rung指令包含一组运算符,这些运算符以一个序列执行,这就是定义了一个控制流。控制流可以被翻译成Python的if-then块。例如,EQU操作符检查两个变量的值是否相等,只有当两个变量相等时,才能执行下一个操作符。在这种情况下,我们可以把 "等于 "逻辑放在Python的if条件中。对于高级PLC指令,如TON(Timer ON),我们按照PLC编程的官方文档[5]实现了等效的Python版本的函数。对于PLC特定的数据结构,如定时器和计数器,我们遵循TSV[40]中提出的方法。一个例子显示如下。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yqW3KiK6-1669453532742)(C:/Users/10842/AppData/Roaming/Typora/typora-user-images/image-20221126165307195.png)]

​ 第三,我们将多个PLC的代码结合在一起(例如,Fischertech- nik测试平台有四个独立的PLC),以生成一个单一的功能块,这就是我们在系统建模中需要的PLC执行模型。我们采用SCADMAN中提出的方法:附加所有的功能和功能块定义,并合并每个PLC的主要PLC程序。

B 挖掘时间性事件

​ 对于每个测试平台,我们首先收集PLC的10小时数据跟踪,包括ICS在各种配置设置下的成功和失败执行。每个数据跟踪记录了ICS测试平台执行期间每个扫描周期的PLC变量值。形式上,我们可以将数据跟踪定义为一个有序的列表DT = t1, s1 , … ., tn , sn,其中每个元素是由一个时间戳和一个PLC状态(即PLC变量的值)组成的元组。

​ 其次,我们将PLC变量分配到不同的组中,使数据挖掘更有方向性。如果这些变量有因果关系,它们应该在一个组中,而且一个变量可以加入不同的组。首先,与同一设备连接的PLC变量在同一组中(在§5.3中提到)。当开发人员配置系统设备和它们之间的相互作用时,PLC变量被自动标记为传出信号(例如,发送到其他设备的命令)或传入信号(即,传感器信号),与特定的设备ID相关联。根据定义,传出和传入的信号可能有因果关系,因此可能包含有用的时间不变性。例如,对机器人发出的命令和传入的信号之间的时间间隔可能表明机器人完成特定任务的时间。其次,一些变量由于物理环境的原因而具有因果关系。例如,检测零件的传感器信号、传送带速度、停止门的状态等都是关于零件的位置。我们要求开发者的注释将它们归为一组,以便数据挖掘能更有效地揭示关于物理动态的不变因素。分组是对VetPLC方法的增强,以提高挖掘时间不变量的准确性和效率。

​ 第三,我们将数据追踪转化为状态更新序列。一个状态更新是对PLC状态的一次修改。对于每个数据跟踪和每个变量组,我们在每两个连续的扫描周期中比较两个PLC状态,然后记录变化的变量、它们的前值和它们的新值作为一个状态更新。换句话说,一个状态更新是一个由修改过的变量、以前的值和新的值组成的三联体,形式为V , x, y 。通过迭代数据跟踪中的所有扫描周期,产生了一个状态更新的序列。US = t1, V1, x1, y1 , . . ., tk , Vk , xk , yk

在这里插入图片描述

​ 第四,我们使用Perfume[45]算法来发现时间上的变化。状态更新序列中的不变量。对于每个变量组,我们有一组状态更新的序列。Perfume可以直接分析这些序列集,将每个状态更新视为一个项目,并在这些项目中找到时间属性。Perfume支持各种类型的时间属性,我们对其中的两种感兴趣(与VetPLC相同)。"a总是跟着b的上限值t "和 “a总是跟着b的下限值t”。我们要挖掘的属性正是时间事件的时间间隔界限:一个状态更新(操作)跟随另一个状态更新(触发),其间隔范围是有界限的。因此,每个时间不变量都指定了一对状态更新和一个时间间隔界限。I = Va , xa , ya , Vb , xb , yb , tmin , tmax 。

​ 特别是,对于有配置参数的变量组,我们进一步将状态更新序列分成子集,并且配置参数在每个子集中有相同的值。如果我们对每个子集进行不变量挖掘,对于每一对状态更新,我们可能有不同时间间隔界限的时间不变量。如果是这样,这意味着配置参数对时间属性有影响。为了发现配置参数和时间间隔界线之间的关系,我们应用线性回归,其输入值是配置参数值,输出值是时间间隔界线。因此,我们可以将各种配置参数下的不变量合并为一个最终的不变量,其时间间隔界限是线性回归的结果,是配置参数的函数。

​ 最后,我们通过一对一的映射将时间上的不变量转化为节奏上的事件。事件触发器是第一个状态更新的结果(Va = ya),而事件操作是第二个状态更新(Vbyb)。时间间的界限保持不变。形式上,时间不变因素I = ((Va , xa , ya ), (Vb , xb , yb ), tmin , tmax )被映射到时间事件E = (Va = ya , (tmin , tmax ), Vb← yb )。

C 实施安全约束的生成

​ 尽管安全约束的公式(等式1)是直截了当的,但最先进的SMT求解器(例如Z3)在求解复杂的公式如量词(即,∃,∀)时变得很慢。安全约束生成的实施需要精心设计,以尽量减少离线和在线程序的时间成本。

​ 因此,我们没有完全按照公式生成安全约束,而是在实现上做了两个改进,如算法2所示。首先,SmtConf进行了量词消除,以产生一个无量词的安全约束,这可以减少在线验证和修复的延迟。其次,已经被安全约束识别的违规路径被跳过。在算法2中,量词消除是一个昂贵的过程,只对有违规行为但满足安全约束的可达路径进行消除。因此,离线安全约束生成的时间成本被降低。显然,生成的安全约束与公式1是等价的。量化的性能指标显示在第7节。
在这里插入图片描述
在这里插入图片描述

D ICS测试床
SMART 分流器

​ 分流器是测试平台SMART中的一个关键部件,它确保托盘沿着正确的路线移动。在这种情况下,如图7所示,有一个主要的直线输送机和另一个分支输送机。从入口(A)进来的托盘可以通过主输送机(B)或分支输送机(C)的出口离开这个组件。托盘的路线取决于其上零件的RFID,RFID显示该零件是否已经完成。完成的零件应通过分支输送机离开系统,而未完成的零件应留在主输送机上进一步处理。分流器控制托盘的路线。

​ 工作流程。SMART采取以下步骤,将托盘运送到正确的目的地。(1) 托盘到达并停在关闭的挡板上;(2) 部署在挡板上的一个RFID收发器读取托盘的RFID;(3) 如果RFID被正确读取,并且托盘在挡板上等待的时间足够长(用计时器实现),根据读取的RFID设置分流器的状态,同时打开挡板。如果托盘上有未完成的部件,则收回分流器,反之亦然;托盘将通过挡板;(4)短时间后再次关闭挡板;(5)最终,托盘通过分流器,前往由分流器决定的目的地。

在这里插入图片描述

​ SMART分流器是其正确的路由功能。尽管上述工作流程在处理一个托盘时运行良好,但当有多个托盘连续到达搁置处时,可能会出现违规情况。考虑到两个托盘(即1号托盘和2号托盘)以8秒的时间间隔到达搁置处的情况,SMART分流器的工作是正确的,因为当2号托盘被搁置处释放时,1号托盘已经通过了分流器,在这种情况下,两个托盘都去了它们的正确目的地。但是,当托盘间隔被调整得较短时(如6秒),当2号托盘被保持释放时,1号托盘还没有通过分流器。如果两个托盘上的零件状态不同,2号托盘的释放会引起分流器状态的改变,从而使2号托盘去往错误的目的地。综上所述,由于缺乏对留置区和分流区之间的联系是否清晰的理智检查,SMART依靠足够长的托盘间隔来避免两个连续托盘之间的冲突。不幸的是,不适当的短托盘间隔有可能被注入到系统中。

​ 在案例#10中,SmtConf生成的SESG代表了在处理两个连续托盘时的系统行为,托盘间隔为象征性的。SmtConf的验证揭示了在6秒的短托盘间隔下的违规行为(在SESG的54个可能路径中,有40个违规路径),SmtConf的修复生成的最小安全托盘间隔为6.76秒(基础事实为6.6秒)。验证只需要0.04秒,因此,在造成任何错误的路由结果之前,适当的配置就已经被恢复了。对适当托盘间隔的建议也有助于开发人员在避免安全问题的同时实现最高产量。

费舍尔技术测试平台

​ 该测试平台是一个制造系统,包含四个单元(单元1至单元4),如图8所示。两个CNC(CNC 1和CNC 2)分别位于单元2和单元3。每个单元都有一条传送带和一个或两个传感器,检测零件的存在。两个滑块(滑块1和滑块2)被部署,分别将零件从单元1推到单元2,从单元3推到单元4。所有上述设备都由一个PLC控制。在这个测试平台中,PLC是由运行OpenPLC服务器的Raspberry Pi板来模拟的,以执行PLC。

​ 该测试平台是一个制造系统,包含四个单元(单元1至单元4),如图8所示。两个CNC(CNC 1和CNC 2)分别位于单元2和单元3。每个单元都有一条传送带和一个或两个传感器,检测零件的存在。两个滑块(滑块1和滑块2)被部署,分别将零件从单元1推到单元2,从单元3推到单元4。所有上述设备都由一个PLC控制。在这个测试平台中,PLC是由运行OpenPLC服务器的Raspberry Pi板来模拟的,以执行PLC。代码。所有的Raspberry Pi板都通过以太网连接,并通过Modbus链接。

​ 工作流程。Fischertechnik的任务执行成功意味着系统在单元1的入口处接受一个零件,在CNC1和CNC2中加工该零件,最后将该零件送到单元4的出口。在整个过程中,零件依次到达单元1、Ram 1、单元2、CNC 1、单元3、CNC 2、Ram 2和单元4。特别是,零件从单元1到单元2的过渡需要以下步骤。(1) 零件到达单元1上的一个传感器,触发一个叫做TransitingToRam的计时器的计数;(2) 零件通过传送带到达缩回的Ram 1;(3) 计时器TransitingToRam达到一个阈值(默认为2秒),PLC向Ram 1发出信号,释放Ram 1并将零件推向单元2。

​ 案例#14(表4)的案例研究。这个案例的重点是零件从单元1到单元2的转换,规范要求当零件到达时,滑块要缩回(即零件和滑块之间没有碰撞)。当定时器TransitingToRam的阈值为2秒时,由于传送带需要不到1秒的时间将零件从单元1的传感器送到Ram1,步骤(3)总是发生在步骤(2)之后,这是正常行为。然而,如果我们使用较短的定时器阈值0.9秒,以提高整个系统的生产效率,步骤(3)可能会发生得太早,零件还没有到达Ram1,这是一个安全违规行为。在案例#14中,当阈值被不适当地设置为0.9秒时,SmtConf的验证发现了SESG中总共8条可能的路径中的6条违规路径,违规检测只需要0.35秒。SmtConf自动生成最小安全阈值0.34,这恰恰是传送带将零件从单元1的传感器送到Ram 1的最大时间。SmtConf不仅可以在不到一秒的时间内消除安全违章,还可以提供更好的配置选择,使系统生产最大化。

E 仿真

​ 在ICS的真实物理设备上重现所有的安全违规行为是低效和冒险的。因此,我们使用模拟器来研究各种配置参数下的系统行为。实施。仿真器包含三个主要部分。(1)一个PLC执行器,它运行PLC代码并保持PLC的内存状态;(2)一个物理动力学处理器,它预测ICS场景中所有物体的物理属性,如零件和托盘的位置和速度;(3)一个日志管理系统,记录ICS执行的所有运行时间信息。仿真维持着一个时钟,并在周期内执行。在每个周期中,模拟器执行PLC代码以更新PLC的内存,更新所有系统内物体的物理属性,并增加在一个固定的小时间间隔内(在我们的实施中为10毫秒),对时钟值进行调整。与真正的ICS类似,配置参数可以由用户配置。

不仅可以在不到一秒的时间内消除安全违章,还可以提供更好的配置选择,使系统生产最大化。

E 仿真

​ 在ICS的真实物理设备上重现所有的安全违规行为是低效和冒险的。因此,我们使用模拟器来研究各种配置参数下的系统行为。实施。仿真器包含三个主要部分。(1)一个PLC执行器,它运行PLC代码并保持PLC的内存状态;(2)一个物理动力学处理器,它预测ICS场景中所有物体的物理属性,如零件和托盘的位置和速度;(3)一个日志管理系统,记录ICS执行的所有运行时间信息。仿真维持着一个时钟,并在周期内执行。在每个周期中,模拟器执行PLC代码以更新PLC的内存,更新所有系统内物体的物理属性,并增加在一个固定的小时间间隔内(在我们的实施中为10毫秒),对时钟值进行调整。与真正的ICS类似,配置参数可以由用户配置。

​ 例子的仿真结果。我们在图9a和图9b中分别展示了重新配对之前和之后的激励性例子(表4中的测试案例#4)的仿真结果。在图9a中,数控系统的电机频率为5000转/分钟,存在违反 “跳过RFID更新”(表2中的#2)规范的情况。当零件进入RFID检测范围(信号RFID_AtStop为正)时,计时器UpdateStep_RFID还没有完成计数行为,UpdateStep_RFID没有被重置。在图9b中,电机频率被修复为3,814rpm,这样RFID的更新就变得正常了(UpdateStep_RFID=0发生在RFID_AtStop=1之前)。上述仿真结果与从SMART的实际执行中收集到的数据痕迹一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值