罗克韦尔自动化 PLC 上的隐藏代码

工控安全 3年前 (2022) admin
804 0 0


执行摘要

Team82 和罗克韦尔自动化今天披露了有关罗克韦尔可编程逻辑控制器和工程工作站软件中两个漏洞的一些细节。

CVE-2022-1161 影响 Rockwell 的 Logix 控制器的多个版本,其 CVSS 得分为 10,这是最高的关键性。

CVE-2022-1159 影响其 Studio 5000 Logix Designer 应用程序的多个版本,CVSS 评分为 7.7,严重性高。

修改后的代码可以下载到 PLC,而他们工作站的工程师会看到该过程按预期运行,让人想起 Stuxnet 和 Rogue7 攻击。 

罗克韦尔为用户提供了检测此类隐藏代码的工具。 

敦促用户升级受影响的产品以利用这些检测功能。 

CISA 已发布警告用户有关这些问题严重性的建议。

罗克韦尔自动化也在此处和此处发布了公告。

介绍

可编程逻辑控制器 (PLC) 的成功隐身攻击是最罕见、最耗时且投资大的攻击之一。Stuxnet 的作者通过弄清楚如何隐藏在 PLC 上运行的恶意字节码来建立破解 PLC 的剧本,而对控制器进行编程的工程师只能看到他们的工程工作站上的正常情况。如果没有高级取证实用程序,就无法发现此类恶意代码的执行。

从概念上讲,利用与之前的研究相同:将字节码和文本代码解耦,修改一个,而不是另一个。例如,在对西门子 SIMATIC S7 PLC 的Rogue7攻击中,研究人员能够在将恶意字节码传输到 PLC 的同时修改文本代码。

Team82 决定在罗克韦尔自动化 PLC 平台上测试这些 Stuxnet 类型的攻击。我们的研究发现了两个漏洞,这些漏洞将公司的 Logix 控制器和用于工程工作站的 Logix Designer 应用程序暴露给攻击者,这些攻击者可以偷偷修改自动化流程。 

可编程逻辑和预定义变量驱动这些过程,对其中任何一个的更改都会改变 PLC 的正常运行及其管理的过程。具有修改 PLC 逻辑能力的攻击者可能会对工厂造成物理损坏,从而影响制造装配线的安全性、机器人设备的可靠性,或者在更戏剧性的例子中,正如我们在 Stuxnet 中看到的那样,攻击者可能会损坏离心机核设施中的铀浓缩核心。 

罗克韦尔自动化今天披露了这些漏洞,并开发了一种检测二进制和文本代码差异的工具。通过使用此工具,可以检测隐藏代码。

修改 PLC 逻辑的两个新漏洞

工程工作站的核心是一个完全工作的集成开发环境 (IDE) 和 PLC 程序的编译器。从高层的角度来看,在 PLC 上执行逻辑的过程包括四个主要步骤,如下所示:

罗克韦尔自动化 PLC 上的隐藏代码 

1. 开发:工程师将使用工程工作站的 IDE 功能以一种主要的自动化编程语言开发新的 PLC 程序,例如梯形图 (LD)、结构化文本 (ST)、功能块图 (FBD) 和其他。此代码称为文本代码。

2. 编译:一旦开发完成,工程师将希望将新逻辑传输到控制器。为此,工程工作站将根据目标 PLC 的固件和架构将程序编译为与 PLC 兼容的字节码。该代码称为二进制代码。

3. 传输:接下来,工程工作站将通过其专有协议与 PLC 通信并传输编译的字节码。此过程通常称为下载过程、下载逻辑或下载配置。下载术语是指PLC在这个过程中的观点(PLC下载代码)。

4. 执行:一旦字节码成功传送到 PLC,逻辑将被执行。

在我们对罗克韦尔自动化的工程工作站 Studio 5000 Logix Designer 及其下载逻辑过程机制的研究中,我们发现了两个漏洞,这些漏洞使我们能够将文本代码与二进制代码解耦并将其传输到 PLC,同时修改一个而不是修改其他。

第一个漏洞CVE-2022-1161(CVSS v3.1 基本分数:10.0/CRITICAL)被发现在 ControlLogix、CompactLogix 和 GuardLogix 控制系统上运行的受影响的 PLC 固件中。它允许攻击者将用户可读的程序代码写入与执行的编译代码不同的内存位置,从而允许攻击者修改一个而不是另一个。为此,攻击者可以使用Team82 先前披露的 Logix 控制器中的硬编码密钥漏洞与罗克韦尔自动化 PLC 通信并修改用户程序,而无需使用 Studio 5000 Logix Designer 软件。

 

罗克韦尔自动化 PLC 上的隐藏代码

攻击者可能会在 PLC 中隐藏代码,这些代码将在不被发现的情况下运行。

 

第二个漏洞CVE-2022-1159在 Studio 5000 Logix Designer 应用程序中发现,该应用程序在工作站上编译用户程序。此编译过程准备 Logix Designer 应用程序用户程序以下载到 Logix 控制器。要成功利用此漏洞,攻击者必须首先获得对运行 Studio 5000 Logix Designer 的工作站的管理员访问权限。然后攻击者可以拦截编译过程并将代码注入用户程序。用户可能不知道已经发生了这种修改。

 

罗克韦尔自动化 PLC 上的隐藏代码

劫持修改后的二进制代码与工程师认为在 PLC 上执行的原始代码的示例。

 

利用这两个漏洞的最终结果是相同的:工程师认为在 PLC 上运行的是良性代码;与此同时,PLC 上正在执行完全不同的潜在恶意代码。 

对逻辑流程或预定义局部变量的更改将改变 PLC 的正常操作,并可能导致新命令被发送到物理设备,例如由 PLC 控制的皮带和阀门。 

可编程逻辑驱动自动化过程,并且该逻辑对来自物理连接的变量输入和特定于过程的预定义局部变量执行操作。逻辑和变量在不同的 PLC 之间有所不同,并且每个 PLC 在流程中都有特定的作用。 

例如,在我们的概念验证中,我们修改了二进制代码以悄悄地将某些自动化流程变量(也称为标签)修改为不同的值。在现实生活中,这些更改的值可能会对自动化过程造成巨大损害(例如,控制引擎速度的标签)。

 

罗克韦尔自动化 PLC 上的隐藏代码

我们的 PoC 表明,虽然工程工作站显示良性代码,但在 PLC 上运行的实际代码是不同的,并且会悄悄地改变一些标签的值。

 

检测和缓解

Team82 与罗克韦尔自动化工程师密切合作,了解这些攻击的根本原因。因此,罗克韦尔工程师提出了复杂的解决方案,通过分析和比较 PLC 上运行的文本代码和二进制代码来检测其 PLC 上运行的隐藏代码。如果检测到不匹配,该工具将提醒两者之间的差异,表明隐藏代码正在 PLC 上运行,如下图所示。

 

罗克韦尔自动化 PLC 上的隐藏代码

为了利用这些检测功能,资产所有者被指示升级到:

Studio 5000 V34 或更高版本

Logix 5580、5380、5480、GuardLogix 5580 和 Compact GuardLogix 5380 控制器固件的对应版本


参考链接:https://claroty.com/2022/03/31/blog-research-hiding-code-on-rockwell-automation-plcs/

原文始发于微信公众号(IRT工业安全红队):罗克韦尔自动化 PLC 上的隐藏代码

版权声明:admin 发表于 2022年4月2日 上午7:57。
转载请注明:罗克韦尔自动化 PLC 上的隐藏代码 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...