WO2025124249A1 - 基于Hyperscan的Web应用防火墙规则匹配方法 - Google Patents
基于Hyperscan的Web应用防火墙规则匹配方法 Download PDFInfo
- Publication number
- WO2025124249A1 WO2025124249A1 PCT/CN2024/136670 CN2024136670W WO2025124249A1 WO 2025124249 A1 WO2025124249 A1 WO 2025124249A1 CN 2024136670 W CN2024136670 W CN 2024136670W WO 2025124249 A1 WO2025124249 A1 WO 2025124249A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- worker
- shared memory
- hyperscan
- configuration
- openresty
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0263—Rule management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Definitions
- the present application relates to the fields of information security technology and computer technology, and in particular to a Web application firewall rule matching method based on Hyperscan.
- WAF Web Application Firewall
- XSS cross-site scripting
- SQL injection SQL injection
- CSRF cross-site request forgery
- Hyperscan is an efficient regular expression matching library that can handle multiple regular expressions and large amounts of data. Hyperscan uses a sophisticated finite state machine (FSM) and multi-pattern matching algorithm to match multiple patterns in a single scan.
- FSM finite state machine
- a complete matching process of Hyperscan includes compilation (compiling regular expressions), allocating scratch space, and running (scanning and reporting matches).
- the traditional solution is to first store the compiled results of regular expressions in the Redis database, and then retrieve them from the Redis database for each request to allocate scratch space and scan. Since each request requires reading Redis and allocating scratch space, and scratch memory allocation is not necessarily an efficient operation, this will greatly reduce the matching efficiency of WAF and limit the QPS of WAF.
- a Web application firewall rule matching method based on Hyperscan mainly including:
- Step 1 The OpenResty server uses the Hyperscan regular matching library to perform rule matching;
- Step 2 Add a new HTTP API interface in the Lua module of OpenResty
- Step 3 After writing the latest configuration into the shared memory, call the interface provided by Hyperscan to compile the regular expression in the latest configuration, and continue to call the interface to serialize the compilation result into a string and write it into the shared memory;
- Step 4 Each worker updates the configuration to the current worker according to the semaphore in the shared memory each time a request arrives;
- Step 5 Each worker takes out the serialized string written to the shared memory in step 3, then calls the deserialize_db interface of Hyperscan to deserialize it, and saves the deserialized databse pointer in the shared memory;
- Step 6 Each worker allocates scratch memory after deserialization and saves the pointer of the allocated scratch memory in the shared memory
- Step 7 After completing the above steps, each worker takes out the database pointer and the scrach pointer from the shared memory, and then calls the scan interface provided by Hyperscan to scan and obtain the matching results;
- the WAF includes at least an OpenResty server, an Agent configuration synchronization component, and a management system platform;
- the OpenResty server uses the Hyperscan regular matching library to perform rule matching
- the OpenResty server can be any nginx-based system that supports Lua plug-ins;
- the Agent component is responsible for calling the OpenResty API interface to synchronize the latest configuration to OpenResty when the configuration changes.
- the communication interface is used to connect the communication module to realize the communication interaction between the device and other devices, wherein the communication module can realize communication through wired mode;
- the matching process of Hyperscan is a process from compiling a regular expression to searching for matching patterns in input data.
- a complete matching process of Hyperscan includes compilation, allocation of scratch space and runtime, and the runtime includes but is not limited to a worker process.
- the OpenResty server can be any nginx-based system that supports the Lua plug-in, and this application does not limit this;
- the serialized string of the rule base obtained from the Redis database is removed in each request.
- the serialized string is obtained from the shared memory with a faster reading speed, because the shared memory in Openresty is designed as a high-speed data sharing mechanism between worker processes. It allows data to be stored and retrieved between worker processes without inter-process communication (IPC).
- IPC inter-process communication
- the scratch memory is allocated in advance after deserialization and the database pointer and scratch pointer are saved in the shared memory, avoiding deserialization and allocation of scratch memory in each request, which significantly improves the processing speed of WAF, because memory allocation and release itself is a relatively expensive operation. If it is performed in each request, then the overhead may become very large. In addition, frequent memory allocation and release may also lead to memory fragmentation, further reducing performance.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- General Business, Economics & Management (AREA)
- Business, Economics & Management (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种基于Hyperscan的Web应用防火墙规则匹配方法,主要包括以下步骤:步骤一:OpenResty服务器采用Hyperscan正则匹配库来进行规则匹配;步骤二:在OpenResty的Lua模块中新增一个HTTP API接口;步骤三:调用Hyperscan提供的接口编译最新配置中的正则表达式,并继续调用接口将编译结果序列化成字符串后写入共享内存中;步骤四:每个worker在每次请求到来时根据共享内存中的信号量来更新配置到当前worker中;步骤五:将反序列化后的database指针保存在共享内存中;步骤六:将分配到的scratch内存的指针保存在共享内存中;步骤七:每个worker在完成以上步骤后从共享内存中取出database指针和scratch指针,然后调用Hyperscan提供的scan接口进行扫描和获取匹配结果;步骤八:每个worker根据匹配结果来判断放行还是拦截当次请求。
Description
相关申请
本申请要求2023年12月13日申请的,申请号为202311707378.0,名称为“一种基于Hyperscan的Web应用防火墙规则匹配方法”的中国专利申请的优先权,在此将其全文引入作为参考。
本申请涉及信息安全技术和计算机技术领域,尤其涉及一种基于Hyperscan的Web应用防火墙规则匹配方法。
WAF,全称Web Application Firewall,即Web应用防火墙,是一种特殊的应用防火墙。它主要用于保护网络应用程序,防止各种类型的攻击,如跨站脚本(XSS)、SQL注入和跨站点请求伪造(CSRF)等。
WAF的工作原理是在应用程序和互联网之间建立一个保护层,对所有进出的数据进行检查和过滤。它可以识别并阻止那些可能利用应用程序漏洞进行攻击的恶意数据包。
目前市面上大多数WAF会采用正则匹配来命中规则,常常会用Hyperscan来提高规则匹配的效率。
Hyperscan是一种高效的正则表达式匹配库,它可以处理多个正则表达式和大量数据。Hyperscan使用了一种复杂的有限状态机(Finite State Machine,FSM)和多模式匹配算法,可以在单个扫描过程中匹配多个模式。
Hyperscan一次完整的匹配流程包括编译期(编译正则表达式)、分配scratch空间和运行期(扫描并报告匹配)。而传统的方案是先将正则表达式的编译结果放在Redis数据库中,然后在每次请求到来时再从Redis数据库中取出来后进行分配scratch空间和扫描,由于每次请求都需要读取Redis和分配scratch空间,并且scratch内存分配不一定是高效的操作,这样会导致WAF的匹配效率大大降低,限制了WAF的QPS。
本部分的目的在于概述本申请的实施例的一些方面以及简要介绍一些较佳实施例。在本部分以及本申请的说明书摘要和发明名称中可能会做些简化或省略以避免使本部分、说明书摘要和发明名称的目的模糊,而这种简化或省略不能用于限制本申请的范围。
为解决上述技术问题,本申请提供如下技术方案:一种基于Hyperscan的Web应用防火墙规则匹配方法,主要包括:
步骤一:OpenResty服务器采用Hyperscan正则匹配库来进行规则匹配;
步骤二:在OpenResty的Lua模块中新增一个HTTP API接口;
步骤三:将最新配置写入共享内存中后,调用Hyperscan提供的接口编译最新配置中的正则表达式,并继续调用接口将编译结果序列化成字符串后写入共享内存中;
步骤四:每个worker在每次请求到来时根据共享内存中的信号量来更新配置到当前worker中;
步骤五:每个worker取出步骤三中写入共享内存中的序列化字符串,然后调用Hyperscan的deserialize_db接口进行反序列化,并将反序列化后的databse指针保存在共享内存中;
步骤六:每个worker在反序列化完后再分配scratch内存,并将分配到的scratch内存的指针保存在共享内存中;
步骤七:每个worker在完成以上步骤后从共享内存中取出database指针和scrach指针,然后调用Hyperscan提供的scan接口进行扫描和获取匹配结果;
步骤八:每个worker根据匹配结果来判断放行还是拦截当次请求。
在其中一些实施例中,所述WAF至少包括OpenResty服务器、Agent配置同步组件和管理系统平台;
所述Agent配置同步组件和管理系统平台可以是任何配置同步系统;
所述OpenResty服务器采用Hyperscan正则匹配库来进行规则匹配;
所述OpenResty服务器可以是任何基于nginx的支持lua插件的系统;
所述Agent组件负责在配置变动时调用OpenResty的API接口将最新配置同步到OpenResty中。
在其中一些实施例中,所述OpenResty服务器的硬件部分包括处理器、存储设备、输入和输出接口、通信接口以及总线;
其中处理器采用中央处理器;
存储设备采用随机存取存储器、SSD、HDD中一种;
输入和输出接口用于连接输入/输出模块,以实现信息输入及输出,输入/输出模块可以作为组件配置在设备中,也可以外接于设备以提供相应功能,其中输入设备包括键盘、鼠标以及各类传感器,输出设备包括显示器、扬声器以及指示灯;
通信接口用于连接通信模块,以实现本设备与其他设备的通信交互,其中通信模块可以通过有线方式实现通信;
总线包括一通路,在设备的各个组件之间传输信息。
在其中一些实施例中,所述Hyperscan的匹配流程是一个从编译正则表达式到在输入数据中搜索匹配的模式的过程,Hyperscan一次完整的匹配流程包括编译期、分配scratch空间和运行期,运行时包括但不限于一个worker工作进程。
在其中一些实施例中,所述步骤二中,在OpenResty的Lua模块中新增一个HTTP API接口,便于Agent将最新的配置同步到WAF中,在API接口中判断如果是配置的增、删、改的时候将当前配置写入OpenResty的共享内存中,并在共享内存中写入信号量便于其他worker同步最新配置。
在其中一些实施例中,所述步骤四中,由于OpenResty的每个worker进程的地址空间是相互独立的,所以采取的方案是在一个worker上进行编译,并将编译后的规则库序列化成字符串保存在共享内存中,其他worker再去共享内存中取出字符串反序列化后使用。
在其中一些实施例中,所述步骤4中,每个worker在每次请求到来时先去共享内存中获取信号量判断是否需要更新配置,如果需要更新配置,则先从共享内存中获取最新配置并替换当前worker独立内存中的配置。
在其中一些实施例中,所述步骤五中,由于每个worker的内存空间是独立的,每个worker的database指针都不一样,所以在共享内存中的key按照db_[worker_id]来命名。
在其中一些实施例中,所述步骤六中,由于每个所述worker的内存空间是独立的,每个worker的scratch指针都不一样,所以在共享内存中的key按照scr_[worker_id]来命名。
在其中一些实施例中,所述步骤六,每个worker在反序列化完后,再通过调用Hyperscan的make_scratch接口来分配scratch内存。
本申请的有益效果:
1、与传统的方案相比,在每次请求中去掉了从Redis数据库中获取规则库的序列化后的字符串,取而代之的是能够从读取速度更快的共享内存中获取序列化后的字符串。
2、与传统的方案相比,预先在反序列化后分配好scratch内存并将database指针和scratch指针保存到共享内存中,避免在每次请求中都去反序列化和分配scratch内存,提高了WAF正则匹配效率,且有效提升了WAF的处理性能。
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。其中:
图1为根据本申请一实施例的一种基于Hyperscan的Web应用防火墙规则匹配方法的流程图。
图2为根据本申请一实施例的OpenResty服务器的硬件框图。
图3为本申请实施例I中防火墙规则匹配系统的结构框图。
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合说明书附图对本申请的具体实施方式做详细的说明。
在下面的描述中阐述了很多具体细节以便于充分理解本申请,但是本申请还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施例的限制。
其次,此处所称的“一个实施例”或“实施例”是指可包含于本申请至少一个实现方式中的特定特征、结构或特性。在本说明书中不同地方出现的“在一个实施例中”并非均指同一个实施例,也不是单独的或选择性的与其他实施例互相排斥的实施例。
再其次,本申请结合示意图进行详细描述,在详述本申请实施例时,为便于说明,表示器件结构的剖面图会不依一般比例作局部放大,而且所述示意图只是示例,其在此不应限制本申请保护的范围。此外,在实际制作中应包含长度、宽度及深度的三维空间尺寸。
实施例I
参照图1至3,本申请在一个实施例中提供了一种基于Hyperscan的Web应用防火墙规则匹配方法,如图1,主要包括以下步骤一至步骤八。
步骤一:OpenResty服务器采用Hyperscan正则匹配库来进行规则匹配。
步骤二:在OpenResty的Lua模块中新增一个HTTP API接口,便于Agent将最新的配置同步到WAF中,这个API接口中判断如果是配置的增、删、改的时候先将配置更新到当前worker进程中,再将配置写入共享内存中,然后在共享内存中再申请一个共享字典,key为[worker_id],值为true,便于后续其他worker同步最新配置。其中共享内存(Shared Memory)是一种特殊的内存存储,允许多个worker进程间共享数据。由于OpenResty是多进程模型的,而不是多线程的,所以不同的worker进程之间默认是不能共享状态或内存的。但是,使用共享内存,这些进程可以在此预分配的内存区域中共享信息。
步骤三:将最新配置写入共享内存中后,调用Hyperscan提供的compile接口编译最新配置中的正则表达式,并继续调用Hyperscan提供的serialize_db接口将编译结果序列化成字符串后写入共享内存中。由于OpenResty的每个worker进程的地址空间是相互独立的,所以本申请采取的方案是在一个worker上进行编译,并将编译后的规则库序列化成字符串保存在共享内存中,其他worker再去共享内存中取出字符串反序列化后使用。
步骤四:每个worker在每次请求到来时先去共享内存中获取信号量判断是否需要更新配置,如果需要更新配置,则先从共享内存中获取最新配置并替换当前worker独立内存中的配置。即每个worker在每次请求到来时先去共享内存中根据worker_id获取对应的值,如果为true则需要更新配置,从共享内存中获取最新配置并更新到当前worker进程中。
步骤五:每个worker取出步骤三中写入共享内存中的序列化字符串,然后调用Hyperscan的deserialize_db接口进行反序列化,并将反序列化后的databse指针保存在共享内存中;
由于每个worker的内存空间是独立的,每个worker的database指针都不一样,所以在共享内存中的key按照db_[worker_id]来命名。
步骤六:每个worker在反序列化完后通过调用Hyperscan的make_scratch接口来分配scratch内存,并将分配到的scratch内存的指针保存在共享内存中。由于每个所述worker的内存空间是独立的,每个worker的scratch指针都不一样,所以在共享内存中的key按照scr_[worker_id]来命名。
步骤七:每个worker在完成以上步骤后从共享内存中取出database指针和scrach指针,然后调用Hyperscan提供的scan接口进行扫描和获取匹配结果;
步骤八:每个worker根据匹配结果来判断放行还是拦截当次请求。
具体的,所述WAF至少包括OpenResty服务器、Agent配置同步组件和管理系统平台,其中Agent配置同步组件和管理系统平台可以是任何配置同步系统;
所述Agent配置同步组件和管理系统平台可以是任何配置同步系统;
所述OpenResty服务器采用Hyperscan正则匹配库来进行规则匹配,所述Hyperscan的匹配流程是一个从编译正则表达式到在输入数据中搜索匹配的模式的过程,Hyperscan一次完整的匹配流程包括编译期(编译正则表达式)、分配scratch空间和运行期(扫描并报告匹配),运行时包括但不限于一个worker工作进程;
所述OpenResty服务器可以是任何基于nginx的支持lua插件的系统,本申请对此不做限制;
所述Agent组件负责在配置变动时调用OpenResty的API接口将最新配置同步到OpenResty中。
更进一步地,如图2,所述OpenResty服务器的硬件部分可以包括处理器、存储设备、输入和输出接口、通信接口以及总线;
其中处理器可以采用通用的中央处理器,用于执行相关程序,以实现本说明书实施例所提供的技术方案;
存储设备可以采用随机存取存储器(Random Access Memory,RAM)、SSD(Solid State Drive)、HDD(Hard Disk Drive)等形式实现;
输入和输出接口用于连接输入/输出模块,以实现信息输入及输出,输入/输出模块可以作为组件配置在设备中,也可以外接于设备以提供相应功能,其中输入设备可以包括键盘、鼠标、各类传感器等,输出设备可以包括显示器、扬声器、指示灯等;
通信接口用于连接通信模块,以实现本设备与其他设备的通信交互,其中通信模块可以通过有线方式(例如USB、网线等)实现通信;
总线包括一通路,在设备的各个组件(例如处理器、存储设备、输入/输出接口和通信接口)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器、存储设备、输入/输出接口、通信接口以及总线,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含全部组件。
如图3,本申请还提供一种基于Hyperscan的Web应用防火墙规则匹配的系统,该系统应用于上述方法,系统包括:
OpenResty模块:对所有进出的数据进行检查和过滤。它可以识别并阻止那些可能利用应用程序漏洞进行攻击的恶意数据包;
Agent模块:负责实时将最新的配置通过API接口同步到OpenResty模块中;
管理平台模块:负责将网页上的最新配置项下发到Agent模块;
Hyperscan正则匹配模块:负责WAF防护规则的正则匹配,返回匹配结果。
综上,与传统的方案相比,在每次请求中去掉了从Redis数据库中获取规则库的序列化后的字符串,取而代之的是从读取速度更快的共享内存中获取序列化后的字符串,因为Openresty中的共享内存设计为工作进程之间的高速数据共享机制。它允许在工作进程之间存储和检索数据,而无需进行进程间通信(IPC)。与传统的方案相比,预先在反序列化后分配好scratch内存并将database指针和scratch指针保存到共享内存中,避免在每次请求中都去反序列化和分配scratch内存,明显的提高了WAF的处理速度,因为内存分配和释放本身就是一种相对昂贵的操作,如果在每次请求时都进行,那么这个开销就可能会变得很大。此外,频繁的内存分配和释放还可能导致内存碎片,进一步降低性能。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
- 一种基于Hyperscan的Web应用防火墙规则匹配方法,包括:步骤一:OpenResty服务器采用Hyperscan正则匹配库来进行规则匹配;步骤二:在OpenResty的Lua模块中新增一个HTTP API接口;步骤三:将最新配置写入共享内存中后,调用Hyperscan提供的接口编译最新配置中的正则表达式,并继续调用接口将编译结果序列化成字符串后写入共享内存中;步骤四:每个worker在每次请求到来时根据共享内存中的信号量来更新配置到当前worker中;步骤五:每个worker取出步骤三中写入共享内存中的序列化字符串,然后调用Hyperscan的deserialize_db接口进行反序列化,并将反序列化后的databse指针保存在共享内存中;步骤六:每个worker在反序列化完后再分配scratch内存,并将分配到的scratch内存的指针保存在共享内存中;步骤七:每个worker在完成以上步骤后从共享内存中取出database指针和scrach指针,然后调用Hyperscan提供的scan接口进行扫描和获取匹配结果;步骤八:每个worker根据匹配结果来判断放行还是拦截当次请求。
- 根据权利要求1所述的方法,其中所述WAF至少包括OpenResty服务器、Agent配置同步组件和管理系统平台;所述Agent配置同步组件和管理系统平台可以是任何配置同步系统;所述OpenResty服务器采用Hyperscan正则匹配库来进行规则匹配;所述OpenResty服务器可以是任何基于nginx的支持lua插件的系统;所述Agent组件负责在配置变动时调用OpenResty的API接口将最新配置同步到OpenResty中。
- 根据权利要求2所述的方法,其中所述OpenResty服务器的硬件部分包括处理器、存储设备、输入和输出接口、通信接口以及总线;其中处理器采用中央处理器;存储设备采用随机存取存储器、SSD、HDD中一种;输入和输出接口用于连接输入/输出模块,以实现信息输入及输出,输入/输出模块可以作为组件配置在设备中,也可以外接于设备以提供相应功能,其中输入设备包括键盘、鼠标以及各类传感器,输出设备包括显示器、扬声器以及指示灯;通信接口用于连接通信模块,以实现本设备与其他设备的通信交互,其中通信模块可以通过有线方式实现通信;总线包括一通路,在设备的各个组件之间传输信息。
- 根据权利要求2所述的方法,其中所述Hyperscan的匹配流程是一个从编译正则表达式到在输入数据中搜索匹配的模式的过程,Hyperscan一次完整的匹配流程包括编译期、分配scratch空间和运行期,运行时包括但不限于一个worker工作进程。
- 根据权利要求1所述的方法,其中所述步骤二中,在OpenResty的Lua模块中新增一个HTTP API接口,便于Agent将最新的配置同步到WAF中,在API接口中判断如果是配置的增、删、改的时候将当前配置写入OpenResty的共享内存中,并在共享内存中写入信号量便于其他worker同步最新配置。
- 根据权利要求1所述的方法,其中所述步骤四中,由于OpenResty的每个worker进程的地址空间是相互独立的,所以采取的方案是在一个worker上进行编译,并将编译后的规则库序列化成字符串保存在共享内存中,其他worker再去共享内存中取出字符串反序列化后使用。
- 根据权利要求1所述的方法,其中所述步骤4中,每个worker在每次请求到来时先去共享内存中获取信号量判断是否需要更新配置,如果需要更新配置,则先从共享内存中获取最新配置并替换当前worker独立内存中的配置。
- 根据权利要求1所述的方法,其中所述步骤五中,由于每个worker的内存空间是独立的,每个worker的database指针都不一样,所以在共享内存中的key按照db_[worker_id]来命名。
- 根据权利要求1所述的方法,其中所述步骤六中,由于每个所述worker的内存空间是独立的,每个worker的scratch指针都不一样,所以在共享内存中的key按照scr_[worker_id]来命名。
- 根据权利要求1所述的方法,其中所述步骤六,每个worker在反序列化完后,再通过调用Hyperscan的make_scratch接口来分配scratch内存。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202311707378.0 | 2023-12-13 | ||
| CN202311707378.0A CN117857124B (zh) | 2023-12-13 | 2023-12-13 | 一种基于Hyperscan的Web应用防火墙规则匹配方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2025124249A1 true WO2025124249A1 (zh) | 2025-06-19 |
Family
ID=90545503
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/CN2024/136670 Pending WO2025124249A1 (zh) | 2023-12-13 | 2024-12-04 | 基于Hyperscan的Web应用防火墙规则匹配方法 |
Country Status (2)
| Country | Link |
|---|---|
| CN (1) | CN117857124B (zh) |
| WO (1) | WO2025124249A1 (zh) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN117857124B (zh) * | 2023-12-13 | 2025-08-12 | 天翼云科技有限公司 | 一种基于Hyperscan的Web应用防火墙规则匹配方法 |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN111786959A (zh) * | 2020-06-10 | 2020-10-16 | 中移(杭州)信息技术有限公司 | 安全防护方法、waf系统、电子设备及存储介质 |
| CN112351020A (zh) * | 2020-10-29 | 2021-02-09 | 北京健康之家科技有限公司 | Waf规则解析方法及装置 |
| US20220113969A1 (en) * | 2021-11-25 | 2022-04-14 | Intel Corporation | Techniques for use of a large scale multi-literal matching algorithm |
| CN116846613A (zh) * | 2023-06-20 | 2023-10-03 | 云智联网络科技(北京)有限公司 | 一种动态下发waf配置的方法、装置及智能终端 |
| CN117857124A (zh) * | 2023-12-13 | 2024-04-09 | 天翼云科技有限公司 | 一种基于Hyperscan的Web应用防火墙规则匹配方法 |
Family Cites Families (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101631108B (zh) * | 2008-07-16 | 2012-12-12 | 国际商业机器公司 | 为网络服务器的防火墙产生规则文件的方法和系统 |
| CN111162947B (zh) * | 2019-12-30 | 2022-08-12 | 北京天融信网络安全技术有限公司 | 一种pcre热切换方法、网络设备及存储介质 |
| CN112558948B (zh) * | 2020-12-16 | 2024-08-23 | 武汉绿色网络信息服务有限责任公司 | 一种海量流量下报文识别的方法和装置 |
| CN115878343A (zh) * | 2021-09-29 | 2023-03-31 | 华为技术有限公司 | 一种进程间通信方法及相关装置 |
| CN114880138B (zh) * | 2022-04-22 | 2025-08-12 | 烽火通信科技股份有限公司 | 一种基于共享内存池的高性能数据模型访问方法和装置 |
| GB202214369D0 (en) * | 2022-09-30 | 2022-11-16 | Senseon Tech Ltd | Processing and/or generating cybersecurity telemetry data |
| CN116028550B (zh) * | 2022-12-28 | 2026-04-17 | 天翼云科技有限公司 | 一种基于多播和共享内存的实时统计方法及云Web应用防火墙节点 |
-
2023
- 2023-12-13 CN CN202311707378.0A patent/CN117857124B/zh active Active
-
2024
- 2024-12-04 WO PCT/CN2024/136670 patent/WO2025124249A1/zh active Pending
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN111786959A (zh) * | 2020-06-10 | 2020-10-16 | 中移(杭州)信息技术有限公司 | 安全防护方法、waf系统、电子设备及存储介质 |
| CN112351020A (zh) * | 2020-10-29 | 2021-02-09 | 北京健康之家科技有限公司 | Waf规则解析方法及装置 |
| US20220113969A1 (en) * | 2021-11-25 | 2022-04-14 | Intel Corporation | Techniques for use of a large scale multi-literal matching algorithm |
| CN116846613A (zh) * | 2023-06-20 | 2023-10-03 | 云智联网络科技(北京)有限公司 | 一种动态下发waf配置的方法、装置及智能终端 |
| CN117857124A (zh) * | 2023-12-13 | 2024-04-09 | 天翼云科技有限公司 | 一种基于Hyperscan的Web应用防火墙规则匹配方法 |
Non-Patent Citations (1)
| Title |
|---|
| GITHUB: "GitHub - fesily/lua-resty-hs: hyperscan for openresty", 19 August 2022 (2022-08-19), pages 1 - 2, XP093322752, Retrieved from the Internet <URL:https://github.com/fesily/lua-resty-hs> * |
Also Published As
| Publication number | Publication date |
|---|---|
| CN117857124A (zh) | 2024-04-09 |
| CN117857124B (zh) | 2025-08-12 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN104580226B (zh) | 一种共享会话数据的系统和方法 | |
| CN104252501B (zh) | 一种执行数据库操作命令的计算设备和方法 | |
| US10691362B2 (en) | Key-based memory deduplication protection | |
| US9286293B2 (en) | Populating and using caches in client-side caching | |
| WO2021184761A1 (zh) | 数据访问方法和装置、数据存储方法和装置 | |
| US20100057647A1 (en) | Accommodating learned clauses in reconfigurable hardware accelerator for boolean satisfiability solver | |
| CN112465046B (zh) | 海量小文件的人工智能训练的方法、系统、设备及介质 | |
| WO2021008105A1 (zh) | Tee系统中的数据传输方法和装置 | |
| CN108170489A (zh) | 一种快速加载资源的方法及装置 | |
| CN115705294B (zh) | 用于获取函数调用信息的方法、装置、电子设备和介质 | |
| CN114780502B (zh) | 基于压缩数据直接计算的数据库方法、系统、设备和介质 | |
| CN111046106A (zh) | 缓存数据同步方法、装置、设备及介质 | |
| CN111124270A (zh) | 缓存管理的方法、设备和计算机程序产品 | |
| US20200320196A1 (en) | Malware detection in memory | |
| CN113986775B (zh) | 一种risc-v cpu验证中页表项生成方法、系统及装置 | |
| CN115203211B (zh) | 一种唯一哈希序号生成方法和系统 | |
| CN117171100A (zh) | 基于虚拟文件系统的小文件动态聚合方法、装置及可读介质 | |
| CN110515979B (zh) | 数据查询方法、装置、设备和存储介质 | |
| CN114896215A (zh) | 元数据的存储方法及装置 | |
| CN104281673A (zh) | 一种数据库的缓存构建系统及对应的构建方法 | |
| CN108959313A (zh) | 面向海量小文件的并发处理方法、装置和存储介质 | |
| CN112347794B (zh) | 数据翻译方法、装置、设备及计算机存储介质 | |
| WO2022078001A1 (zh) | 静态规则的管理方法、装置、电子设备和存储介质 | |
| CN117857124A (zh) | 一种基于Hyperscan的Web应用防火墙规则匹配方法 | |
| US10083125B2 (en) | Method to efficiently implement synchronization using software managed address translation |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 24902670 Country of ref document: EP Kind code of ref document: A1 |