我们很高兴能推出一系列技术分析博客,重点介绍可以利用我们的先进威胁检测技术识别和修复的各种 CVE(常见漏洞和暴露)。所有研究均由参加OPSWAT 网络安全奖学金项目的研究生完成,该项目于 2023 年 12 月启动。
在本博客中,我们将介绍罗克韦尔 Micrologix CVE-2017-14469 以及企业如何抵御 CVE- 2017-14469 利用攻击。
罗克韦尔自动化 MicroLogix 1400 控制器
PLC (可编程逻辑控制器)是一种专为控制工业制造流程而设计的计算机。它用于关键基础设施领域,如装配线、机器监控、过程控制等。罗克韦尔自动化 MicroLogix 1400 控制器是一种模块化、可扩展的 PLC,具有高 I/O 数量、快速高速计数器和增强的网络支持功能,因此适用于各种应用。
14469
在罗克韦尔自动化 MicroLogix 1400 系列 B FRN 21.2 及更早版本中存在一个漏洞,允许攻击者读取和写入/改写设备上的敏感数据。包含命令的未经验证的特制数据包会修改用户定义的故障例程编号,导致设备意外停止执行。
国家漏洞数据库(NVD)已将此漏洞列为 "严重",并给出了最高的 CVSS(通用漏洞评分系统)分数。它的影响可能会严重影响设备的保密性、完整性和可用性,而不需要任何额外的身份验证。系统的可用性至关重要,尤其是在关键基础设施系统中,任何中断或停机都可能导致巨大的经济损失甚至实体损坏。这种 CVE 可通过触发控制器内的 "系统故障 "导致 PLC 功能停止,从而造成关键基础设施系统中断的风险。
脆弱性分析
故障的概念与程序设计中的异常非常相似。当故障发生时,指令的执行会停止,从而导致设备进入故障状态。故障可分为两类:用户故障和非用户故障。
清除故障的机制有两种:通过循环控制器电源自动清除故障,或通过用户故障例程手动清除故障。CVE-2017-14469 与第二种机制有关。为防止系统因用户故障而意外关闭或停止执行,定义了一个用户故障例程,以根据故障编号处理分配的故障,并在相应故障发生时执行。如果没有处理故障的例程,设备将停止执行并显示故障编号。设备正常运行时,用户故障例程的值设置为 0x00,只能在 0x03 至 0xFF 范围内配置,以便进行故障处理。
Rockwell Automation MicroLogix 1400 有三个模式开关位置:"编程"、"远程 "和 "运行"。编程 "和 "远程 "模式都允许向设备下载程序,同时也接受和处理传入的请求。但在运行模式下,设备只接受受限请求。在此漏洞中,如果设备处于运行模式,则无法利用此漏洞。
设备通过带有 PCCC 扩展的 CIP(通用Industrial 协议)进行通信。CIP 协议建立在以太网/IPIndustrial 协议)之上。数据包结构如下图所示:
从上图可以看出,没有指定用于验证的字段。这带来了巨大的挑战,因为设备无法区分攻击者的请求和用户的正常流量。
通常情况下,操作员可通过控制软件监控和更新设备配置。为了与设备通信,软件 会发送一个相应的请求,在 CIP PCCC 对象中填写受保护的键入逻辑写入或读取命令。在 CIP PCCC 协议格式中,命令由其命令代码和功能代码标识。
指令代码 | 功能代码 | 说明 |
0x0F | 0800 | 更改模式 |
0x0F | 0xAA | 受保护的键入式逻辑写入,有三个地址字段 |
0x0F | 0xA2 | 带三个地址字段的受保护键入逻辑读数 |
受保护的键入逻辑写入命令用于写入敏感文件,如状态文件、位文件、计数器文件和设备的其他配置。
设备在 CIP 数据包中使用三个地址字段来标识读写位置:文件类型、文件编号和元素编号。下面是一些示例值,用于识别受命令影响的配置文件位置:
文件类型 | 文件编号 | 元素编号 | 说明 |
0840 | 0020 | 0x1d | 状态文件 - 用户故障例程编号 |
0840 | 0020 | 0060 | 状态文件 - 主要错误代码 |
0840 | 0020 | 0050 | 状态文件 - 主要错误代码 |
但是,设备在处理请求时缺乏输入验证;写入命令中发送的数据未经验证,允许设置为任何无效值。
该漏洞主要由两个原因造成。首先,设备无法验证传入请求,使攻击者能够发送未经验证的请求来修改敏感设置。其次,设备对传入数据的验证不正确,导致设置变为无效状态。
要成功利用该漏洞,攻击者需要发送恶意请求,滥用受保护的键入逻辑写入命令,用无效值(如 0x01 或 0x02)覆盖状态文件中的故障例程编号。当故障例程编号被无效值覆盖,设备通过另一个 CIP 数据包切换到运行模式时,就会触发故障并停止执行。
漏洞利用
攻击可分为 4 个步骤。
- 通过以太网/IP 与设备建立连接,获取会话句柄。
- 发送恶意请求,覆盖故障例程编号。
- 伪造恶意 CIP 数据包,将 PLC 切换回运行模式,从而触发故障。
- 设备遇到故障并停止执行。
要与设备通信,攻击者必须通过与设备注册会话来启动连接,以获取会话句柄并用于持续通信。下面的代码演示了一个标准的会话注册请求:
随后,攻击者会使用先前获得的会话句柄制作一个请求,并将包含受保护键入逻辑写入命令的有效载荷封装到 CIP 数据包中,以覆盖故障例程编号。
最后一步是发送另一个 CIP 数据包,将设备切换到运行模式并触发故障。
如图所示,PLC 停止执行,漏洞被成功利用。
补救措施
OPSWATICS 安全产品专为抵御此类攻击而设计。 MetaDefender OT Security它是一种人工智能驱动的威胁检测和智能工具,可检测攻击者的任何异常请求,使管理员能够识别潜在威胁。
MetaDefender OT Security 具有以下功能,可改善 OT 环境的安全状况:
- 利用智能资产剖析快速发现和建立资产清单
- 主动和被动监控威胁和异常情况
- 具有集中自动补丁功能的远程补丁管理
- 通过全面的可定制仪表板管理结构化和简化的风险警报工作流程
- 全球、地区和行业监管合规报告
此外,MetaDefender OT Security 还可以与 MetaDefender Industrial Firewall以防止恶意请求影响OT Security 检测到的设备。MetaDefender Industrial Firewall 是保护关键任务 PLC、VFD、RTU 和其他工业资产的最后一道防线。它应用高度细粒度的设备访问策略并强制执行设备访问区域,确保未经授权的访问或更改不会影响关键硬件。
这两者结合在一起就形成了一个无缝的 IDPS(入侵检测和防御系统),可有效检测和防止任何异常网络连接、请求、通信等对网络造成影响。
MetaDefender OT Security 通过其资产可视性和强大的威胁检测功能,为关键基础设施提供重要保护。除了技术实力之外,OPSWAT 还为热衷于网络安全的个人提供了令人兴奋的工作机会。加入我们,塑造安全的未来,保护最重要的东西。在OPSWAT 探索各种职位和有影响力的项目,您的专业知识将为您带来切实的改变。让我们一起保护世界上最重要的系统。