SCOPE: Secure Compiling of PLCs in Cyber-Physical Systems(CPS中PLC的安全编译技术)

SCOPE: Secure Compiling of PLCs in Cyber-Physical Systems(CPS中PLC的安全编译技术)



一、摘要

网络物理系统(Cyber-Physical System,简称CPS)正在被广泛应用于关键基础设施中,如智能电网,核电站,水处理系统,运输系统,制造业和健康服务产业等。但是,针对这一系统的网络攻击日益普遍。其中,利用内存安全漏洞而发动的内存安全攻击已经成为CPS中主要的攻击方式之一。本文中,作者基于安全编译PLC提出了一种全堆栈内存安全的技术,用于检测CPS中的内存攻击行为。作者提出的方法兼顾了CPS系统中设备的实时性要求和可用性要求。

二、引言

针对CPS的一类重要的攻击是攻击PLC。一个典型的PLC包含三个主要的软件组件——PLC固件,控制逻辑以及底层的操作系统,他们通常由C/C++实现,更容易受内存安全漏洞影响,例如缓冲区溢出漏洞、释放重引用漏洞和内存泄漏漏洞等。这些漏洞可能会导致系统运行时崩溃,或者代码注入等内存攻击。为了克服这些漏洞,大量的应对举措(通常被称为内存安全工具)被提出。但是,CPS的硬实时性要求和可用性要求限制了内存安全工具的使用。因为,这些内存安全工具会引入较高的开销,导致CPS的实时性要求无法满足。此外,一些安全工具缺乏弹性的策略,这导致其检测出攻击行为后会中断或者重启受害系统,严重影响了系统的可用性。因此,CPS内存安全工具在提供安全保证的同时应做到高效、弹性,即内存和时间开销尽可能少,弹性的保证系统可用。

为了解决这一问题,作者提出了一种应对措施——Secure Compiling of PLCs in Cyber-Physical Systems(SCOPE),它基于编译时代码植入技术。具体来看,作者主要用到了三个工具——Address Sanitizer(ASan)、Kernel Address Sanitizer(KASan)和CIMA。ASan和KASan分别是用户空间和内核空间的内存错误检测工具,CIMA提供了更灵活的弹性策略,保证了检测到错误后系统的可用性。

为了验证真实的CPS能否承担由SCOPE引起的计算开销,作者基于SWaT和SecUTS两个真实的试验台,对采取SCOPE措施的PLC进行了测试。

三、攻击模型和系统模型

作者在这一节讨论了内存攻击的原理以及如何对CPS系统的real-time constraints(实时性)和physical-state resiliency(物理状态的弹性)建模。只有建立好对应的模型,才可以用量化的方式去测试内存安全措施对PLC的影响。

(一)攻击模型

作者在这一部分讨论了典型的内存攻击方式——缓冲区溢出攻击。通过构造精心设计的输入,使缓冲区溢出,修改返回指针,可以将程序的正常运行流程转移到攻击者设计的恶意代码或者某些存在的模块。

(二)Modeling CPS design constraints

这一部分作者对CPS要求的Real-time Constraints和Physical-state resiliency指标进行了建模,方便后面刻画系统引入内存安全措施的开销。简单来看,在Real-time Constraints部分,作者使用引入内存安全措施(MSO)后导致PLC增加的扫描时间来刻画MSO对实时性的影响。在Physical-state resiliency部分,作者使用控制延迟来刻画MSO对物理系统的影响,引入MSO后,如果扫描时间小于规定的cycle,控制延迟取0,如果扫描时间超过cycle,控制延迟取二者的差值。

四、PLC的安全编译

在这一节,作者从上层角度描述了full-stack memory-safety enforcement使用的内存安全工具——ASan、CIMA和KSAan。

(一)ASan

ASan在编译C/C++程序的时候会创建poisoned内存区域(红区)。红区是无法访问的,当任何指令企图访问红区时,会被检测到。通过这种方法,许多内存漏洞,如缓冲区溢出、释放重引用、内存泄漏、双重释放等都可以被检测到。但是,ASan是为x86体系结构设计的,因此作者对ASan进行了移植,使其能够编译PLC。ASan的问题在于其不具有resiliency(弹性),当ASan监测到攻击时,他会中止原来的程序,这对于CPS系统是致命的。

(二)CIMA

为了解决ASan检测到攻击时简单地中止程序的问题,作者引入了CIMA——当检测到攻击时,CIMA会跳过非法的内存访问指令而不终止程序。编译时,CIMA构建CFG(control-flow graph),CFG包含了每条内存访问指令i的目标指令T,当 i 被检测为非法时,会跳过i的执行,转而执行T。但是CIMA可能会影响原始程序的语义。

(三)KASan

KASan和ASan类似,只不过KASan是用来检测操作系统内核的内存安全攻击,相比于ASan,KASan可检测的内存漏洞较少,因此运行时引入的额外开销会小一些。

五、实验设计

为了验证full-stack memory-safety enforcement的性能,作者在SWaT和SecUTS实验台上对其进行了测试。由于SWaT和SecUTS实验台使用的PLC是专有的,因此,作者使用开源的PLC替换了原本的PLC。

六、性能评估

在这一节,作者就实验结果讨论了full-stack memory-safety enforcement的安全保证、效率、弹性以及内存开销。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值