PDF下载
基于动态污点分析的工控设备硬件漏洞挖掘方法

​王乃青

安天科技集团股份有限公司

摘要: 现代科学技术的快速发展促进了工控系统网络互联互通,可实现对生产期间所用设备的集中管理,整个系统的开放性比较强。但是在这一发展环境中,工控系统运行期间也存在一定安全风险,受到网络环境开放性影响容易遭到网络攻击,要想提供安全、稳定的工控设备运行条件,并充分发挥工控设备硬件的功能作用,需要加强设备管理,做好漏洞挖掘工作。本文主要对基于动态污点分析的工控设备硬件漏洞挖掘方法进行了探究,以期为工控设备硬件漏洞处理和系统完善提供参考。
关键词: 动态污点分析;工控设备硬件;漏洞挖掘;挖掘方法
DOI:10.12721/ccn.2023.157556
基金资助:
文章地址:

工业生产控制系统的安全稳定是保障生产作业效率的关键,但由于工控设备硬件在设计或制作期间受到多种因素的影响,导致相关设备在实际使用期间存在一些漏洞问题,若没有进行漏洞的及时修复处理,则会影响工业控制系统的正常运行。要想控制漏洞造成的影响,则应注重对漏洞问题进行深入挖掘,实现漏洞挖掘技术的合理选择与应用,便于对各类漏洞问题的针对性处理,有利于提高工控设备运行效益和系统安全。

 1.动态污点分析步骤

动态污点分析是在程序运行期间对数据的变化情况进行动态分析,可实现污点数据的跟踪处理,并进行数据传播路径的详细记录,便于数据分析。该分析方法在实际应用过程中,先要进行污点源标记,主要是对目标程序运行中所依赖的数据进行污点标记,再进行污点传播,污点源数据在参与程序运算的过程中会对各项运算和最终结果造成污染,受到污染的所有数据都会被标记为污点数据。最后进行污点检查,通常会在特定条件下对系统中的内存变量进行检查,确定是否存在污染数据。在进行污点分析粒度选取过程中一般会根据污点数据的类型进行针对性选择,其关系到最终结果的分析精度。
2.引导式模糊测试

2.1引导式模糊测试原理

模式测试在工控设备硬件漏洞挖掘中的价值作用不可替代,是促进漏洞挖掘实现的关键,会根据目标程序分析要求生成测试用例,而高精度测试用例的生成这是发挥模糊测试功能的核心。PLC固件运行期间主要通过工控协议进行信息传递,内部协议服务则为相关处理程序,本文在基于动态污点分析的工控设备硬件漏洞挖掘方法研究时将工控协议作为挖掘载体,运用引导式模糊测试方法进行相关操作。引导式模糊测试方法在实际应用过程中主要是确定污点源中的敏感字段,将其作引导式信息,并基于敏感字段生成多种漏洞触发测试用例,监测被测目标的运行状态,而后进行模糊测试分析,根据测试报告确定漏洞类型,该测试方法的精准度较高。整个过程中引导式信息的作用较为凸显,可保证生成的模糊测试用例具有一定针对性,改善以往盲目生成测试用例中存在的问题,能够缩小漏洞分析范围,提高分析精度,整体测试效率得到提升。

2.2敏感字段量化规则

为保证引导式信息准确可靠,本文提出了专门的敏感字段量化规则,其主要是以污点权重为基础,实际进行污点跟踪时,若发现出现危险操作指令,则需要对其操控的TDU进行相关标记并分析危险权重,了解危险操作指令造成工控协议漏洞的概率,并根据具体情况进行权重累加。通常情况下,在污点源中的TDU进入到危险操作指令后会进行危险权重叠加,收集相关信息数据可生成专门的危险权重表,而后将危险权重字段作为重点测试部位,具体操作过程中对该字段的引导式信息进行变异,而后进行敏感字段模式测试工作。

3.基于动态污点分析的工控设备硬件漏洞挖掘设计

3.1PLC_TaintFuzzer 系统构建

 通过接口外部进行信息、文件、口令的输入输出,整个交互过程是漏洞触发的必要条件,外部输入主要为网络协议,在进行漏洞挖掘的过程中则是对PLC固件中的协议服务进行模糊测试分析。通常情况下,Modbus、FTP服务中存在漏洞的概率比较大,而且漏洞的类型比较多,要想实现对各种协议服务中数据信息的跟踪分析与处理,这应构建专门的跟踪平台。PLC_TaintFuzzer 系统的合理构建可满足上述要求,其主要涉及到仿真环境模块和模糊测试模块两部分,可以快速生成引导式信息和异常元素模式测试用例。该系统在运行期间先要进行污点源标记、跟踪和敏感字段确定,而后生成引导式信息测试用例,再按照具体流程进行模糊测试。

3.2漏洞挖掘实验对比

除了构建PLC_TaintFuzzer 系统之外,本文还设置了基于 Peach 的漏洞挖掘系统,并进行二者的功能性对比分析,其中Peach测试工具生成的测试用例个数为25714,PLC_TaintFuzzer系统生成的测试用例个数为2268,虽然前者的平均测试时间要比后者所用时间少,但是前者没有触发协议漏洞,具体实验结果如表1所示。

表 1 基于Peach与基于PLC_TaintFuzzer的漏洞挖掘实验数据对比

测试工具

测试用例数 / 个

测试时间 /min

漏洞触发数 / 个

Peach

25714

8h50

0

PLC_TaintFuzzer

2268

4h32

3

从实验结果可知,Peach测试工具不但需要生成较多测试用例个数,而且漏洞触发精准性差,整体漏洞挖掘效果得不到保障。而PLC_TaintFuzzer系统的测试用例个数较少,触发的漏洞比较多,虽然平均测试时间较久,但是整体的漏洞挖掘能力得到提升,而且漏洞挖掘效率较高。由此可见,利用动态污点分析方法生成引导式信息,量化敏感字段,可以快速进行漏洞挖掘,该技术方法的应用可行性比较强。

结语:将动态污点分析方法应用到工控设备硬件漏洞挖掘工作中,可利用敏感字段量化规则进行PLC固件中的协议服务漏洞挖掘分析,与基于Peach 的漏洞挖掘方法相比整体效率和挖掘能力得到了显著提升,而且无需生成较多的测试用例。在实际应用该方法时还应注重对技术方法的持续改进与优化,尽量减少测试用例的生成数量,精简测试用例空间,保证工控设备硬件漏洞挖掘结果的准确性。

参考文献:

[1]黄冬秋,韩毅,杨佳庚等.基于二进制程序的动态污点分析技术研究综述[J].广州大学学报(自然科学版),2020,19(02):57-68.

[2]石加玉,彭双和,石福升,李勇.基于动态污点分析的程序脆弱性检测工具设计与实现[J].信息安全研究,2022,8(3):301-310.

[3]段斌,李兰,赖俊,等.基于动态污点分析的工控设备硬件漏洞挖掘方法研究[J].信息网络安全, 2019(4):8.

[4]姚成龙.基于动态污点分析和改进遗传算法的漏洞挖掘技术研究[D].安徽大学,2018.

[5]邓其贵,韦彬贵.基于污点分析的工控系统漏洞挖掘技术研究[J].大众科技, 2019, 021(004):5-7,4.