工控安全最佳实践:PLC TOP20清单
作为工控网络中最重要也是最脆弱的环节,最佳工控安全实践指南通常包括工业网络中PLC的完整性、强化、弹性和监控。
传统上,可编程逻辑控制器(PLC)被认为是不安全的。但一项新的安全计划概述了工业计算设备编码的20种最佳实践,旨在将PLC重新设想为工业过程中网络防御的最后一道防线。
近日,ISA(国际自动化协会)全球网络安全联盟的网络安全专家和自动化工程师发布了一个开源工控系统PLC安全指南,同时还提供了一个PLC安全清单,其中包含20条建议,用于在工业网络发生安全事件或配置错误时配置PLC以提高安全弹性。例如,帮助自动化工程师在对PLC进行编程以执行物理过程时使用,例如控制流体温度以及工厂或设施中阀门/闸门的开启和关闭。
ISA希望PLC供应商在产品中纳入该安全指南,以帮助客户在对其设备进行编程时采用最佳实践。
德国OT安全公司Admeritia的首席技术官、新PLC安全TOP20清单的主要作者之一SarahFluchs表示,实际上可以采用两个基本的PLC特性来对设备进行安全编码:它们能够控制物理过程,例如打开或关闭一扇门,它们在设计上属于“确定性的”。
Fluchs解释说:“PLC是最后一道防线,是工控网络受到物理冲击之前的最后一道防线”。她说,PLC并不是真的可以防止网络攻击,而是可以最大限度地减少网络攻击对工厂物理过程的影响。它的过程监控功能可以用于弹性和安全性,以标记潜在的恶意或异常行为:“该设备包含很多关于什么可以发生,什么不能发生的知识。这些知识是我们可以使用的。”
PLC编程与软件编程的不同之处在于它不是用软件编程语言编写的,它更多的是关于循环和小任务。“PLC中的一切都与周期有关;您编写在短时间内完成的小任务……将输入数据与存储趋势数据进行比较,然后快速决定要做什么。”漏洞研究员ReidWightman解释说。OT安全公司Dragos表示:“常规软件(编程)是事务性的:我提出要求,你给我一个回应。”
PLC安全TOP20清单的方法类似于应用程序安全编码最佳实践,例如微软的安全开发生命周期(SDL)或OWASP的安全编码实践,但特定于PLC的现有功能。
新的TOP20列表中的安全编码实践按安全目标分组,其中包括完整性(PLC逻辑、定时器和计数器以及I/O值)、强化攻击面、弹性、监控PLC中可能指示安全问题的特定值。
列表中包含的最佳实践是显而易见的,例如将PLC代码拆分为可以更轻松测试的模块,以及将PLC保持在RUN模式并确保在发生变化时发出警报,表明PLC未处理输入/输出数据,并使用PLC错误标志进行完整性检查。它还要求使用加密散列或校验和来测试PLC代码完整性的任何问题,禁用不需要的端口和协议,在HMI上记录PLC正常运行时间和硬停止,监控PLC内存使用情况并在HMI上显示它,并捕获关键警报。
据Fluchs介绍,PLC TOP20清单将持续发展和完善,最初的TOP20清单是1.0版文档,对评论和持续输入开放。
最好的防御:正确编程PLC
过去,大多数PLC并未连接到其工业控制系统或其他PLC之外的设备。然而,飞速发展的数字化改变了这一切,如今IT和OT网络之间曾经神圣的界限变得越来越模糊。
迄今为止,大多数PLC安全研究都集中在如何侵入PLC或使用恶意软件操纵它们,改变工业流程或破坏设备的梯形逻辑(基本上是用于编码PLC的编程语言)。研究人员已经为PLC开发了rootkit和蠕虫,最近在下一代安全功能中发现了新的漏洞,例如西门子在其某些SIMATICPLC中的内存保护。
但值得庆幸的是,大多数影响工业组织的物理攻击都没有直接触及PLC:它们是机会主义的IT威胁,最近的网络犯罪驱动的勒索软件已经破坏了他们的IT网络,并且在像燃油运输管道(Colonial Pipeline)这样的攻击案例中,导致了公司关闭其OT网络作为预防措施,并在美国部分地区造成了天然气短缺恐慌。
然而,最近佛罗里达州奥尔兹马市的水厂遭到破坏,表明网络攻击的潜在危险可能会导致物理后果:例如,大规模的饮用水中毒。入侵者似乎以某种方式获得了系统凭据,以通过TeamViewer应用程序远程控制设置,并将氢氧化钠或碱液的含量提高到危险的水平。虽然细心的操作员注意到了这种变化,并且工厂安装了其他数字护栏来阻止水系统受到污染,但在其他情况下可能会出现危险的错误。
“一个正确编程的PLC,”DigitalBond的首席执行官DalePeterson指出:“会阻止这种流氓设置,它会发出警报,嘿,这是试图将某些参数设置在适当范围之外。”
Peterson表示,PLC TOP20清单实际上更多是为了防止错误配置导致物理事件,因为操作员和技术人员的错误是工业系统网络中断的主要原因。
例如,监控PLC内存的建议可以标记任何异常活动,因为随着时间的推移,PLC倾向于以一致的水平使用内存。“如果您突然看到内存使用量激增并对此感到担忧,这非常有用。”他指出。
该功能目前可用于某些PLC。PLC TOP20名单引用了RockwellAllen-Bradley的RSLogix5000任务监控工具,其中包括设置其PLC的内存基线使用情况和跟踪任何趋势的功能。
图片
1.0版本的PLCTOP20清单
模块化PLC代码
监控操作模式
尽可能将操作逻辑留在PLC中
使用PLC标志作为完整性检查
对PLC代码使用加密和/或校验和完整性检查
验证计时器和计数器
验证和提醒配对的输入/输出
在PLC级别验证HMI输入变量,而不仅仅是在HMI
验证间接寻址
按功能分配指定的寄存器块(读/写/验证)
可信性检查工具
根据物理合理性验证输入
禁用不需要/未使用的通信端口和协议
限制第三方数据接口
定义PLC重启时的安全过程状态
总结PLC循环时间并在HMI上对其进行趋势分析
记录PLC正常运行时间并在HMI上对其进行趋势分析
在HMI上记录PLC硬停止和趋势
监控PLC内存使用情况并在HMI上对其进行趋势分析
为关键警报捕获漏报