HMI, OI

如何通过设计来阻止Oldsmar HMI攻击

Oldsmar的网络安全攻击是由于在人机界面(HMI)上缺乏深度防御。一个好的安全设计协议可以帮助避免这种情况,但它需要从根本上重新考虑。

由杰里米·摩根 2021年4月19日
礼貌:工业后卫

现在,围绕佛罗里达州奥德斯玛水务设施的网络攻击尘埃落定,每个人都在进行推销,现在是强调一些迄今为止还没有真正讨论过的更基本问题的好时机。

佛罗里达水袭击的真正可怕之处在于它没有一个外部接入点,也不是它的配置很差,允许有人进入。这些都是明显的控制失误,也是最容易修复的。不,佛罗里达水黑客事件的真正问题是人机界面(HMI)本身缺乏深度防御,这带来了一些根本性的缺陷。这些漏洞为心怀恶意的内部人员,甚至是疲惫不堪的操作人员打开了一扇门,让他们做一些不应该做的事情。当然,这对这一领域的老兵来说并不震惊,但这是我们在它改变之前不能停止说的话。在这些情况下,设计上的安全性应该是最重要的。

ICS安全社区经常讨论如何在没有考虑安全性的情况下设计这些东西,但通常是参考协议或可编程逻辑控制器(PLC)。对人机界面设计的批评较少,因为它更像是一个项目,而不是一个产品。

但是,没有理由这一点。有一些非常好的HMI设计师在那里谁认真对待这一点,并知道如何做到这一点。根据简单的观察,它已经很容易发现这些监督。这里需要在这里完成任何激进术。所有所需的是HMI设计获得了关注的关键基础设施组织委员会新的控制系统或升级现有的。

一个很容易引用的框架解决了佛罗里达人机界面设计中的一些主要问题,如公开信息中所描述的OWASP前10位主动控制.我们今天不会一一讨论这10个问题,因为基于这个案例研究的证据,我只能指出其中的两个,但这应该有助于我们理解如何通过设计控制来选择基本的主动安全,从而为每个人在未来的道路上节省一些主要的麻烦。

验证所有输入

OWASP这样描述:“输入验证是一种编程技术,它确保只有格式化正确的数据才能进入软件系统组件。”

这进一步分为两种类型的有效性检查:语法和语义。语法在这种情况下不适用,因为攻击者将一个数值输入到一个数值中。也许他们尝试过其他数据类型,但被阻止了,但我们不会这样做。我们确实知道在语义上有可能出现错误。语义是关于确保只接受有效的值或范围。

表面上,没有明显的理由允许这种腐蚀性化学物质的HMI增加100倍正常水平。该领域的一些知名专家很快指出,简单的物理和下游警报系统可以防止这成为一个实际问题,那么为什么允许它全部呢?这样的错误可能会导致其他设计糟糕的输入控制,而我们可能就不会这么幸运了。

同样,这些物理原理是否适用于干旱条件,或者当正常的热假设不再适用时?许多工程灾难都发生在工程师认为某些事情永远不会发生的时候。很容易看出HMI设计中糟糕的输入控制会导致更糟糕的事件。验证不仅使攻击者的操作变得更加困难,而且还使普通操作者免受人为性能事件的影响。

强制访问控制

OWASP这样描述:“访问控制(或授权)是授予或拒绝来自用户、程序或进程的特定请求的过程。”

这需要更多的假设,但请容忍我。

为了理解为什么我在这种特殊情况下对这种控制感到不满,我们需要先解释一下控制室通常是如何操作的,以及控制的层次。首先,让我们假设这是一个典型的24小时有人操作的操作中心,所以问题中的人机界面可能一直在登录。显然是在实际袭击期间。在最好的情况下,操作员在换班时登出和登出,但这并不一定是常态。在很多情况下,它是一个登录到操作系统级别的每个HMI的共享帐户。

其次,可以假设HMI设置了几个级别。假设有一个默认的读级别,可以看到屏幕,但不能对其进行操作,这应该是默认的授权上下文。然后是操作员级别,这里可以输入正常级别和输入,以及工程师级别,这里不仅可以操作内容,还可以对屏幕进行实际更改或重写默认边界。

最后,通常还有一个管理员角色,尽管系统所有者可能知道也可能不知道这个级别的存在。它通常是构建系统的集成商的领域,仅用于最极端的情况。这些角色通常是共享的,特别是在过去5-7年没有委托的任何事情上。

这通常应该工作的方式是HMI屏幕留在默认读取级别。这允许操作员将PC登录,没有屏幕保护程序和其他正常的公司控件到位。这是操作员可以做到他们的工作,这是始终观察系统。只有在需要采取行动时,操作员应该将自己提升到实际操作员级别。请记住,运营商在以几分钟内测量的事件范围内,任何需要更快的响应,应由控制系统本身或安全系统作为最后的安全措施。这意味着操作员需要做的事情可以承受快速密码条目。然后,HMI应在不活动后及时返回只读,类似于公司方面的锁屏幕发生的情况。

现在,它是完全可能的攻击者等待系统升高到操作员模式,这仍然应该没有足以提升高(理想情况下应该需要工程师角色)的化学水平,或者也可能是连续记录的因为只有很多需要持续清除的警报条件。但是,它实际上可能在该系统中没有在这个系统中实现正确的基于角色的授权,或者保护控制,如超时回到读取的情况下不使用。

如果我们能回到过去,并应用这两个控件,虽然不安,作为宝贵的市政供水系统很容易访问,恐慌的水平将会更低一些,如果适当的系统设计从一开始就被一个基本组件。像验证所有输入这样简单的事情甚至会阻止攻击者将值设置得如此之高。或者,如果操作面板设计了适当的访问控制,在进行任何类型的修改之前都需要任何授权,更不用说进行危险级别的修改,那么这个看似不成熟的黑客的攻击就会被阻止。

Perhaps with more in-depth knowledge and interviews, we could glean even more lessons in this particular cybersecurity failure, but even with limited data, it’s pretty easy to see how picking a straightforward and well-designed set of principles to aid a security by design program can save you a lot of headaches down the road.

-本文最初发表于工业后卫的网站工业的后卫是CFE Media的内容合作伙伴。由CFE Media网站内容经理Chris Vavra编辑,cvavra@cfemedia.com


杰里米·摩根
作者生物:杰里米·摩根,首席解决方案工程师,工业卫士