System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及漏洞检测,具体涉及一种基于规则引擎的plc源代码的漏洞检测方法及装置。
技术介绍
1、随着互联网、物联网在工业生产领域的广泛应用,工业控制系统正面临越来越多的网络攻击,通过可编程逻辑控制器(plc)存在的各种漏洞获取工控系统关键信息,甚至能够通过网络攻击控制工控系统设备的运行,因此plc的漏洞检测已成为信息安全领域的关注热点。
2、目前的plc源代码的漏洞检测方法是将plc源代码与漏洞库中的漏洞进行匹配来确定plc源代码中存在的漏洞,不过由于漏洞库一般都是固定形式,难以进行修改、定制,进而难以灵活地满足不同的检测需求。
3、另外,当plc源代码出现逻辑性的问题时,容易导致跨域漏洞的出现,而目前的plc源代码的漏洞检测方法中,由于plc源代码和预设漏洞库的匹配程度不够高,可能会导致plc源代码中某些难以被检测到的逻辑性漏洞没有被检测到,进而导致跨域漏洞的出现。
技术实现思路
1、本申请的目的在于提供一种基于规则引擎的plc源代码的漏洞检测方法、装置、电子设备及计算机可读存储介质,可以解决上述
技术介绍
中存在的至少一技术问题。
2、为实现上述目的,本申请提供了一种基于规则引擎的plc源代码的漏洞检测方法,包括:
3、基于漏洞库配置规则引擎的安全规则,所述安全规则存储在所述规则引擎的规则库中,每个所述安全规则对应一个漏洞类型;
4、对plc源代码进行预处理,得到统一格式的数据结构文件;
5、基于所述数据结构文
6、若存在匹配成功的所述安全规则,则基于匹配成功的所述安装规则输出包括漏洞信息的文件。
7、可选地,所述数据结构文件包括:符号表、代码语法树、控制流图和数据流图,所述符号表包含所述plc源代码中定义的所有变量、函数、标签的信息,所述代码语法树用于描述所述plc源代码的语法关系,所述控制流图用于描述所述plc源代码的控制流程,所述数据流图用于描述所述plc源代码中数据的流动关系。
8、可选地,所述数据结构文件还包括:语义分析结果,所述语义分析结果包括类型检查、作用域分析和错误检测的结果。
9、可选地,所述数据结构文件包括控制流图,所述控制流图切片得到切片控制流;
10、所述基于所述数据结构文件与所述规则引擎的各所述安全规则进行匹配,包括:
11、将所述切片控制流与各所述安全规则进行匹配。
12、可选地,所述规则引擎包括执行层和计算层,所述执行层将输入的所述plc源代码进行预处理,得到所述数据结构文件,所述计算层用于基于所述数据结构文件与各所述安全规则进行匹配并根据匹配到的所述安全规则输出漏洞类型,所述执行层根据所述计算层输出的漏洞类型输出决策列表。
13、可选地,所述计算层配置有若干场景,每一所述场景至少对应一个所述安全规则。
14、可选地,若存在匹配成功的所述安全规则,所述规则引擎发出警报。
15、为实现上述目的,本申请还提供了一种基于规则引擎的plc源代码的漏洞检测装置,包括:
16、配置模块,用于基于漏洞库配置规则引擎的安全规则,所述安全规则存储在所述规则引擎的规则库中,每个所述安全规则对应一个漏洞类型;
17、预处理模块,用于对plc源代码进行预处理,得到统一格式的数据结构文件;
18、匹配模块,用于基于所述数据结构文件与所述规则引擎的各所述安全规则进行匹配;
19、输出模块,用于若存在匹配成功的所述安全规则,则基于匹配成功的所述安装规则输出包括漏洞信息的文件。
20、为实现上述目的,本申请还提供了一种电子设备,包括:
21、一个或多个处理器;
22、存储器;
23、以及一个或多个程序,其中一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如前所述的漏洞检测方法的指令。
24、为实现上述目的,本申请还提供了一种计算机可读存储介质,包括计算机程序,所述计算机程序可被处理器执行以完成如前所述的漏洞检测方法。
25、本申请实施例中,基于漏洞库配置规则引擎的安全规则,使每个安全规则对应一个漏洞类型。在完成规则引擎的建立后,即可基于规则引擎对plc源代码进行漏洞检测。通过基于规则引擎对plc源代码进行漏洞检测,规则引擎中的安全规则可以根据实际需求进行修改、定制,从而可以更加灵活地满足不同的检测需求。
本文档来自技高网...【技术保护点】
1.一种基于规则引擎的PLC源代码的漏洞检测方法,其特征在于,包括:
2.如权利要求1所述的基于规则引擎的PLC源代码的漏洞检测方法,其特征在于,所述数据结构文件包括:符号表、代码语法树、控制流图和数据流图,所述符号表包含所述PLC源代码中定义的所有变量、函数、标签的信息,所述代码语法树用于描述所述PLC源代码的语法关系,所述控制流图用于描述所述PLC源代码的控制流程,所述数据流图用于描述所述PLC源代码中数据的流动关系。
3.如权利要求2所述的基于规则引擎的PLC源代码的漏洞检测方法,其特征在于,所述数据结构文件还包括:语义分析结果,所述语义分析结果包括类型检查、作用域分析和错误检测的结果。
4.如权利要求1所述的基于规则引擎的PLC源代码的漏洞检测方法,其特征在于,
5.如权利要求1所述的基于规则引擎的PLC源代码的漏洞检测方法,其特征在于,所述规则引擎包括执行层和计算层,所述执行层将输入的所述PLC源代码进行预处理,得到所述数据结构文件,所述计算层用于基于所述数据结构文件与各所述安全规则进行匹配并根据匹配到的所述安全规则输出漏
6.如权利要求5所述的基于规则引擎的PLC源代码的漏洞检测方法,其特征在于,所述计算层配置有若干场景,每一所述场景至少对应一个所述安全规则。
7.如权利要求1所述的基于规则引擎的PLC源代码的漏洞检测方法,其特征在于,若存在匹配成功的所述安全规则,所述规则引擎发出警报。
8.一种基于规则引擎的PLC源代码的漏洞检测装置,其特征在于,包括:
9.一种电子设备,其特征在于,包括:
10.一种计算机可读存储介质,其特征在于,包括计算机程序,所述计算机程序可被处理器执行以完成如权利要求1至9任一项所述的漏洞检测方法。
...【技术特征摘要】
1.一种基于规则引擎的plc源代码的漏洞检测方法,其特征在于,包括:
2.如权利要求1所述的基于规则引擎的plc源代码的漏洞检测方法,其特征在于,所述数据结构文件包括:符号表、代码语法树、控制流图和数据流图,所述符号表包含所述plc源代码中定义的所有变量、函数、标签的信息,所述代码语法树用于描述所述plc源代码的语法关系,所述控制流图用于描述所述plc源代码的控制流程,所述数据流图用于描述所述plc源代码中数据的流动关系。
3.如权利要求2所述的基于规则引擎的plc源代码的漏洞检测方法,其特征在于,所述数据结构文件还包括:语义分析结果,所述语义分析结果包括类型检查、作用域分析和错误检测的结果。
4.如权利要求1所述的基于规则引擎的plc源代码的漏洞检测方法,其特征在于,
5.如权利要求1所述的基于规则引擎的plc源代码的漏洞检测方法,其特征在于,所述规则引擎...
【专利技术属性】
技术研发人员:万振华,
申请(专利权)人:深圳开源互联网安全技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。