CN113590487A - 流量解析程序的校验方法、装置、计算设备及存储介质 - Google Patents
流量解析程序的校验方法、装置、计算设备及存储介质 Download PDFInfo
- Publication number
- CN113590487A CN113590487A CN202110885596.8A CN202110885596A CN113590487A CN 113590487 A CN113590487 A CN 113590487A CN 202110885596 A CN202110885596 A CN 202110885596A CN 113590487 A CN113590487 A CN 113590487A
- Authority
- CN
- China
- Prior art keywords
- execution
- analysis program
- execution point
- point
- flow analysis
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 143
- 238000012795 verification Methods 0.000 title claims abstract description 43
- 230000008569 process Effects 0.000 claims abstract description 91
- 238000004590 computer program Methods 0.000 claims description 14
- 230000001960 triggered effect Effects 0.000 claims description 7
- 239000000725 suspension Substances 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 6
- 238000001514 detection method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000005206 flow analysis Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种流量解析程序的校验方法、装置、计算设备及存储介质,其中方法包括:确定待校验的流量解析程序的执行过程;该流量解析程序的执行过程包括多个执行点;确定该流量解析程序在该多个执行点中的第一执行点至第二执行点之间是否存在目标执行点;该第一执行点的执行内容为读取流量报文,该第二执行点的执行内容为访问该流量报文的协议数据的起始地址,该目标执行点的执行内容为与该流量报文相关的比较操作;根据对该目标执行点的确定结果得到该流量解析程序的校验结果。本方案,能够实现对流量解析程序是否对流量报文执行越界判断的校验。
Description
技术领域
本发明实施例涉及软件技术领域,特别涉及一种流量解析程序的校验方法、装置、计算设备及存储介质。
背景技术
在网络中传输的流量报文需要遵循一些协议,比如,IP协议、TCP协议等。遵循这些协议的流量报文一般包括两个部分:协议头和协议数据。其中,协议头中具有该协议头的长度字段。流量解析程序可以从流量报文的协议头中解析得到协议头长度,然后根据该协议头长度确定出协议数据起始地址,并利用该起始地址读取协议数据。
发明内容
基于流量解析程序由于未对流量报文执行越界判断而造成稳定性较差的问题,本发明实施例提供了一种流量解析程序的校验方法、装置、计算设备及存储介质,能够实现对流量解析程序是否对流量报文执行过越界判断的校验。
第一方面,本发明实施例提供了一种流量解析程序的校验方法,包括:
确定待校验的流量解析程序的执行过程;所述流量解析程序的执行过程包括多个执行点;
确定所述流量解析程序在所述多个执行点中的第一执行点至第二执行点之间是否存在目标执行点;所述第一执行点的执行内容为读取流量报文,所述第二执行点的执行内容为访问所述流量报文的协议数据的起始地址,所述目标执行点的执行内容为与所述流量报文相关的比较操作;
根据对所述目标执行点的确定结果得到所述流量解析程序的校验结果。优选地,所述根据对所述目标执行点的确定结果得到所述流量解析程序的校验结果,包括:
若对所述目标执行点的确定结果为存在,则进一步确定所述比较操作是否为对所述流量报文的总长度与所述流量报文的协议头长度进行的比较;若是,则确定所述流量解析程序的校验结果为校验通过。
优选地,所述确定待校验的流量解析程序的执行过程,包括:
在所述流量解析程序执行所述第一执行点之前,若所述流量解析程序在执行当前执行点时触发暂停条件,则令所述流量解析程序暂停执行,检测所述当前执行点的执行内容。
优选地,所述流量解析程序在执行当前执行点时触发暂停条件,包括:
判断所述流量解析程序在执行当前执行点时是否调用应用程序接口,若是,则确定所述流量解析程序在执行当前执行点时触发暂停条件。
优选地,在所述检测所述当前执行点的执行内容之后,还包括:
当检测到所述当前执行点的执行内容为访问网卡时,记录所述流量解析程序在执行所述访问网卡时返回的文件描述符;
当检测到所述当前执行点的执行内容为读取流量报文时,确定所述流量解析程序在执行该读取流量报文时是否使用所述文件描述符;若是,则确定所述当前执行点为所述第一执行点。
优选地,所述确定待校验的流量解析程序的执行过程,包括:
在所述流量解析程序执行所述第一执行点之后,若所述流量解析程序执行完成当前执行点,则令所述流量解析程序暂停执行,检测所述当前执行点的执行内容。
优选地,在所述检测所述当前执行点的执行内容之后,还包括:
当检测到所述当前执行点的执行内容为针对目标地址的访问操作,且所述目标地址是所述流量解析程序执行相加操作得到时,则确定所述当前执行点为所述第二执行点。
第二方面,本发明实施例还提供了一种流量解析程序的校验装置,包括:
执行过程确定单元,用于确定待校验的流量解析程序的执行过程;所述流量解析程序的执行过程包括多个执行点;
目标执行点确定单元,用于确定所述流量解析程序在所述多个执行点中的第一执行点至第二执行点之间是否存在目标执行点;所述第一执行点的执行内容为读取流量报文,所述第二执行点的执行内容为访问所述流量报文的协议数据的起始地址,所述目标执行点的执行内容为与所述流量报文相关的比较操作;
校验结果确定单元,用于根据对所述目标执行点的确定结果得到所述流量解析程序的校验结果。
第三方面,本发明实施例还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时,实现本说明书任一实施例所述的方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行本说明书任一实施例所述的方法。
本发明实施例提供了一种流量解析程序的校验方法、装置、计算设备及存储介质,由于未执行越界判断的流量解析程序,在第一执行点至第二执行点之间,不会进行与流量报文相关的比较操作,而越界判断的本质是进行与流量报文相关的比较操作,因此,通过确定流量解析程序在第一执行点至第二执行点之间是否存在目标执行点,该目标执行点的执行内容为与流量报文相关的比较操作,可以确定出该流量解析程序是否执行越界判断,可见,本实施例可以得到对流量解析程序的校验结果,实现了对流量解析程序是否对流量报文执行越界判断的校验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种流量解析程序的校验方法流程图;
图2是本发明一实施例提供的一种计算设备的硬件架构图;
图3是本发明一实施例提供的一种流量解析程序的校验装置结构图;
图4是本发明一实施例提供的另一种流量解析程序的校验装置结构图;
图5是本发明一实施例提供的又一种流量解析程序的校验装置结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如前所述,流量解析程序可以从流量报文的协议头中解析得到协议头长度。但是,从该协议头中解析得到的协议头长度可能是错误的,若利用解析得到的该协议头长度计算协议数据起始地址时,计算得到的该协议数据起始地址可能超出了该流量报文的总长度。当该协议数据起始地址超出该流量报文的总长度,且指向非法地址时,直接访问该协议数据起始地址,可能会造成流量解析程序的崩溃。
若流量解析程序访问该协议数据起始地址之前,对该流量报文执行越界判断,即判断该协议头长度是否不大于该流量报文的总长度,只有当该协议头长度不大于该流量报文的总长度时才访问该协议数据起始地址,那么可以大大提高流量解析程序的稳定性。因此,流量解析程序中是否对流量报文执行越界判断,对流量解析程序的稳定性至关重要。
在相关技术中,流量解析程序中是否对流量报文执行越界判断,并没有提前进行过校验,而是在流量解析程序实际执行过程中发生了程序崩溃,才能够得知该流量解析程序中并没有对流量报文执行越界判断。因此,需要提前对流量解析程序进行校验。而越界判断的本质是进行与流量报文相关的比较操作,因此,可以考虑流量解析程序是否进行与流量报文相关的比较操作,来实现对流量解析程序是否对流量报文执行越界判断的校验。
下面描述以上构思的具体实现方式。
请参考图1,本发明实施例提供了一种流量解析程序的校验方法,该方法包括:
步骤100,确定待校验的流量解析程序的执行过程;该流量解析程序的执行过程包括多个执行点。
步骤102,确定该流量解析程序在该多个执行点中的第一执行点至第二执行点之间是否存在目标执行点;该第一执行点的执行内容为读取流量报文,该第二执行点的执行内容为访问该流量报文的协议数据的起始地址,该目标执行点的执行内容为与该流量报文相关的比较操作。
步骤104,根据对该目标执行点的确定结果得到该流量解析程序的校验结果。
本发明实施例中,由于未执行越界判断的流量解析程序,在第一执行点至第二执行点之间,不会进行与流量报文相关的比较操作,而越界判断的本质是进行与流量报文相关的比较操作,因此,通过确定流量解析程序在第一执行点至第二执行点之间是否存在目标执行点,该目标执行点的执行内容为与流量报文相关的比较操作,可以确定出该流量解析程序是否执行越界判断,可见,本实施例可以得到对流量解析程序的校验结果,实现了对流量解析程序是否对流量报文执行越界判断的校验。
下面描述图1所示的各个步骤的执行方式。
针对步骤100“确定待校验的流量解析程序的执行过程;该流量解析程序的执行过程包括多个执行点”和步骤102“确定该流量解析程序在该多个执行点中的第一执行点至第二执行点之间是否存在目标执行点;该第一执行点的执行内容为读取流量报文,该第二执行点的执行内容为访问该流量报文的协议数据的起始地址,该目标执行点的执行内容为与该流量报文相关的比较操作”进行说明。
流量解析程序是由程序代码组成的,流量解析程序在对程序代码的执行过程中,可以包括多个执行点,每一个执行点均对应有执行内容。比如,执行内容为访问网卡的执行点、执行内容为读取流量报文的执行点等。
在本发明一个实施例中,为了校验流量解析程序在执行过程中是否对流量报文进行越界判断,需要由检测程序对流量解析程序的执行过程进行确定,获知该执行过程中各执行点的执行内容,以确定是否存在目标执行点,该目标执行点的执行内容为与流量报文相关的比较操作。而为了能够获知执行点的执行内容,需要流量解析程序在执行完该执行点后令该流量解析程序暂停执行,在暂停阶段内对该执行点的执行内容进行检测,以提高执行内容检测的准确率;当检测完成后,检测程序控制流量解析程序继续执行下一个执行点。
在本发明一个实施例中,本步骤100确定待校验的流量解析程序的执行过程可以包括如下两种阶段:
阶段一:在流量解析程序执行第一执行点之前,若流量解析程序在执行当前执行点时触发暂停条件,则令流量解析程序暂停执行,检测当前执行点的执行内容。
阶段二:在流量解析程序执行第一执行点之后,若流量解析程序执行完成当前执行点,则令流量解析程序暂停执行,检测当前执行点的执行内容。
下面对上述两个阶段分别进行说明。
在阶段一中,触发暂停条件的方式至少可以包括如下两种:
方式一:每执行完当前执行点则触发暂停条件。
方式二:执行当前执行点时调用应用程序接口,则触发暂停条件。
在方式一中,可以通过Linux API ptrace(PTRACE_SINGLESTEP)指令控制流量解析程序单步执行。可以理解,检测程序和流量解析程序分别使用不同的进程来执行,在流量解析程序的进程开始执行流量解析程序之前,检测程序的进程向流量解析程序的进程发送Linux API ptrace(PTRACE_SINGLESTEP)指令,以使流量解析程序的进程在执行完成一个当前执行点之后暂停执行,检测程序检测该当前执行点的执行内容,然后继续向流量解析程序的进程发送Linux API ptrace(PTRACE_SINGLESTEP)指令,进而控制流量解析程序单步执行。
在该方式一中,通过检测每一个执行点的执行内容,可以检测到执行内容为访问网卡的执行点,以及可以检测到执行内容为读取流量报文的第一执行点。
在方式二中,考虑到检测程序对第一执行点与第二执行点之间各执行点的执行内容进行确定,而无需对第一执行点之前的所有执行点的执行内容均进行确定,且考虑到定位第一执行点可能需要访问网卡的执行点的执行内容,因此为提高检测效率,在第一执行点之前,只需能够定位到访问网卡的执行点即可。可以通过分析流量解析程序的特征,控制流量解析程序的暂停方式。
在本发明一个实施例中,若流量解析程序运行在Linux用户态,那么该流量解析程序是使用Linux API(Application Programming Interface,应用程序接口)来执行解析逻辑的,那么在该方式二中,该流量解析程序在执行当前执行点时触发暂停条件,可以包括:判断该流量解析程序在执行当前执行点时是否调用应用程序接口,若是,则确定该流量解析程序在执行当前执行点时触发暂停条件。
需要说明的是,除使用上述是否调用应用程序接口的方式确定是否触发暂停条件以外,还可以使用其它方式触发暂停条件,比如流量解析程序在执行当前执行点时调用了Linux API且API信息为某个特征信息时,则触发暂停条件。
在该方式二中,检测程序令流量解析程序暂停后,可以检测当前执行点的执行内容,如此可以检测到执行内容为访问网卡的执行点,以及可以检测到执行内容为读取流量报文的第一执行点。
为了提高第一执行点的定位准确性,在本发明一个实施例中,在检测当前执行点的执行内容之后,还可以包括:
当检测到该当前执行点的执行内容为访问网卡时,记录该流量解析程序在执行该访问网卡时返回的文件描述符;
当检测到该当前执行点的执行内容为读取流量报文时,确定该流量解析程序在执行该读取流量报文时是否使用该文件描述符;若是,则确定该当前执行点为该第一执行点。
在检测执行点的执行内容时,可以通过确定流量解析程序在执行该执行点时调用应用程序接口的功能、参数等来检测。比如,检测到该执行点调用的应用程序接口为LinuxAPI socket(AF_INET,SOCK_RAW,protocol),那么可以确定该执行点的执行内容为访问网卡。在流量解析程序执行完该执行内容为访问网卡的执行点之后,会返回文件描述符,检测程序记录该文件描述符以备用。
当检测到该执行点调用的应用程序接口为Linux API recv*($fd,p_msg)时,可以确定该执行点的执行内容为读取流量报文,其中,$fd为文件描述符,p_msg为流量报文的起始地址。确定调用该应用程序接口使用的$fd是否为访问网卡的执行点返回的文件描述符,若是,则可以确定该读取流量报文的执行点为第一执行点。通过使用文件描述符对该执行点调用的应用程序接口使用的参数进行验证,可以提高第一执行点的定位准确性。
在该方式二中,仅在确定流量解析程序在执行当前执行点时调用应用程序接口时才令流量解析程序暂停,以检测该当前执行点的执行内容,无需每一个执行点执行结束均暂停执行,如此可以快速定位到第一执行点,提高校验效率。
以上对阶段一中流量解析程序的执行过程进行了确定,接下来对阶段二中流量解析程序的执行过程进行确定。
在阶段二中,在流量解析程序执行第一执行点之后,若流量解析程序执行完成当前执行点,则令流量解析程序暂停执行,检测当前执行点的执行内容。具体地,该实现过程可以包括:检测程序的进程向流量解析程序的进程发送Linux API ptrace(PTRACE_SINGLESTEP)指令,以使流量解析程序的进程在执行完成一个当前执行点之后暂停执行,检测程序检测该当前执行点的执行内容,然后继续向流量解析程序的进程发送Linux APIptrace(PTRACE_SINGLESTEP)指令,进而控制流量解析程序单步执行。
在本发明一个实施例中,在该阶段二中,第一执行点与第二执行点之间是否存在目标执行点的判断结果包括两种情况:
情况一:存在目标执行点;
情况二:不存在目标执行点。
若存在目标执行点,可以预判在第一执行点至第二执行点的过程中包括如下执行内容的执行点:
第一执行点:读取流量报文;
目标执行点:执行与流量报文相关的比较操作;
执行点:使用流量报文的起始地址与协议头长度相加,得到协议数据的起始地址;
第二执行点:访问流量报文的协议数据的起始地址以读取协议数据。
若不存在目标执行点,可以预判在第一执行点至第二执行点的过程中包括如下执行内容的执行点:
第一执行点:读取流量报文;
执行点:使用流量报文的起始地址与协议头长度相加,得到协议数据的起始地址;
第二执行点:访问流量报文的协议数据的起始地址以读取协议数据。
因此,根据上述两种情况分别对应的执行过程,在步骤104中,若第一执行点与第二执行点之间存在目标执行点,则确定流量解析程序的校验结果为校验通过,否则,确定流量解析程序的校验结果为校验未通过。
在本发明一个实施例中,为了进一步提高流量解析程序执行越界判断的确定准确性,可以进一步对目标执行点的执行内容进行确定,具体地:该步骤104可以包括:若对该目标执行点的确定结果为存在,则进一步确定该比较操作是否为对该流量报文的总长度与该流量报文的协议头长度进行的比较;若是,则确定该流量解析程序的校验结果为校验通过。
其中,获取流量报文的总长度的方式可以包括:从第一执行点的执行内容中获取。在第一执行点执行结束后,检测该第一执行点的执行内容,可以获取到流量报文的总长度。
获取从该流量报文的协议头中解析得到的协议头长度的方式可以包括:从解析流量报文的协议头长度的执行内容中获取。在检测程序检测到当前执行点的执行内容为解析流量报文的协议头长度,那么可以获取到该协议头长度。
如此在步骤104中确定该比较操作是否为对该流量报文的总长度与该流量报文的协议头长度进行的比较时,可以直接利用获取到的流量报文的总长度和协议头长度对比较操作进行判断。
在本发明一个实施例中,解析流量报文的协议头长度的执行点可能无法准确定位,也就是说流量报文的协议头长度无法从流量解析程序的执行过程中获取到,那么可以仅获取流量报文的总长度,然后在步骤104中确定该比较操作是否为对该流量报文的总长度与另一个值进行的比较,若是,则确定该比较操作是对该流量报文的总长度与该流量报文的协议头长度进行的比较。此时,将比较操作中与该流量报文的总长度进行比较的该另一个值确定为流量报文的协议头长度。
根据上述两种情况分别对应的执行过程,可以确定在阶段二中,若在检测当前执行点的执行内容之后,当检测到该当前执行点的执行内容为针对目标地址的访问操作,且该目标地址是流量解析程序执行相加操作得到时,则确定该当前执行点为第二执行点。从而定位到了执行内容为访问流量报文的协议数据的起始地址的第二执行点。
进一步地,还可以判断该相加操作是否为将流量报文的起始地址与协议头长度相加,以提高第二执行点的定位准确性。
在本发明一个实施例中,流量报文的起始地址可以从第一执行点的执行内容中获取到。
协议头长度的获取方式可以包括:一、从解析流量报文的协议头长度的执行内容中获取;若在检测程序检测到当前执行点的执行内容为解析流量报文的协议头长度,那么可以获取到该协议头长度。二、若在第一执行点之后以及在该相加操作之前包括比较操作,且该比较操作是对流量报文的总长度与另一个值进行的比较,那么将该另一个值确定为协议头长度。
如此该相加操作是否为将流量报文的起始地址与协议头长度相加时,可以直接利用获取到的流量报文的总长度和协议头长度对相加操作进行判断。
在本发明一个实施例中,若流量报文的协议头长度无法从流量解析程序的执行过程中获取到,且在第一执行点之后以及该相加操作之前不包括比较操作,那么可以确定该相加操作是否为将流量报文的起始地址与另一个值进行的相加,若是,则确定该相加操作是对流量报文的起始地址与协议头长度进行的相加。
以上实施例实现了对流量解析程序的校验。
下面以流量解析程序运行在用户态,通过调用Linux API执行解析逻辑为例,且由父进程执行校验程序,子进程执行该流量解析程序,对本发明实施例的校验流程进行说明。
步骤a:启动父进程,并由父进程创建子进程。
父进程可以通过调用Linux API(比如,fork)创建子进程。子进程创建完成后,父进程使用Linux API(比如waitpid)暂停执行,以等待子进程建立追踪关系。
步骤b:启动子进程,建立父进程对子进程的追踪执行关系,以使父进程能够追踪子进程的执行,探测子进程的内存和寄存器状态。
具体地,子进程可以通过调用Linux API ptrace(PTRACE_TRACEME)并设置参数来建立该追踪执行关系。设置完成后,可以通过对自身发送SIGSTOP信号以暂停执行,等待父进程控制子进程的运行。
父进程可以对子进程的运行进行控制,通过调用ptrace(PTRACE_SYSCALL)进行设置,使得子进程在触发暂停条件后暂停执行。具体地,当确定子进程调用了Linux API则令子进程暂停执行,父进程在暂停阶段检测当前执行点的执行内容。
步骤c:子进程执行流量解析程序。
子进程从暂停状态到继续执行,可以通过调用Linux API exec*()来切换状态。
步骤d:父进程在暂停阶段检测当前执行点的执行内容,以定位读取流量报文的执行点。
子进程会先执行任意代码逻辑,在执行该任意代码逻辑过程中,可能会调用任意数量的Linux API,每次暂停都会检测该当前执行点的执行内容。检测完成后,会控制子进程继续执行下一个执行点。
当子进程调用了Linux API socket(AF_INET,SOCK_RAW,protocol)时,表明该执行点的执行内容为访问网卡。该执行点会返回文件描述符,记录为$fd。
当子进程调用了Linux API recv*($fd,p_msg),表明该执行点的执行内容为读取流量报文。此时需要判断该调用过程中使用的参数$fd是否为执行访问网卡的执行点时返回的文件描述符,若是,则可以准确确定该执行点为读取流量报文的第一执行点。根据该读取流量报文的第一执行点的执行内容可以确定出流量解析程序将该流量报文缓存到以p_msg为起始地址的内存区域。其中,recv*($fd,p_msg)的返回值为读取的流量报文的总长度,记为len_msg。
步骤e:父进程控制子进程单步执行,每执行完成一个执行点,则子进程暂停执行该流量解析程序,以使父进程在暂停阶段检测当前执行点的执行内容,并在检测完控制子进程继续执行下一个执行点。
其中,可以使用Linux API ptrace(PTRACE_SINGLESTEP)来实现对子进程单步执行的控制。
当在该过程中检测到该执行点为比较操作,即x86中的cmp指令,且比较操作的一个参数值为流量报文的总长度(len_msg),另一个参数值是一个整数,那么可以确定该执行点为目标执行点。此时,将该整数记为协议头长度(len_hdr)。
当在该过程中检测到该执行点为相加操作,即x86中的add指令或leaq指令,且该相加操作的一个参数是流量报文的起始地址(p_msg),另一个参数是协议头长度(len_hdr),那么可以确定该执行点为计算协议数据的起始地址的执行点。此时可以记录该相加操作得到的地址为协议数据的起始地址(p_data)。
当在该过程中检测到该执行点为访问协议数据的起始地址p_data地址时,可以确定该执行点为访问协议数据起始地址的第二执行点。
当检测到子进程再次调用了Linux API recv*($fd,p_msg),则表明该子进程已经完成了一条流量报文的解析过程。此时可以控制子进程结束,父进程结束。
若在步骤e中检测到目标执行点,则该流量解析程序的校验结果为校验通过,表明该流量解析程序在流量解析过程中会对流量报文进行越界判断,稳定性较高。若未检测到目标执行点,则该流量解析程序的校验结果为校验不通过,表明该流量解析程序在在流量解析过程中不会对流量报文进行越界判断,稳定性较低。
本实施例在指令集层上进行校验,对待校验的流量解析程序的具体实现方式的依赖较少,因此可以检测多种类型的流量解析程序。
如图2、图3所示,本发明实施例提供了一种流量解析程序的校验装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。从硬件层面而言,如图2所示,为本发明实施例提供的一种流量解析程序的校验装置所在计算设备的一种硬件架构图,除了图2所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的计算设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等。以软件实现为例,如图3所示,作为一个逻辑意义上的装置,是通过其所在计算设备的CPU将非易失性存储器中对应的计算机程序读取到内存中运行形成的。本实施例提供的一种流量解析程序的校验装置,包括:
执行过程确定单元301,用于确定待校验的流量解析程序的执行过程;所述流量解析程序的执行过程包括多个执行点;
目标执行点确定单元302,用于确定所述流量解析程序在所述多个执行点中的第一执行点至第二执行点之间是否存在目标执行点;所述第一执行点的执行内容为读取流量报文,所述第二执行点的执行内容为访问所述流量报文的协议数据的起始地址,所述目标执行点的执行内容为与所述流量报文相关的比较操作;
校验结果确定单元303,用于根据对所述目标执行点的确定结果得到所述流量解析程序的校验结果。
在本发明一个实施例中,所述校验结果确定单元303,具体用于若对所述目标执行点的确定结果为存在,则进一步确定所述比较操作是否为对所述流量报文的总长度与所述流量报文的协议头长度进行的比较;若是,则确定所述流量解析程序的校验结果为校验通过。
在本发明一个实施例中,所述执行过程确定单元301,具体用于在所述流量解析程序执行所述第一执行点之前,若所述流量解析程序在执行当前执行点时触发暂停条件,则令所述流量解析程序暂停执行,检测所述当前执行点的执行内容。
在本发明一个实施例中,所述执行过程确定单元301,在执行所述流量解析程序在执行当前执行点时触发暂停条件时,具体用于判断所述流量解析程序在执行当前执行点时是否调用应用程序接口,若是,则确定所述流量解析程序在执行当前执行点时触发暂停条件。
在本发明一个实施例中,请参考图4,该流量解析程序的校验装置还可以包括:
文件描述符记录单元304,用于当检测到所述当前执行点的执行内容为访问网卡时,记录所述流量解析程序在执行所述访问网卡时返回的文件描述符;
第一执行点确定单元305,用于当检测到所述当前执行点的执行内容为读取流量报文时,确定所述流量解析程序在执行该读取流量报文时是否使用所述文件描述符;若是,则确定所述当前执行点为所述第一执行点。
在本发明一个实施例中,所述执行过程确定单元301,具体用于在所述流量解析程序执行所述第一执行点之后,若所述流量解析程序执行完成当前执行点,则令所述流量解析程序暂停执行,检测所述当前执行点的执行内容。
在本发明一个实施例中,请参考图5,该流量解析程序的校验装置还可以包括:
第二执行点确定单元306,用于当检测到所述当前执行点的执行内容为针对目标地址的访问操作,且所述目标地址是所述流量解析程序执行相加操作得到时,则确定所述当前执行点为所述第二执行点。
可以理解的是,本发明实施例示意的结构并不构成对一种流量解析程序的校验装置的具体限定。在本发明的另一些实施例中,一种流量解析程序的校验装置可以包括比图示更多或者更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件或者软件和硬件的组合来实现。
上述装置内的各模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本发明实施例还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时,实现本发明任一实施例中的一种流量解析程序的校验方法。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序在被处理器执行时,使所述处理器执行本发明任一实施例中的一种流量解析程序的校验方法。
具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或CPU或MPU)读出并执行存储在存储介质中的程序代码。
在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上下载程序代码。
此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展模块中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展模块上的CPU等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
本发明各实施例至少具有如下有益效果:
1、在本发明一个实施例中,由于未执行越界判断的流量解析程序,在第一执行点至第二执行点之间,不会进行与流量报文相关的比较操作,而越界判断的本质是进行与流量报文相关的比较操作,因此,通过确定流量解析程序在第一执行点至第二执行点之间是否存在目标执行点,该目标执行点的执行内容为与流量报文相关的比较操作,可以确定出该流量解析程序是否执行越界判断,可见,本实施例可以得到对流量解析程序的校验结果,实现了对流量解析程序是否对流量报文执行越界判断的校验。
2、在本发明一个实施例中,通过对比较操作进一步确定是否为对流量报文的总长度与协议头长度进行的比较,可以进一步确定该比较操作是流量解析程序对流量报文进行的越界判断,提高了校验准确性。
3、在本发明一个实施例中,通过利用访问网卡的执行点返回的的文件描述符,对读取流量报文的执行点调用的应用程序接口使用的参数进行验证,以进一步确定该读取流量报文的执行点是否为第一执行点,从而可以提高第一执行点的定位准确性。
4、在本发明一个实施例中,在流量解析程序对第一执行点执行之前,若该流量解析程序在执行当前执行点时触发了暂停条件,流量解析程序暂停执行,检测该当前执行点的执行内容,如此仅在触发到暂停条件时才暂停,而无需对每一个执行点均检测执行内容,从而可以快速定位到第一执行点,提高校验效率。
5、在本发明一个实施例中,在流量解析程序对第一执行点执行之后,流量解析程序每执行完成当前执行点,流量解析程序暂停执行,检测该当前执行点的执行内容,该暂停方式可以避免漏掉目标执行点,从而可以提高校验结果的准确性。
6、在本发明一个实施例中,流量解析程序读取协议数据时,需要访问协议数据的起始地址,该协议数据的起始地址是由流量报文的起始地址与协议头长度相加得到,因此,可以通过判断访问操作的目标地址是否是由流量解析程序执行相加操作得到的,从而可以提高第二执行点的定位准确性。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种流量解析程序的校验方法,其特征在于,包括:
确定待校验的流量解析程序的执行过程;所述流量解析程序的执行过程包括多个执行点;
确定所述流量解析程序在所述多个执行点中的第一执行点至第二执行点之间是否存在目标执行点;所述第一执行点的执行内容为读取流量报文,所述第二执行点的执行内容为访问所述流量报文的协议数据的起始地址,所述目标执行点的执行内容为与所述流量报文相关的比较操作;
根据对所述目标执行点的确定结果得到所述流量解析程序的校验结果。
2.根据权利要求1所述的方法,其特征在于,所述根据对所述目标执行点的确定结果得到所述流量解析程序的校验结果,包括:
若对所述目标执行点的确定结果为存在,则进一步确定所述比较操作是否为对所述流量报文的总长度与所述流量报文的协议头长度进行的比较;若是,则确定所述流量解析程序的校验结果为校验通过。
3.根据权利要求1所述的方法,其特征在于,所述确定待校验的流量解析程序的执行过程,包括:
在所述流量解析程序执行所述第一执行点之前,若所述流量解析程序在执行当前执行点时触发暂停条件,则令所述流量解析程序暂停执行,检测所述当前执行点的执行内容。
4.根据权利要求3所述的方法,其特征在于,所述流量解析程序在执行当前执行点时触发暂停条件,包括:
判断所述流量解析程序在执行当前执行点时是否调用应用程序接口,若是,则确定所述流量解析程序在执行当前执行点时触发暂停条件。
5.根据权利要求3或4所述的方法,其特征在于,在所述检测所述当前执行点的执行内容之后,还包括:
当检测到所述当前执行点的执行内容为访问网卡时,记录所述流量解析程序在执行所述访问网卡时返回的文件描述符;
当检测到所述当前执行点的执行内容为读取流量报文时,确定所述流量解析程序在执行该读取流量报文时是否使用所述文件描述符;若是,则确定所述当前执行点为所述第一执行点。
6.根据权利要求1所述的方法,其特征在于,所述确定待校验的流量解析程序的执行过程,包括:
在所述流量解析程序执行所述第一执行点之后,若所述流量解析程序执行完成当前执行点,则令所述流量解析程序暂停执行,检测所述当前执行点的执行内容。
7.根据权利要求6所述的方法,其特征在于,在所述检测所述当前执行点的执行内容之后,还包括:
当检测到所述当前执行点的执行内容为针对目标地址的访问操作,且所述目标地址是所述流量解析程序执行相加操作得到时,则确定所述当前执行点为所述第二执行点。
8.一种流量解析程序的校验装置,其特征在于,包括:
执行过程确定单元,用于确定待校验的流量解析程序的执行过程;所述流量解析程序的执行过程包括多个执行点;
目标执行点确定单元,用于确定所述流量解析程序在所述多个执行点中的第一执行点至第二执行点之间是否存在目标执行点;所述第一执行点的执行内容为读取流量报文,所述第二执行点的执行内容为访问所述流量报文的协议数据的起始地址,所述目标执行点的执行内容为与所述流量报文相关的比较操作;
校验结果确定单元,用于根据对所述目标执行点的确定结果得到所述流量解析程序的校验结果。
9.一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110885596.8A CN113590487B (zh) | 2021-08-03 | 2021-08-03 | 流量解析程序的校验方法、装置、计算设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110885596.8A CN113590487B (zh) | 2021-08-03 | 2021-08-03 | 流量解析程序的校验方法、装置、计算设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113590487A true CN113590487A (zh) | 2021-11-02 |
CN113590487B CN113590487B (zh) | 2024-04-09 |
Family
ID=78254284
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110885596.8A Active CN113590487B (zh) | 2021-08-03 | 2021-08-03 | 流量解析程序的校验方法、装置、计算设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113590487B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108334542A (zh) * | 2017-12-22 | 2018-07-27 | 山东浪潮云服务信息科技有限公司 | 一种数据析取方法及装置 |
EP3401827A1 (en) * | 2017-05-10 | 2018-11-14 | Checkmarx Ltd. | Method and system of static and dynamic data flow analysis |
CN109840410A (zh) * | 2017-12-28 | 2019-06-04 | 中国科学院计算技术研究所 | 一种进程内数据隔离与保护的方法和系统 |
US20190253436A1 (en) * | 2016-09-21 | 2019-08-15 | Institute Of Information Engineering, Chinese Academy Of Sciences | Method, system, and apparatus for monitoring network traffic and generating summary |
US20200201742A1 (en) * | 2018-12-21 | 2020-06-25 | Raytheon Company | Parallel data flow analysis processing to stage automated vulnerability research |
CN111475705A (zh) * | 2020-03-05 | 2020-07-31 | 中国平安人寿保险股份有限公司 | 基于sql查询的网络业务监控方法、装置、设备及存储介质 |
US20210157583A1 (en) * | 2019-11-25 | 2021-05-27 | Board Of Trustees Of The University Of Illinois | Transparent interpretation and integration of layered software architecture event streams |
-
2021
- 2021-08-03 CN CN202110885596.8A patent/CN113590487B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190253436A1 (en) * | 2016-09-21 | 2019-08-15 | Institute Of Information Engineering, Chinese Academy Of Sciences | Method, system, and apparatus for monitoring network traffic and generating summary |
EP3401827A1 (en) * | 2017-05-10 | 2018-11-14 | Checkmarx Ltd. | Method and system of static and dynamic data flow analysis |
CN108334542A (zh) * | 2017-12-22 | 2018-07-27 | 山东浪潮云服务信息科技有限公司 | 一种数据析取方法及装置 |
CN109840410A (zh) * | 2017-12-28 | 2019-06-04 | 中国科学院计算技术研究所 | 一种进程内数据隔离与保护的方法和系统 |
US20200201742A1 (en) * | 2018-12-21 | 2020-06-25 | Raytheon Company | Parallel data flow analysis processing to stage automated vulnerability research |
US20210157583A1 (en) * | 2019-11-25 | 2021-05-27 | Board Of Trustees Of The University Of Illinois | Transparent interpretation and integration of layered software architecture event streams |
CN111475705A (zh) * | 2020-03-05 | 2020-07-31 | 中国平安人寿保险股份有限公司 | 基于sql查询的网络业务监控方法、装置、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
高运霞;: "基于流量分析的大数据环境敏感数据识别方法", 信息通信, no. 12 * |
高运霞;: "基于流量分析的大数据环境敏感数据识别方法", 信息通信, no. 12, 15 December 2019 (2019-12-15) * |
Also Published As
Publication number | Publication date |
---|---|
CN113590487B (zh) | 2024-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107704260B (zh) | 一种更新应用软件的软件开发工具包的方法及系统 | |
CN111818035B (zh) | 一种基于api网关的权限验证的方法及设备 | |
CN111800490B (zh) | 获取网络行为数据的方法、装置及终端设备 | |
CN111884876A (zh) | 一种网络协议的协议类型检测方法、装置、设备及介质 | |
CN112818307A (zh) | 用户操作处理方法、系统、设备及计算机可读存储介质 | |
CN115017505A (zh) | 一种pe病毒检测方法、装置、电子设备及存储介质 | |
KR102157208B1 (ko) | 스마트 컨트랙트 실행 장치 및 그 장치에서 취약점 탐지 방법 | |
CN114756284A (zh) | 变长指令集系统栈回溯的实现方法及装置 | |
CN113076213B (zh) | 一种优化系统管理中断处理硬件错误时间的方法及系统 | |
CN113590487B (zh) | 流量解析程序的校验方法、装置、计算设备及存储介质 | |
CN113612661B (zh) | 检验程序稳定性的方法、装置、计算设备及存储介质 | |
CN110784364B (zh) | 一种数据监测方法、装置、存储介质及终端 | |
CN111723374A (zh) | 一种漏洞扫描方法及装置 | |
KR101658641B1 (ko) | 하드웨어 기반의 커널 코드 삽입 공격 탐지 장치 및 그 방법 | |
US8266403B2 (en) | Storage system, unauthorized access detection method, and non-transitory computer-readable medium storing unauthorized access detection program | |
CN110825451A (zh) | 一种小程序页面地址的配置、校验方法及装置 | |
CN115022366A (zh) | 一种资产识别方法、装置及电子设备和存储介质 | |
CN112003824B (zh) | 攻击检测方法、装置及计算机可读存储介质 | |
CN114036042A (zh) | 一种模型测试方法、装置、计算机和可读存储介质 | |
CN109144415B (zh) | 节点检测方法及共享存储装置 | |
CN113672918A (zh) | 恶意代码检测方法、装置、存储介质及电子设备 | |
CN108319527B (zh) | 一种坏道磁盘检测方法和装置 | |
CN116775147B (zh) | 一种可执行文件处理方法、装置、设备及存储介质 | |
CN111796911A (zh) | 一种面向云平台虚拟设备的攻击检测方法及电子装置 | |
CN111858136A (zh) | 固态硬盘异常数据检测方法、系统、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |