1、PLC简介

PLC(Programmable Logic Controller)可编程逻辑控制器,是工业控制的核心部分。它是专为工业生产设计的一种数字运算操作的电子装置,其内部采用一类可编程存储器用于存储程序,执行逻辑运算、顺序控制、定时、计数与算术操作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程。作为工业自动化的一种典型应用,PLC最初是做为取代继电器线路、进行顺序控制为主而产生的,后来PLC厂家逐步增加了模拟量运算、PID功能以及更可靠的工业抗干扰技术等功能,并随着网络化的需求增加了各种通信接口。与此同时,伴随着现场总线技术和以太网技术的发展,PLC的应用范围越来越广。

PLC实质是一种专用于工业控制的计算机,其硬件结构基本上与微型计算机相同。主要组成部分为中央处理单元 CPU)、存储器、输入/输出接口电路、电源以及其他接口电路。中央处理器主要采用通用微处理器、单片机和双极型位片式微处理器三种类型具有逻辑与数学运算功能,协调整个系统的工作。存储器主要是用来存放系统中的逻辑变量、用户程序和监控及其他信息。输入/输出接口电路主要是指输入电路把输入信号隔离及电平转化和输出电路对PLC输出结果实施放大与电平转化并驱动现场设备。电源包含了系统、掉电保护及备用等电源。

图1典型PLC控制系统示意图

2、测试背景

2017年6月,按照《中华人民共和国网络安全法》有关要求,国家互联网信息办公室、工业和信息化部、公安部和国家认证认可监督管理委员会等部门联合发布《网络关键设备和网络安全专用产品目录(第一批)》,首次将PLC设备列为网络关键设备,明确要求对控制器指令执行时间≤0.08微秒的PLC设备,只有通过安全检测后方可销售。

2018年6月,国家互联网信息办公室等四部委又发布《承担网络关键设备和网络安全专用产品安全认证和安全检测任务机构名录(第一批)》,将CNCERT列为执行网络关键设备检测任务的机构之一。为了调研我国PLC的安全现状,CNCERT通过外部和内部委托测试的方式陆续对德国西门子、法国施耐德、美国罗克韦尔、日本欧姆龙、日本三菱、日本横河和瑞士ABB等厂商PLC设备进行安全检测,涉及相关厂商PLC系列如下表所示:

序号

厂商

系列

1

德国西门子

S7-400系列

S7-1500系列

S7-300系列

S7-1200系列

2

法国施耐德

M580系列

Quantum系列

M340系列

3

美国罗克韦尔

Micro 800系列

4

日本欧姆龙

CP系列

5

日本三菱

L系列

FX系列

6

日本横河

FA-M3R系列

7

瑞士ABB

AC800系列

3、测试依据

CNCERT在测试过程中,参照了相应国际标准、国家标准和权威机构对PLC安全性的要求。其中,主要依据IEC 62443《工业过程测量、控制和自动化网络与系统信息安全》、GB/T 33008.1-2016《工业自动化和控制系统网络安全可编程序控制器(PLC)第1部分:系统要求》和GB/T 30976.1-2014《工业控制系统信息安全第1部分:评估规范》三个关于PLC安全性的国内外权威标准。

4、测试过程

CNCERT在测试过程中,一方面利用ISA Secure国际权威认可的工业物联网安全测试平台Acheron,对PLC进行畸形报文测试和风暴攻击,同时监测PLC网络服务功能、I/O输出状态和控制功能,考察PLC的通信协议健壮性。另一方面对PLC的固件完整性验证功能、固件安全、账户安全、网络服务最小化、授权和访问控制功能、诊断和日志功能、时钟同步等进行测试,考察PLC在系统设计、实现和管理中存在的缺陷和弱点。

测试拓扑如图2所示:

图2 PLC安全性测试网络拓扑图

5、测试结果

5.1通信协议健壮性测试

CNCERT采用自主研发、国内第一款通过ISASecure国际权威认可的工业物联网安全测试平台Acheron对PLC设备进行协议健壮性测试。在测试过程中,基于对协议的深度理解,参考ISASecure CRT测试理念,通过Acheron向PLC发送大量的错误注入、结构变异、上下文异常及压力测试报文。同时组态编程使PLC输出固定波形的DO和AO信号,通过Acheron的I/O Monitor监测PLC设备在通信健壮性测试过程中PLC控制功能和DO和AO信号的抖动情况,监测PLC设备网络服务功能状态,考察PLC设备抵御各类风暴攻击和畸形报文的能力,挖掘协议组件在软件实现中存在的漏洞。

在测试过程中,我们发现多款型号PLC设备存在严重的拒绝服务漏洞,可导致PLC重启、宕机和控制功能完全失效。截至目前,已累计发现40余个0 Day漏洞,不仅涉及通用的TCP/IP基础协议(包括Ethernet、ARP、IP、ICMP、UDP、TCP六种协议),还包括Modbus、Ethernet/IP、S7、OMERONFINS、MMS等工控协议,对部分PLC,还涉及到FTP、SNMP和HTTP等网络应用协议。以上漏洞均被收录到CNVD国家漏洞库中,漏洞详细分布如下图所示:

图3 测试中发现的漏洞协议分布

(1)从图中可知,发现的漏洞中有20%为TCP/IP基础协议漏洞。这部分漏洞往往触发报文简单,而且攻击者不需要工业控制领域相关知识,只需采用常见的TCP/IP攻击手段,即可导致PLC设备拒绝服务。

(2)发现的漏洞中超过50%为工控协议漏洞。在工业控制领域,厂商会采用自定义的私有协议或在开放的工控协议中加入自定义功能码部分作为实际的工业控制协议。然而自定义的部分往往缺乏充分的安全测试。攻击者可通过工控领域的相关知识和对相关协议自定义部分逆向分析,进而精心构造畸形报文,挖掘相关协议组件中的漏洞。相关漏洞往往也会涉及使用该协议栈的多个系列工控产品,造成严重的危害。

(3)部分PLC除必要的业务端口外,还会在缺省状态下开启FTP、SNMP、HTTP等服务端口,增加了受到攻击的攻击面。在实际测试中,有超过20%的漏洞为相关网络应用漏洞。

(4)在通信协议健壮性测试过程中,我们还使用Acheron的I/O Monitor监测PLC控制功能和DO和AO信号的抖动情况。我们发现部分型号PLC设备在在测试中会出现I/O输出延时抖动较大的现象。

5.2 应用安全功能测试

主要对PLC设备的账户安全、固件安全、网络端口/服务开放等进行测试。测试PLC设备的程序保护、PLC下装保护功能;尝试损坏或修改的固件文件进行固件更新,测试PLC固件完整性验证功能;通过CNCERT自主研发的嵌入式固件安全深度检测工具对PLC的固件文件系统解压、敏感信息提取和漏洞关联分析,发掘系统内部深层次的功能逻辑隐患和安全漏洞;扫描PLC设备缺省状态开放的网络端口和服务,测试开放服务是否有严格的访问控制。

我们通过对众多厂商的PLC设备测试发现问题主要包括:

(1) 部分型号的PLC设备固件缺乏完整性验证功能,损坏或修改的固件文件仍能更新到PLC设备;

(2) 部分型号PLC的固件文件未加密;

(3) 部分型号PLC设备缺省状态下开启HTTP、FTP、SNMP等网络服务且缺乏有效的访问控制功能。

5.3 运维安全与审计功能测试

主要对PLC设备的日志和诊断功能、时钟同步等进行测试,测试PLC是否提供PLC设备的故障定位、故障处理指导和建议,提供系统与时钟源定时同步时间的功能。

6、漏洞修复与改进

本次测试中同时存在外部和内部委托测试。对于外部委托厂商,我们在测试结束后,会将测试结果反馈给委托厂商,指导厂商对相关漏洞进行修复,并对修复后的设备进行复测,直到所有测试项通过后,发放测试报告和认证证书,并持续进行PLC设备证后监督。

对于内部委托测试,我们将发现的漏洞上报CNVD漏洞库,由CNVD将有关漏洞告知PLC厂商。然而厂商是否对有关问题进行修复,漏洞修复后是否又引入新的安全问题无法进行持续监督。

声明:本文来自工业互联网安全应急响应中心,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。