支持多元协议变量的组合表达式的匹配规则引擎制造技术

技术编号:25395829 阅读:18 留言:0更新日期:2020-08-25 23:01
支持多元协议变量的组合表达式的匹配规则引擎涉及信息技术领域,本发明专利技术由规则定义器、词法解析器、语法解析器、编译器和二进制代码生成器组成;规则定义器由规则输入器、规则检测引擎和规则输出器组成;本发明专利技术改进了扩展伯克利包过滤技术,使得匹配规则引擎的规则语法可定制,并且支持函数嵌套调用、函数变量引用、缓存范围偏移、嵌套表达式求值;本发明专利技术采用JIT技术,动态编译为机器码运行,可媲美C程序的执行效率,具备良好的系统移植性。

【技术实现步骤摘要】
支持多元协议变量的组合表达式的匹配规则引擎
本专利技术涉及信息
,特别是信息安全

技术介绍
随着网络通信技术和信息化技术的快速发展,互联网已渗透到人们工作、学习、生活的各个领域。在互联网深刻地改变着人们现实生活的同时,也带来了前所未有的网络安全和信息安全问题。当前,全球网络安全形势异常严峻,网络攻击、渗透提权、病毒、木马、勒索敲诈等网络威胁日益泛滥,以APT等为代表的网络攻击日益提高;个人信息与商业数据遭遇大规模泄露与违规利用,针对关键信息基础设施的恶意网站攻击频发,各国在网络空间对抗态势进一步加剧。面对网络安全和信息的严峻形势,如何采取有效措施保障网络信息的安全健康发展,已经成为各国政府与企业亟待解决的重大课题。规则匹配引擎是一种嵌入在应用程序中的组件,可以对僵尸、木马、蠕虫、病毒和敏感信息进行检测,能检测出网络威胁信息并上报,有效保证网络信息的安全健康发展。规则匹配引擎实现将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。具体执行可以分为接受数据输入、解释业务规则、根据业务规则做出业务决策几个过程。使用规则匹配引擎可以把复杂、冗余的业务逻辑同应用支撑系统分离开,做到系统架构的可复用移植。规则匹配引擎通常允许用户在不重新启动系统或部署新的可执行代码的情况下调整规则,从而实现业务处理能力的变化。规则匹配引擎旨在成为一个提供更高级别抽象的工具,以便用户可以更少地关注开发细节。现有市场上采用规则匹配引擎的安全产品,其规则语法对表达式组合、复杂表达式的表达能力存在不足,缺乏多种协议变量组合逻辑判断能力、缺乏函数嵌入执行和复杂表达式动态求值的能力。在本专利技术中,区别于现有技术提出了规则检测引擎对报文与恶意代码监测的匹配规则定义了一套语法标准规范,明确了组合表达式和函数嵌入的语法描述,对复杂的运算符增加了别名功能,规则更加简单明了,易于理解和编辑。常规的规则匹配引擎更多是按照预定义的语法树解释执行,面向多核系统缺少优化,其执行效率不高,而基于虚拟机和即时编译器的执行模式能够提供更高的处理性能。扩展伯克利包过滤技术是基于著名的伯克利包过滤技术的进化项目。Ebpf即扩展伯克利包过滤在BPF即伯克利包过滤的基础上扩展了虚拟机的指令,支持了函数调用,并对JIT即即时编译器做了优化。当扩展伯克利包过滤技术在linux内核3.17版被正式引入后,逐步统一了内核追踪、应用性能调优与监控、流量控制、安全检测等处理流程。同时,扩展伯克利包过滤技术提供了良好的接口设计,具有高度扩展性和灵活性。开发人员通过编写扩展伯克利包过滤技术程序,将其编译为扩展伯克利包过滤技术对象文件,然后将其动态加载到内核,即可实现业务能力的扩展。反之亦可以动态卸载业务功能。比如在Linux的防火墙系统中,开发人员借助扩展伯克利包过滤技术来实现IPTables的过滤模块,然后动态加载到操作系统内核中,即可实现对特定报文的过滤需求。IPTABLES是与最新的3.5版本Linux内核集成的IP信息包过滤系统。扩展伯克利包过滤技术为内核而生,其用户态程序仅仅作为配置管理工具使用,这大大限制了它的应用范围。尤其是基于零拷贝的用户态网络功能设备的开发,如防火墙、DPI、IDS/IPS。因此,需要研究在用户态运行的扩展伯克利包过滤技术机制,即用户空间的扩展伯克利包过滤技术虚拟机,我们称之为用户态的扩展伯克利包过滤技术。现有技术中扩展伯克利包过滤技术程序的入口函数只支持一个参数,且不支持对不连续的内存空间的检测。当需要对多个协议变量进行组合检测时,由于各协议变量并不在同一个连续的地址空间内,扩展伯克利包过滤技术程序是无法正确执行。现有技术中扩展伯克利包过滤技术程序在编译时无法确定常量串将来会加载到内存的哪个地址,因而规定ebpf程序源代码中不能直接嵌入常量数据串,包括:字符串、正则表达式和二进制串以及字符与二进制混合串。但是,在安全匹配规则中常常需要输入待匹配的关键词串或正则表达式串或二进制串,这就导致现有技术的扩展伯克利包过滤技术机制无法满足多元协议变量组合的规则匹配的需求。现有技术说明即时编译器:通常情况下,Java程序最初都是被编译为字节码,通过解释器进行解释执行,解释执行能够获得更好的启动时间。某些被频繁执行的方法或者代码块,会被JVM认定为“热点代码”。在运行时JVM会把这些热点代码编译成与本地平台相关的机器码,并且进行各种层次的优化,以提高执行效率。完成这个任务的编译器称为即时编译器。Ragel介绍:Ragel是个“状态机编译器”,是用来从某定义编译出状态机的工具,是个很强大的基于正则表达式和状态机的超级词法分析器。可以用它来生成强大的词法分析器,用来分析诸如配置文件、规则文件、协议文件等。Lemon介绍:Lemon是一个LALR语法分析器生成器。与GNUBison和Yacc不同。为了减少编写代码的错误,它使用了一种不同的语法。Lemon使用了一种更为高级的分析引擎,LALR的好处就是产生的状态表比较小,运行速度快,并且该引擎是可重入的和线程安全的。更进一步的,Lemon实现了能够消除资源泄漏的特性,适合于要求长时间稳定运行的程序。Clang是一个C、C++、Objective-C和Objective-C++编程语言的编译器前端。它采用了底层虚拟机LLVM作为其后端。它的目标是提供一个GNU编译器套装(GCC)的替代品。作者是克里斯·拉特纳,在苹果公司的赞助支持下进行开发,而源代码授权是使用类BSD的伊利诺伊大学厄巴纳-香槟分校开源码许可。Clang项目包括Clang前端和Clang静态分析器等。ELF文件由4部分组成,分别是ELF头(ELFheader)、程序头表(Programheadertable)、节(Section)和节头表(Sectionheadertable)。实际上,一个文件中不一定包含全部内容,而且它们的位置也未必如同所示这样安排,只有ELF头的位置是固定的,其余各部分的位置、大小等信息由ELF头中的各项值来决定。
技术实现思路
鉴于现有技术的不足,本专利技术提供的支持多元协议变量的组合表达式的匹配规则引擎由规则定义器、词法解析器、语法解析器、编译器和二进制代码生成器组成;规则定义器由规则输入器、规则检测引擎和规则输出器组成;规则输入器接收来自计算机输入设备输入的规则文本,当规则文本符合规则检测引擎所定义的规则规范时,规则检测引擎按照规则规范将规则文本转化成即时编译器能够识别的编译器文本,由规则输出器将编译器文本存储成预编译文本;当规则文本不符合规则检测引擎所定义的规则规范时,规则检测引擎向计算机输出设备输出规则规范作为提示;规则检测引擎所定义的规则规范的具体内容为:书写规范为:1)#表示规则注释,以#开头的内容不会被系统加载;2)规则文件包含标题行;3)每条规则以换行结束;4)规则内部以tab或空格分隔;每条规则本文档来自技高网
...

【技术保护点】
1.支持多元协议变量的组合表达式的匹配规则引擎,其特征在于由规则定义器、词法解析器、语法解析器、编译器和二进制代码生成器组成;规则定义器由规则输入器、规则检测引擎和规则输出器组成;/n规则输入器接收来自计算机输入设备输入的规则文本,当规则文本符合规则检测引擎所定义的规则规范时,规则检测引擎按照规则规范将规则文本转化成即时编译器能够识别的编译器文本,由规则输出器将编译器文本存储成预编译文本;当规则文本不符合规则检测引擎所定义的规则规范时,规则检测引擎向计算机输出设备输出规则规范作为提示;/n词法解析器采用Ragel开源工具读入预编译文本的字符流,并将字符流组织成为有意义的词素的序列;对于每个词素,词法解析器用一个枚举值进行标识,生成的词素序列被传递到语法解析器;/n语法解析器采用Lemon开源工具,使用词素序列的各个词素和Lemon语法规范文件来识别表达式,通过嵌入在表达式中的C代码进行语义分析并转换成C代码输出到序列C语言代码模块文件当中;/n由编译器循环输入序列C语言代码模块文件,使用Clang编译序列C语言代码模块文件,生成ELF格式的目标文件,生成的二进制可执行指令放在代码段标记为.code,包含的全局变量和局部静态变量放到变量数据段,变量数据段细分为多个只读段和读写段;规则检测引擎所定义的规则规范中的匹配条件的内容所包括的常量字符串和二进制常量由编译器在序列C语言代码模块文件编译后强制存储在.rodata段;/n由二进制代码生成器从目标文件中分离可执行代码和只读常量,存为二进制字节序列文件,形成二进制规则块;将二进制规则块写入规则库文件,生成最终的动态匹配规则库。/n...

【技术特征摘要】
1.支持多元协议变量的组合表达式的匹配规则引擎,其特征在于由规则定义器、词法解析器、语法解析器、编译器和二进制代码生成器组成;规则定义器由规则输入器、规则检测引擎和规则输出器组成;
规则输入器接收来自计算机输入设备输入的规则文本,当规则文本符合规则检测引擎所定义的规则规范时,规则检测引擎按照规则规范将规则文本转化成即时编译器能够识别的编译器文本,由规则输出器将编译器文本存储成预编译文本;当规则文本不符合规则检测引擎所定义的规则规范时,规则检测引擎向计算机输出设备输出规则规范作为提示;
词法解析器采用Ragel开源工具读入预编译文本的字符流,并将字符流组织成为有意义的词素的序列;对于每个词素,词法解析器用一个枚举值进行标识,生成的词素序列被传递到语法解析器;
语法解析器采用Lemon开源工具,使用词素序列的各个词素和Lemon语法规范文件来识别表达式,通过嵌入在表达式中的C代码进行语义分析并转换成C代码输出到序列C语言代码模块文件当中;
由编译器循环输入序列C语言代码模块文件,使用Clang编译序列C语言代码模块文件,生成ELF格式的目标文件,生成的二进制可执行指令放在代码段标记为.code,包含的全局变量和局部静态变量放到变量数据段,变量数据段细分为多个只读段和读写段;规则检测引擎所定义的规则规范中的匹配条件的内容所包括的常量字符串和二进制常量由编译器在序列C语言代码模块文件编译后强...

【专利技术属性】
技术研发人员:蔡蓓蓓王林汝唐威林飞毛华阳古元
申请(专利权)人:江苏省互联网行业管理服务中心北京亚鸿世纪科技发展有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1