霍尼韦尔 Experion 过程知识系统 (PKS) 是一种在全球和不同行业中广泛采用的 DCS。 这个庞大的自动化平台集成了来自整个环境的控制器的数据,提供了全厂流程的集中视图。 该系统主要使用 C200、C300 和 ACE 控制器,可通过霍尼韦尔工程工作站软件 Experion PKS Configuration Studio 进行编程。 然后可以将逻辑(开发为框图)从工程工作站下载到 DCS 中的不同组件。

霍尼韦尔 Experion PKS 控制器

分布式控制系统通常被网络安全研究人员视为黑匣子。 披露的DCS漏洞相对较少,因为设备难以获得。 与许多其他类型的工业设备一样,它不容易在线购买,而且购买和配置可能非常昂贵。 工业控制系统和 SCADA 设备经常出现这种情况,它为新活跃的 ICS 安全研究人员提供了一个重要的进入壁垒,他们更有可能检查市场领先供应商的商品设备。

技术细节

Honeywell Experion PKS 控制器和模拟器通过 TCP 端口 55553 和 55555 与 Experion PKS Configuration Studio 工程软件通信,用于编程目的。这些端口用于与使用专有霍尼韦尔工程协议的 Experion PKS Configuration Studio 软件套件进行通信。该套件中的应用程序之一是 Honeywell Experion Control Builder (contbldr.exe),它负责对控制器中运行的逻辑进行编程。

与每个 SCADA/DCS 控制器一样,可以通过执行下载代码程序来更改当前逻辑。作为此机制的一部分,Honeywell Experion Control Builder 软件将编译后的逻辑传输到设备,然后执行它。

值得注意的是,该逻辑被编译为控制器的 CPU 机器码(例如 x86 字节码),这可能会带来安全风险。通常,沙箱或其他类型的安全控制会阻止本机代码执行。在这种情况下,Experion PKS 在执行之前缺乏对恶意代码的沙箱、内存保护或其他限制。

例如,沙箱是关键的网络安全控制措施,尤其是在 ICS 领域;可执行文件在隔离区域中执行,这将其功能(例如访问系统资源)限制在最低限度。它们是防止未经测试或不受信任的代码影响进程,并限制恶意软件和针对已知和未知漏洞的漏洞利用的传播的关键工具。

在 Experion PKS 的情况下,Team82 发现可以模仿下载代码过程并使用这些请求上传任意 DLL/ELF 文件(分别用于模拟器和控制器)。然后设备加载可执行文件而不执行检查或清理,使攻击者能够上传可执行文件并远程运行未经授权的本机代码而无需身份验证。

通常,端口 55553 和 55555 不会暴露在 Internet 上。为了攻击这些漏洞,攻击者必须找到另一种方法来在 OT 网络上立足。在这种情况下,可以利用 Team82 发现的两个漏洞不受限制地执行本机代码。通过对 DCS 的这种访问,攻击者可以通过修改进程值来严重破坏操作,或者使用 DCS 作为使用恶意软件或漏洞对网络发起进一步攻击的基础。

漏洞

控制组件库 (CCL) 是加载到控制器以执行特定功能的控制组件库。我们可以将 CCL 库视为扩展,使开发人员能够将特定于应用程序的功能与标准库不支持的外部功能块一起使用。

CCL 格式是 DLL/ELF 文件的包装器。它的前四个字节是可执行文件(DLL/ELF)的 CRC32。接下来的 128 个字节表示库的名称(用空值包装),文件的其余部分是实际包装的 DLL/ELF 文件。封装的 DLL/ELF 文件是块代码库,用于 Control Builder 软件。解析 CCL 文件时,没有安全验证,例如签名检查或库名称清理。因此,攻击者可以执行目录遍历攻击并将他们希望的任何 DLL/ELF 文件上传到遥控器上的任意位置。

此外,在我们的研究中,我们发现在某些情况下,发送到终端设备的 CCL 文件会立即执行,而无需执行安全检查(例如签名检查)。该协议不需要身份验证,这将防止未经授权的用户执行下载操作。因此,任何攻击者都可能使用此库下载功能在未经身份验证的情况下远程执行代码。为此,攻击者可以使用该协议将他选择的 DLL/ELF 下载到控制器/模拟器,并立即在终端设备上执行。

Team82 的概念验证展示了攻击者如何实现未经授权的远程代码执行。 此图中使用的系统是 Honeywell Experion Controller Simulator。

概括

霍尼韦尔今年早些时候在许多更新和补丁中解决了这些漏洞。所有在其环境中使用受影响控制器的 Experion PKS 客户,无论他们是否使用 CCL,都会受到影响。已经在网络上的攻击者可以通过将带有恶意代码的修改过的 CCL 加载到将执行攻击者代码的控制器来影响进程。

霍尼韦尔对这些关键漏洞的反应应该得到认可。为了解决 Team82 私下披露的缺陷,霍尼韦尔为 CCL 添加了加密签名,以确保它们未被篡改。现在,每个 CCL 二进制文件都有一个关联的加密签名,该签名在加载 CCL 时发送到控制器;霍尼韦尔在其公告中表示,该签名在使用 CCL 之前会得到验证。

霍尼韦尔已为受影响的 Experion PKS 版本提供补丁,包括服务器软件补丁和控制器固件修复。两者都必须应用才能完全缓解这些漏洞。

已发布或将发布 R510.2(Hotfix10,已发布)和 R501.6 版本的修补程序。 R511.5 版本还解决了所有这些漏洞。其他 Experion 版本没有可用的补丁,并敦促这些用户迁移到最新的版本。

参考链接:https://www.claroty.com/2021/10/05/blog-research-target-dcs-finding-fixing-critical-bugs-in-honeywell-experion-pks/