CN116432185B - 一种异常检测方法、装置、可读存储介质及电子设备 - Google Patents
一种异常检测方法、装置、可读存储介质及电子设备 Download PDFInfo
- Publication number
- CN116432185B CN116432185B CN202211740220.9A CN202211740220A CN116432185B CN 116432185 B CN116432185 B CN 116432185B CN 202211740220 A CN202211740220 A CN 202211740220A CN 116432185 B CN116432185 B CN 116432185B
- Authority
- CN
- China
- Prior art keywords
- function
- program
- determining
- parameter
- field
- 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.)
- Active
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 117
- 238000003860 storage Methods 0.000 title claims abstract description 21
- 230000005856 abnormality Effects 0.000 title claims description 72
- 230000006870 function Effects 0.000 claims abstract description 451
- 238000000034 method Methods 0.000 claims abstract description 63
- 230000008569 process Effects 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 16
- 230000002159 abnormal effect Effects 0.000 claims description 12
- 230000007488 abnormal function Effects 0.000 claims description 4
- 230000001502 supplementing effect Effects 0.000 claims 1
- 238000004458 analytical method Methods 0.000 abstract description 32
- 238000012546 transfer Methods 0.000 description 21
- 238000005516 engineering process Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000006872 improvement Effects 0.000 description 8
- 230000003068 static effect Effects 0.000 description 7
- 230000006399 behavior Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000000644 propagated effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 239000013589 supplement Substances 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 238000003892 spreading Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本说明书公开了一种异常检测方法、装置、可读存储介质及电子设备,根据需进行异常检测的程序和该程序对应的配置信息,确定该程序中各函数分别对应的用于表征函数中各字段的逻辑操作的语义信息,再针对每个函数,根据该函数对应的语义信息,确定参数在该函数内的各字段中的传播路径,进而基于参数在各函数中分别对应的传播路径,来确定参数在程序中的流转情况,以根据该流转情况进行异常检测。本方法不需要依赖于待解析函数的解析结果中的调用关系,而是基于语义信息确定参数在各函数中分别对应的传播路径,再基于各函数中的传播路径来确定参数在程序中的流转情况,即使在程序中包含有“框架”调用行为的函数,也能保证异常检测的准确率。
Description
技术领域
本说明书涉及计算机技术领域,尤其涉及一种异常检测方法、装置、可读存储介质及电子设备。
背景技术
目前,随着计算机技术的发展、业务深入融合的需要以及人们对自身隐私数据的愈发关注,为了避免程序在获取到人们的隐私数据后发生数据泄露的情况,如何精准确定敏感数据在程序中的流转情况,以此来对程序进行异常检测已经成为目前需要解决的问题之一。
现有技术中,一种常见的异常检测方法是基于对程序中的入口函数的解析实现的。具体的,可首先确定出程序的入口函数,并将该入口函数作为待解析函数。其次,对该待解析函数进行解析,并根据解析结果中包含的该待解析函数和其他函数的调用关系,确定其他函数。然后,将确定出的其他函数作为重新确定出的待解析函数进行解析,直至待解析函数的解析结果中不包含与其他函数的调用关系为止。最后,基于上述调用关系,确定该程序对应的调用图,再基于该调用图确定敏感数据在该程序中的数据流转情况,以进行异常检测。
但是,现有技术只能基于函数本身的代码,来确定该函数与程序中其他函数之间的调用关系,而程序中往往包含有用于实现“埋点”、“拦截器”等功能的函数,这种函数无法从函数本身的代码中确定与其他函数之间的调用关系,导致在对程序本身进行分析时,所得到的调用图往往不够完整,进而使得无法保证确定出的流转关系的准确性,影响了异常检测的准确率。
发明内容
本说明书提供一种异常检测方法、装置、可读存储介质及电子设备,以部分的解决现有技术存在的上述问题。
本说明书采用下述技术方案:
本说明书提供一种异常检测方法,包括:
根据接收到的异常检测请求,确定需进行异常检测的程序以及所述程序的配置信息;
根据所述配置信息和所述程序,确定所述程序中各函数分别对应的语义信息,所述语义信息用于表征所述函数中各字段之间的逻辑操作;
针对每个函数,根据该函数对应的语义信息,确定该函数中各字段分别对应的参数来源和参数去向,并根据各参数来源和各参数去向,确定该函数中所述参数在各字段中的传播路径,作为该函数的属性信息;
根据所述各函数分别对应的属性信息,确定所述参数在所述程序中的流转情况,并根据所述流转情况进行异常检测。
本说明书提供一种异常检测装置,包括:
接收模块,用于根据接收到的异常检测请求,确定需进行异常检测的程序以及所述程序的配置信息;
语义确定模块,用于根据所述配置信息和所述程序,确定所述程序中各函数分别对应的语义信息,所述语义信息用于表征所述函数中各字段之间的逻辑操作;
属性确定模块,用于针对每个函数,根据该函数对应的语义信息,确定该函数中各字段分别对应的参数来源和参数去向,并根据各参数来源和各参数去向,确定该函数中所述参数在各字段中的传播路径,作为该函数的属性信息;
检测模块,用于根据所述各函数分别对应的属性信息,确定所述参数在所述程序中的流转情况,并根据所述流转情况进行异常检测。
本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述异常检测方法。
本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述异常检测方法。
本说明书采用的上述至少一个技术方案能够达到以下有益效果:
根据需要进行异常检测的程序和该程序对应的配置信息,确定该程序中各函数分别对应的用于表征函数中各字段分别对应的逻辑操作的语义信息,以针对每个函数,确定该函数中该参数在各字段中的传播路径,再根据参数在各函数中的传播路径,确定参数在程序中的流转情况,来进行异常检测。
本方法基于各函数中各字段分别对应的逻辑操作,确定参数在各函数中的传播路径,进而确定参数在程序中的流转情况,即使函数中不包含调用关系,也可准确确定出参数的流转情况,保证了异常检测的效率。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附
图中:
图1为本说明书提供的异常检测方法的流程示意图;
图2为本说明书提供的异常检测方法的流程示意图;
图3为本说明书提供的异常检测装置的结构示意图;
图4为本说明书提供的对应于图1的电子设备示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
目前,在漏洞挖掘领域,使用污点分析技术将感兴趣的数据标记为污点数据,然后通过跟踪和污点数据相关的信息的流向,可以知道他们是否会影响某些关键的程序操作,进而挖掘程序漏洞,因此,污点分析技术也成为漏洞挖掘领域的热点之一。
污点分析技术主要包含有动态污点分析和静态污点分析,而由于动态污点分析需要在程序运行过程中,基于预先标注有污点标记的数据在程序中出现的位置来确定,受限于程序执行的不同分支,准确性较低,因此通常会采用静态污点分析的方法,来确定程序的漏洞。
静态污点分析是指在不运行且不修改代码的前提下,通过分析程序变量间的依赖关系来监测数据在程序中的流转情况。静态污点分析的对象一般是程序的源码或中间表示,可根据程序中的函数调用关系来确定调用图,然后,在函数内或函数根据不同语句的特性来进行具体的数据流转传播分析。其中,常见的污点传播方式包括:赋值传播、通过函数调用传播和通过指针传播。
基于此,本说明书提供一种异常检测方法,基于程序中各函数分别对应的语义数据,确定目标字段在程序中的流转情况,以避免在基于待解析函数的解析结果确定函数间的调用关系时,导致确定出的调用关系不够完整的情况,来保证异常检测的准确率。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1为本说明书提供的异常检测方法的流程示意图,具体包括以下步骤:
S100:根据接收到的异常检测请求,确定需进行异常检测的程序以及所述程序对应的配置信息。
一般的,在异常检测领域,对程序进行异常检测,来判断程序是否异常一般需要三个阶段:程序获取阶段、程序分析阶段和检测阶段。也就是说,异常检测方法需获取到需进行异常检测的程序,再对程序进行分析,确定出目标字段在程序中的流转情况,才能基于流转情况判断程序是否异常,并将判断结果作为检测结果。基于此,可首先确定需进行异常检测的程序。
在本说明书提供的一个或多个实施例中,本说明书提供的该异常检测方法,可由服务器执行。
具体的,该服务器可接收异常检测请求,其中,该异常检测请求中携带有需要进行异常检测的程序,且该异常检测请求可为响应于用户操作,由其他服务器、终端、智能设备等电子设备发送的,也可为该服务器在监测到需要进行异常检测的程序上传完毕后,由该服务器自身发起的。
当然,具体该异常检测请求如何确定可根据需要设置,本说明书对此不做限制。
于是,该服务器可在接收到该异常检测请求后,对该异常检测请求进行解析,确定该异常检测请求中携带的需要进行异常检测的程序。
当然,上述异常检测请求中还可仅携带有异常检测程序对应的元数据,则该服务器可对该异常检测请求进行解析,确定该需要进行异常检测的程序的元数据。
于是,该服务器可根据确定出的元数据,从其他设备或自身存储的数据中,确定需要进行异常检测的程序。
同时,由于程序依赖于配置文件才能够准确运行,因此,在确定程序的同时,该服务器还应确定该程序对应的配置信息,该配置信息可为该异常检测的程序中携带的,也可为根据上述确定出的元数据确定的,还可为在获取到程序后,根据程序对应的标识确定的。该配置信息可设置在独立的配置文件里,也可为基于该程序运行的虚拟环境的配置信息确定出的描述信息,具体该程序对应的配置信息如何确定,以及该配置信息对应的形式可根据需要进行设置,本说明书对此不做限制。
S102:根据所述配置信息和所述程序,确定所述程序中各函数分别对应的语义信息,所述语义信息用于表征所述函数中各字段之间的逻辑操作。
区别于依赖待解析函数的解析结果,确定函数之间的调用关系,再基于函数的调用关系来确定调用图,以基于调用图确定数据在程序中的流转情况,进而基于流转情况来进行异常检测,由于基于调用关系确定出的调用图有所缺失,导致确定出的流转情况不够准确,无法保证异常检测的准确性。
本说明书提供一种新的异常检测方法,根据异常检测请求确定需要进行异常检测的程序,以及程序对应的配置信息,再根据该程序和该配置信息,确定该程序中各函数分别对应的用于表征函数中各字段的逻辑操作的语义信息,再针对每个函数,根据该函数对应的语义信息,确定该函数中各字段分别对应的字段来源和字段去向,并基于各字段来源和字段去向,确定参数在该函数内的各字段中的传播路径,作为该函数的属性信息,进而基于各函数分别对应的属性信息,来确定参数在程序中的流转情况,以及根据该流转情况进行异常检测。
本方法不需要依赖于待解析函数的解析结果中的调用关系,而是基于语义信息确定参数在各函数中分别对应的传播路径,再基于各函数中的传播路径来确定参数在程序中的流转情况,即使在程序中包含有“框架”调用行为的函数,也能保证异常检测的准确率。
基于上述对本说明书所提供的异常检测方法的简要说明,可见,该异常检测方法,其核心思想是:基于程序和程序的配置信息,确定各函数分别对应的语义信息,再基于各语义信息,确定参数在函数中的传播路径,以及基于参数在函数中的传播路径,确定参数在程序中的传播路径。
基于此,该服务器可确定各函数分别对应的语义信息。其中,该语义信息用于表征函数中各字段之间的逻辑操作。
具体的,该服务器可针对该程序中的每个函数,对该函数进行分析,确定该函数中各字段分别对应的函数逻辑操作。其中,该函数逻辑操作可为对字段进行加、减、乘、除、赋值、传递等逻辑操作。该传递可为将该字段对应的值传递至同一函数中的其他字段,也可为将字段对应的值传递到其他函数中的其他字段,即,该传递操作可包含调用操作。
然后,该服务器可根据该程序对应的配置信息,确定该程序中至少部分字段对应的配置逻辑操作,其中,该配置逻辑操作与函数逻辑操作类似,同样可为对字段进行加、减、乘、除、赋值、传递等逻辑操作。
于是,针对每个函数,该服务器可基于上述确定出的配置逻辑操作,将该函数中各字段分别对应的函数逻辑操作进行补充,得到该函数中各字段之间的逻辑操作,作为该函数的语义信息。
其中,以A、B、C三个字段为例,若程序对应的语义信息为A=B+C,则该语义信息具体保证的含义可为:将字段B中的数据传递给字段A,将字段C中的数据传递给字段A,具体如何该语义信息的表现形式以及语义信息如何确定,可根据需要进行设置,本说明书对此不做限制。
进一步的,由于函数的中间表示(Intermediate Representation,IR)、抽象语法树(abstract syntax code,AST)等等可表征字段在函数中的传递情况,因此,在确定函数的语义信息时,还可直接确定函数的中间表示,和/或抽象语法树来作为该函数的语义信息。
具体的,该服务器可将步骤S100中获取到的程序和配置信息作为输入,输入预先设置的编译器里,得到该编译器输出的各函数分别对应的语义信息。
其中,该语义信息的形式可为图中间表示(Intermediate Representation,IR)的形式、静态单赋值(Static Single-Assignment,SSA)形式、抽象语法树(abstract syntaxcode,AST)形式、三地址码(Three Address Code,3AC)形式等等中的至少一种,具体该语义信息的形式以及该语义信息如何确定可根据需要进行设置,确定语义信息的编译器也可根据需要进行设置,本说明书对此不做限制。且由于目前基于编译器确定其对应的图中间表示、抽象语法树、三地址码等等已经是较为成熟的技术了,本说明书对编译器的具体结构以及如何设置编译器不再进行赘述。
更进一步的,通常情况下,在对函数进行解析时,可先确定该函数中各语句对应的语义信息,再基于各语句的语义信息,来得到该函数对应的语义信息。
于是,该服务器在确定函数对应的语义信息时,可针对每个函数,确定该函数对应的各语句。
然后,该服务器可对各语句逐句进行解析,也就是说,按照预设的顺序,针对该函数中的每个语句,确定该语句中各字段分别对应的函数逻辑操作。
最后,该服务器将该语句中各字段分别对应的函数逻辑操作,作为该语句对应的语义信息。并根据该函数中各语句分别对应的语义信息,确定该函数对应的语义信息。
当然,在根据该函数中各语句分别对应的语义信息确定该函数对应的语义信息时,该服务器可根据上述确定出的配置逻辑操作,将各语句中各字段的分别对应的函数逻辑操作进行补充,得到该函数中各字段之间的逻辑操作,作为该函数的语义信息。
S104:针对每个函数,根据该函数对应的语义信息,确定该函数中各字段分别对应的参数来源和参数去向,并根据各参数来源和各参数去向,确定该函数中所述参数在各字段中的传播路径,作为该函数的属性信息。
在本说明书提供的一个或多个实施例中,如前所述的,本方案的核心思想为:基于各函数分别对应的语义信息,确定参数在函数中的传播路径,再基于参数在各函数中的传播路径,确定参数在整个程序中的流转情况,而参数通常为字段中的数据,因此,针对每个函数,该服务器可确定该函数中各字段之间的传递关系,并基于各传递关系来确定参数在该函数内各字段中的传播路径。
而针对每个字段,基于函数对应的语义信息,可确定该字段对应的参数来源和参数去向,在确定出各字段分别对应的参数来源和参数去向的情况下,该服务器可确定出参数在该函数中的流转情况。
基于此,针对每个函数,该服务器可根据该函数对应的语义信息,来确定该函数中各字段分别对应的参数来源和参数去向。
具体的,以某函数的语义信息为三地址码形式为例,若语义信息为,x=A*2,y=B/2,z=x+y,C=z,则根据前述语义信息,可确定字段A的参数来源为A本身,字段A的参数去向为x。字段B的参数来源为B本身,字段B的参数去向为y。字段x的参数来源为A,字段x的参数去向为z。字段y的参数来源为B,字段y的参数去向为z。字段z的参数来源为x和y,字段z的参数去向为C。C的参数来源为z,C的参数去向为z本身。
于是,基于上述各字段分别对应的参数来源和参数去向,可确定该函数中该参数在各字段中的传播路径,如,A-x-z-C,B-y-z-C。
另外,上述三地址码中的x、y、c通常非函数本身代码中包含的字段,而是将程序和配置信息转换为三地址码形式后,该种编码的特点(或框架)为该语义信息带来的变量,因此,在确定上述参数来源和参数去向时,还可基于各变量分别对应的参数来源和参数去向,确定字段中的数据,即,参数在该函数中的传播路径。以上述三地址码为例,则参数在该函数中的传播路径可为A-C,B-C。
进一步的,除了上述将参数本身作为参数来源或者参数去向的情况外,上述参数来源,和/参数去向还可为数据库或者日志。
以方法名为A和M,字段名分别为B和C为例,若函数对应的语句为……A(B,C){D=B*2;return M(D);E.set C;log print(E);}为例,则该函数中包含有两个入参:字段B、C中的数据。对于字段B中的参数来说,该参数对应的参数来源为B,该参数在函数内的流转情况为,B-D,D-M,该参数的参数去向为方法M。而对于参数C来说,该参数对应的参数来源为C,该参数在该函数内的流转情况为C-E,E-log,该参数对应的参数去向为log,即,该参数C被传播到日志中。
于是,该服务器可将上述确定出的B-D-M,C-E-log,作为该函数对应的属性信息,以便于后续基于字段确定出字段对应的流转情况。当然,该函数对应的属性信息也可为:B-D、D-M、C-E、E-log等,具体该属性信息如何确定以及属性信息对应的形式可根据需要进行设置,本说明书对此不做限制。
更进一步的,该程序中还可包括对数据库进行操作的函数,通常情况下,会在配置信息中设置有对应的查询语句框架,以及该查询语句对应的语句标识,该对数据库进行操作的函数中会设置有语句标识。则该程序在执行过程中,若执行到该函数,该函数会根据代码中包含的语句标识,从配置信息中查询对应的查询语句框架,并将参数传递到查询语句框架中来生成查询语句,以基于查询语句来实现数据库操作。
基于此,在确定参数在函数中的流转情况时,该服务器可根据该程序对应的配置信息,确定该程序对应的各查询语句框架,以及各查询语句框架分别对应的语句标识。其中,该查询语句框架用于和参数进行组合生成查询语句。
在确定出查询语句框架后,该服务器可针对每个查询语句框架,根据该查询语句框架对应的语句标识,从该程序包含的各函数中,确定与该语句标识对应的函数,作为特定参数。
其中,该特定函数为上述对数据库进行操作的函数。
则在确定出特定函数后,该服务器可根据该特定函数的语义信息和该语句标识对应的查询语句框架,从该特定函数包含的各字段中,确定与该查询语句框架对应的字段,作为特定字段。即,确定出将参数传递到该查询语句框架中时使用的字段,作为特定字段。
在确定出特定字段后,该服务器可确定该特定字段和该查询语句框架之间的对应关系,作为第一关系,则根据该第一关系,该服务器可确定该特定字段的字段去向。也就是说,该特定字段对应的参数去向,为语句标识对应的查询语句框架。
于是,该服务器根据特定函数中各字段分别对应的参数来源和参数去向,可确定该特定函数中该参数在各字段中的传播路径。
另外,仅准确确定出函数所调用的查询语句框架,在多个函数调用该查询语句框架时,仍然可能存在有难以确定参数对应的流转情况的问题,于是,该服务器还可基于语义信息和查询语句框架,确定字段和数据库中的数据的对应关系。
具体的,该服务器可根据该特定函数的语义信息和该查询语句框架,生成查询语句,并从数据库中确定该查询语句对应的特定数据,以及确定该查询语句与该特定数据对应的第二关系,于是,该服务器可根据该第一关系和该第二关系,确定该特定字段的参数去向。
另外,与上述数据库类似,该程序中还可包含有对容器进行操作的函数,则该服务器还可确定对容器进行操作的函数,并准确确定容器中的数据与该程序中参数的对应关系,以此来准确确定参数在程序中的流转情况。
在针对每个函数,确定该函数的属性信息时,可按照各函数从前到后的顺序,以此确定各函数分别对应的属性信息,还可从该程序中未确定属性信息的各函数中随机选择任一函数,来确定该函数对应的属性信息,再从未确定属性信息的各函数中,继续选择函数来确定属性信息,直至该程序中的各函数均确定了属性信息为止。
需要说明的是,本说明书提供的该异常检测方法,为基于域分析的异常检测方法,也就是,本说明书中的该异常检测方法,是以字段为中心,对字段的扩展情况,即,传播情况等进行确定,并根据确定出的各字段的扩展情况来确定参数在程序中的流转情况的。因此,本说明书中的该异常检测方法才采用了对函数中各字段的参数来源和参数去向进行确定,并基于确定出的各字段的参数来源和参数去向来确定该异常检测方法的属性信息的步骤,以便于后续可基于该属性信息,更快地确定出参数在程序中的流转情况。其中,基于域分析,即为基于同一类型对象的不同字段进行分析,而并不对同一类型对象的不同实例进行分析。以小狗为同一类型的对象为例,小狗1和小狗2为该类型的对象对应的实例,小狗的名字、小狗的颜色等为该类型的对象对应的字段。
S106:根据所述各函数分别对应的属性信息,确定所述参数在所述程序中的流转情况,并根据所述流转情况进行异常检测。
在本说明书提供的一个或多个实施例中,如前所述的,参数在程序中的各字段与各变量之间进行流转,则基于参数在各函数中的传播路径,可确定出参数在程序中的流转情况。
具体的,该服务器可根据各函数中各字段分别对应的参数来源和参数去向,来确定参数在各函数间的第一流转过程。
以函数名分别为O、P为例,若函数O的属性信息为:F-G-DB,I-L-log,函数P的属性信息为:G-log。则该服务器可根据上述参数分别对应的传播路径,来确定出参数在函数间的第一流转过程为O-G-P。
也就是说,该服务器可将各函数分别对应的属性信息进行匹配,判断各属性信息中是否包含同样字段,若包含,则可基于上述包含同样字段的两个函数,确定函数间的第一流转过程。
则在确定出各函数间的第一流转过程后,该服务器可基于该第一流转过程和各函数分别对应的属性信息,确定参数在该程序中的流转情况。
进一步的,程序中通常包含有对应的语句中包含显示调用关系对应的语句的函数,于是,该服务器还可基于函数中对应于显示调用关系的语句对应的调用关系,来确定参数在程序中的流转情况。
具体的,该服务器可从该程序中包含的各函数中,确定目标函数,其中,该目标函数为该程序中尚未确定属性信息的函数。则该服务器可从该程序中尚未确定属性信息的各函数中,随机选择任一函数作为目标函数,或按照各函数从前到后的顺序,从该程序中尚未确定属性信息的各函数中,确定目标函数。具体该目标函数如何进行设置可根据需要进行设置,本说明书对此不做限制。
在确定出目标函数后,该服务器可根据该目标函数的语义信息,判断该目标函数是否将参数传播至其他函数中。
若是,则该服务器可将该其他函数重新作为目标函数,并根据重新确定出的目标函数,继续判断该参数是否传播至其他函数,并当传播时,继续确定目标函数,直至根据重新确定出的目标函数无法确定参数继续传播至的其他函数为止。
若否,则该服务器可根据确定出的各目标函数分别对应的顺序,确定参数在该目标函数之间的第二流转过程,并根据该第二流转过程以及参数在各目标函数中分别对应的传播路径,更新该参数在该程序中的流转情况。
以函数名分别为O、P为例,若函数O中参数的属性信息为:F-G-P,I-L-log,函数P的属性信息为:G-log。则该服务器可从上述函数O、P、Q中随机选择任一函数作为目标函数,若将函数O作为目标函数,则该服务器可根据该函数O的属性信息,确定函数O和函数P之间的调用关系,于是,该服务器可将函数P作为目标函数,根据函数P的属性信息,确定该函数P未将参数传播至其他函数,则该服务器可根据函数O的属性信息和函数P的属性信息,以及确定函数O作为目标函数的顺序和确定函数P作为目标函数的顺序,确定该参数在该程序中的流转情况:F-G-log。
当然,上述基于匹配来确定参数在程序中的流转情况以及基于函数中的调用关系确定参数在程序中的流转情况可同时使用。如,先基于函数对应的代码中包含的调用关系来确定参数在程序中的流转情况,再基于各函数中各字段分别对应的参数来源和参数去向,对参数在程序中的流转情况进行更新。
在确定出流转情况后,该服务器可对该流转情况进行异常检测。其中,该服务器中可预设有异常规则,如,若将敏感数据直接存储到数据库中,则程序异常,若将敏感数据直接打印到日志中,则程序异常。
于是,该服务器可基于上述流转情况,确定敏感数据在该程序中的传播位点,再基于上述传播位点是否满足预设的敏感条件,来判断该程序是否异常。
而本说明书所提供的该异常检测方法,为基于静态污点分析的异常检测方法,因此,针对该程序中的每个字段,若该字段的字段来源为非安全环境,可确定该字段中的数据,即,参数为敏感数据。
其中,该非安全环境的类型可预先进行设置,如,设置用户请求为非安全环境,则一旦字段的字段来源为用户请求,则认为该字段中的数据为敏感数据。当然,也可预先设置安全环境,则除安全环境以外的其他环境,都为非安全环境。如,设置数据库为安全环境,则一旦字段的字段来源部位数据库,则认为该字段中的数据为敏感数据。具体如何设置字段中的数据为敏感数据可根据需要进行设置,本说明书对此不做限制。
基于图1所示的异常检测方法,根据异常检测请求确定需要进行异常检测的程序,以及程序对应的配置信息,再根据该程序和该配置信息,确定该程序中各函数分别对应的用于表征函数中各字段的逻辑操作的语义信息,再针对每个函数,根据该函数对应的语义信息,确定该函数中各字段分别对应的字段来源和字段去向,并基于各字段来源和字段去向,确定参数在该函数内的各字段中的传播路径,作为该函数的属性信息,进而基于各函数分别对应的属性信息,来确定参数在程序中的流转情况,以及根据该流转情况进行异常检测。本方法不需要依赖于待解析函数的解析结果中的调用关系,而是基于语义信息确定参数在各函数中分别对应的传播路径,再基于各函数中的传播路径来确定参数在程序中的流转情况,即使在程序中包含有“框架”调用行为的函数,也能保证异常检测的准确率。
另外,目前在确定调用关系时,通常会对程序进行分析,以此来确定针对每个对象,来确定该对象中的敏感数据在该程序中的数据流转情况。或针对每个对象的每个字段,确定该对象的该字段在该程序中的数据流转情况。但每个对象通常包含有多个字段,若针对每个对象,确定该对象对应的流转情况,则可能无法确定出较为准确的流转情况,进而当仅存在一个字段中的数据为敏感数据时,无法准确确定该字段对应的流转情况。而若针对该对象的每个字段,都确定该字段对应的数据流转情况,则确定时所需的计算资源和人工成本较高。因此,本说明书提供的该异常检测方法为针对每个字段,确定该字段对应的流转情况。兼顾了成本、效率与准确性。
进一步的,在对程序进行污点分析时,还可能出现需基于程序中包含的显示调用关系来确定参数在程序中的流转情况来进行异常检测的方法。具体的,可首先确定出程序的入口函数,并将该入口函数作为待解析函数。其次,对该待解析函数进行解析,并根据解析结果中包含的该待解析函数和其他函数的调用关系,确定其他函数。然后,将确定出的其他函数作为重新确定出的待解析函数进行解析,直至待解析函数的解析结果中不包含与其他函数的调用关系为止。最后,基于上述调用关系,确定该程序对应的调用图,再基于该调用图以此对图中各函数节点进行自上而下地数据流转追踪,确定敏感数据在该程序中的数据流转情况,以进行异常检测。
但是,上述基于显示调用关系来进行异常检测的方法,需在待解析函数中包含显示调用关系的情况下,才可基于显示调用关系,确定该包含有该待解析函数与其他函数的调用关系的解析结果。在确定出该解析结果后,才能基于各待解析函数的解析结果,确定程序对应的调用图。才能基于该调用图,从入口函数开始,自上而下地对参数流转至的函数进行分析,以确定各函数之间的调用关系,以此来确定敏感数据在该程序中的数据流转情况。其中,自上而下为从参数的来源开始,对参数的传播情况进行分析,直至参数不再继续传播为止。
也就是说,上述基于显示调用关系来进行异常检测的方法,往往只能基于显示的调用关系对应的语句,来确定待解析函数和其他函数之间的调用关系。但程序中各函数之间的调用关系不仅包含显示调用关系,还存在隐式调用关系。其中,该隐式调用关系往往无法从待解析函数对应的语句中,找到与之对应的函数调用语句,也就是说,基于待解析函数的解析结果,无法确定该解析函数和其他函数之间的调用关系。
以前述用于实现“埋点”、“拦截器”等功能的“框架”调用行为的函数为例,这种函数通常与程序中其他函数之间存在隐式调用关系。但若对上述被隐式调用的函数进行解析,其得到的解析结果中往往并不包含有与该“框架”调用行为的函数的调用关系,因为从上述被隐式调用的函数的源程序中,无法找到与“调用关系”对应的函数调用语句。导致确定出的调用关系不够准确。其中,将调用信息部署在配置文件中,在程序运行过程中,基于配置文件,对程序中的函数进行调用的行为,为“框架”调用行为。
因此,在仅对待检测程序本身进行分析的情况下,所得到的各函数之间的调用关系往往不够完整,进而导致确定出的调用图有所缺失。缺失了上述由于“框架”调用行为而未确定出的隐式调用关系,这就导致确定出的流转关系的准确性较低,影响了异常检测的准确率。且由于目前仅能基于调用图,从入口函数开始,自上而下地确定各函数之间的调用关系,在调用图中任意一个函数的调用关系确定错误或者没有确定出的情况下,无法对后续其他函数的调用关系进行分析,进一步导致目前异常检测准确率较低。
而本说明书提供的该异常检测方法,其目的是为了在确定出各字段分别对应的参数来源和参数去向后,可直接基于前述参数来源和参数去向,确定各函数之间的调用关系,进而基于确定出的调用关系,确定参数在函数间的流转情况。以根据参数在函数间的流转情况以及参数在各函数内分别对应的函数内流转情况,确定参数在程序中的流转情况,确定出的流转情况更加准确,避免了目前基于显示调用关系确定参数流转情况时出现的不准确的问题。
且本说明书中的该异常检测方法不需要如目前的异常检测方法中,先对各函数进行解析,再基于显示调用关系确定调用图,之后再根据调用图,从入口函数开始,自上而下地确定各函数之间的调用关系。而是基于各字段的参数来源和参数去向,直接确定各函数分别对应的属性信息,进而基于属性信息来确定参数之间的流转情况。本说明书中的该异常检测方法并不强依赖于目前基于调用图来自上而下地分析得到参数的流转情况,也可准确确定出函数间的调用关系,进而得到更准确的参数流转情况。或者说,本说明书提供的该异常检测方法,在确定参数在程序中的流转情况时,本就是自下而上,或者不根据各函数的先后调用来确定的。若基于自上而下对函数进行分析来确定参数在程序中的流转情况,反而会错漏掉被隐式调用的函数,得不偿失。其中,该自上而下为从参数的来源开始,对参数的传播情况进行分析,直至参数不再继续传播为止。自下而上即为从参数传播的终点开始,对参数的传播情况进行分析,直至找到参数对应的来源。本申请中采用何种分析方法来确定参数在程序中的流转情况,可根据需要进行设置,本说明书对此不做限制。
另外,在根据流转情况进行异常检测时,若仅基于函数的流转情况和异常规则,而不考虑参数在程序中被如何处理,则可能会出现错判的情况。以参数为敏感数据为例,则参数的传播位点包含日志,则该参数可为认为被打印到日志中,在此情况下,可确定程序存在异常。但若上述参数在打印到日志中之前,先进行了脱敏,并将脱敏后的数据打印到日志中。显然,这种情况下还将程序确定为异常程序是不合适的。
基于此,该服务器在根据函数对应的语义信息在确定函数中各字段分别对应的参数来源和参数去向的同时,还可确定参数对应的操作,如,加、减、乘、除、置空、将参数中数据中的前n位替换为0等等。并根据各字段分别对应的参数来源、参数去向和参数对应的操作,确定该函数的属性信息。则在基于各函数的属性信息确定参数在程序中的流转情况的同时,该服务器还可确定出参数在程序中的各函数中如何被处理的,即,参数在程序中的处理情况。于是,该服务器可根据确定出的参数在程序中的流转情况和处理情况,来确定程序是否异常。
基于同样思路,本说明书还提供一种异常检测方法的流程示意图,如图2所示。
图2为本说明书提供的异常检测方法的流程示意图,该服务器可根据需进行异常检测的程序以及该程序对应的配置信息,确定该程序对应的语义信息,并基于语义信息对该程序进行数据库建模,即,确定出该程序中,各函数与数据库中存储的数据之间的对应关系。之后,该服务器可对该程序中包含的各函数进行分析。
具体的,该服务器可首先判断程序中是否存在未进行分析的函数,若是,则该服务器可从各函数中确定目标函数,该目标函数可为从该程序中尚未分析的函数中随机选择,也可为按照各函数的顺序依次确定。
在确定出目标函数后,该服务器可对该目标函数进行分析,即,确定该目标函数中,各字段分别对应的参数来源和参数去向,以确定参数在该目标函数中的传播路径。
在对目标函数进行分析时,若该目标函数调用了其他函数,即,该目标函数流转至其他函数,则该服务器可判断在确定出的其他函数中,该参数传播路径是否已经生成。若生成了,则该服务器可将确定出的其他函数中,该参数对应的传播路径进行调用,并基于获取到的该参数在其他函数中的传播路径,来生成该参数在该目标函数中的传播路径。
若该目标函数未调用其他函数,则该服务器可直接基于各字段的参数来源和参数去向,确定参数在该目标函数中的传播路径。
当该程序中所有函数都确定出传播路径后,该服务器可基于参数在各函数之间的传播路径,来生成参数在程序中的流转情况。
目前在进行异常检测时,通常会针对每个参数,对程序中的函数进行逐一分析,来确定该参数在该程序中的流转情况,而在参数存在多个的情况下,若一个函数内使用了多个入参,则需要对该函数进行重复分析,来确定各参数分别对应的流转情况。而在本说明书提供的一个或多个实施例中,即使有多个参数,在确定各函数分别对应的属性信息时,可针对每个函数,确定各参数在该函数中分别对应的传播路径,作为该函数对应的属性信息,则在有多个参数的场景中,本说明书提供的该异常检测方法仅需确定以此该函数对应的属性信息即可,不需要对函数进行重复分析,保证了异常检测的效率。
需要说明的是,本说明书中所有获取信号、信息或数据的动作都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
基于同样思路,本说明书还提供一种异常检测装置,如图3所示。
图3为本说明书提供的异常检测装置的结构示意图,其中:
接收模块200,用于根据接收到的异常检测请求,确定需进行异常检测的程序以及所述程序的配置信息。
语义确定模块202,用于根据所述配置信息和所述程序,确定所述程序中各函数分别对应的语义信息,所述语义信息用于表征所述函数中各字段之间的逻辑操作。
属性确定模块204,用于针对每个函数,根据该函数对应的语义信息,确定该函数中各字段分别对应的参数来源和参数去向,并根据各参数来源和各参数去向,确定该函数中所述参数在各字段中的传播路径,作为该函数的属性信息。
检测模块206,用于根据所述各函数分别对应的属性信息,确定所述参数在所述程序中的流转情况,并根据所述流转情况进行异常检测。
可选的,所述语义确定模块202,用于确定所述程序中,各函数中的各字段分别对应的函数逻辑操作,根据所述配置信息,确定所述程序对应的至少部分字段的配置逻辑操作,针对每个函数,根据所述配置逻辑操作,对该函数中各字段分别对应的函数逻辑操作进行补充,得到该函数中各字段之间的逻辑操作,作为该函数的语义信息。
可选的,所述传播路径包含传播起点、传播终点和传播路段,所述检测模块206,用于根据所述各函数中各字段分别对应的参数来源和参数去向,确定所述参数在所述各函数间的第一流转过程,根据所述第一流转过程和所述各函数分别对应的属性信息,确定所述参数在所述程序中的流转情况。
可选的,所述检测模块206,用于从所述程序包含的各函数中,确定目标函数,并根据所述目标函数的语义信息,判断所述目标函数是否将所述参数传播至其他函数,若是,则将所述其他函数重新确定为目标函数,并根据重新确定的目标函数,继续判断所述参数是否传播至其他函数,直至根据重新确定的目标函数确定所述参数不再传播至其他函数为止,若否,则根据确定出的各目标函数的顺序,确定所述参数在各目标函数之间的第二流转过程,根据所述第二流转过程以及所述参数在所述各目标函数中分别对应的传播路径,更新所述参数在所述程序中的流转情况。
可选的,所述程序包含用于生成查询语句,并根据所述查询语句执行数据库操作的函数;所述属性确定模块204,用于根据所述配置信息,确定所述程序对应的各查询语句框架,以及各查询语句框架分别对应的语句标识,所述查询语句框架用于和所述参数进行组合生成查询语句,针对每个语句标识,根据该语句标识,从所述程序包含的各函数中,确定与该语句标识对应的函数,作为特定函数,所述特定函数用于调用该语句标识对应的查询语句框架,并根据所述查询语句框架和字段中的数据,生成查询语句,以基于所述查询语句执行数据库操作,根据所述特定函数的语义信息和所述语句标识对应的查询语句框架,从所述特定函数包含的各字段中,确定与所述查询语句框架对应的字段,作为特定字段,并确定所述特定字段和所述语句标识对应的查询语句框架,作为第一关系,以及根据所述第一关系确定所述特定字段的参数去向,根据特定函数中各字段分别对应的参数来源和参数去向,确定所述特定函数中所述参数在各字段中的传播路径。
可选的,所述属性确定模块204,用于根据所述特定函数的语义信息和所述查询语句框架,生成查询语句,并从数据库中确定所述查询语句对应的特定数据,以及确定所述查询语句与所述特定数据对应的第二关系,根据所述第一关系和所述第二关系,确定所述特定字段的参数去向。
可选的,所述检测模块206,用于若所述流转情况满足预设的异常条件,则根据所述流转情况和所述异常条件,确定所述程序中存在异常的函数,作为异常函数,根据所述异常检测请求,将所述异常函数作为检测结果进行返回。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图1提供的异常检测方法。
本说明书还提供了图4所示的电子设备的示意结构图。如4所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图1所述的异常检测方法。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程异常检测设备的处理器以产生一个机器,使得通过计算机或其他可编程异常检测设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程异常检测设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程异常检测设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、键值对、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
Claims (9)
1.一种异常检测方法,所述方法包括:
根据接收到的异常检测请求,确定需进行异常检测的程序以及所述程序的配置信息;
根据所述配置信息和所述程序,确定所述程序中各函数分别对应的语义信息,所述语义信息用于表征所述函数中各字段之间的逻辑操作;
针对每个函数,根据该函数对应的语义信息,确定该函数中各字段分别对应的参数来源和参数去向,并根据各参数来源和各参数去向,确定该函数中所述参数在各字段中的传播路径,作为该函数的属性信息;
根据所述各函数分别对应的属性信息,确定所述参数在所述程序中的流转情况,并根据所述流转情况进行异常检测;
所述程序包含用于生成查询语句,并根据所述查询语句执行数据库操作的函数;
确定该函数中所述参数在各字段中的传播路径,具体包括:
根据所述配置信息,确定所述程序对应的各查询语句框架,以及各查询语句框架分别对应的语句标识,所述查询语句框架用于和所述参数进行组合生成查询语句;
针对每个语句标识,根据该语句标识,从所述程序包含的各函数中,确定与该语句标识对应的函数,作为特定函数,所述特定函数用于调用该语句标识对应的查询语句框架,并根据所述查询语句框架和字段中的数据,生成查询语句,以基于所述查询语句执行数据库操作;
根据所述特定函数的语义信息和所述语句标识对应的查询语句框架,从所述特定函数包含的各字段中,确定与所述查询语句框架对应的字段,作为特定字段,并确定所述特定字段和所述语句标识对应的查询语句框架,作为第一关系,以及根据所述第一关系确定所述特定字段的参数去向;
根据特定函数中各字段分别对应的参数来源和参数去向,确定所述特定函数中所述参数在各字段中的传播路径。
2.如权利要求1所述的方法,根据所述配置信息和所述程序,确定所述程序中各函数分别对应的语义信息,具体包括:
确定所述程序中,各函数中的各字段分别对应的函数逻辑操作;
根据所述配置信息,确定所述程序对应的至少部分字段的配置逻辑操作;
针对每个函数,根据所述配置逻辑操作,对该函数中各字段分别对应的函数逻辑操作进行补充,得到该函数中各字段之间的逻辑操作,作为该函数的语义信息。
3.如权利要求1所述的方法,所述传播路径包含传播起点、传播终点和传播路段;
根据所述各函数分别对应的属性信息,确定所述参数在所述程序中的流转情况,具体包括:
根据所述各函数中各字段分别对应的参数来源和参数去向,确定所述参数在所述各函数间的第一流转过程;
根据所述第一流转过程和所述各函数分别对应的属性信息,确定所述参数在所述程序中的流转情况。
4.如权利要求1所述的方法,根据所述各函数分别对应的属性信息,确定所述参数在所述程序中的流转情况,具体包括:
从所述程序包含的各函数中,确定目标函数,并根据所述目标函数的语义信息,判断所述目标函数是否将所述参数传播至其他函数;
若是,则将所述其他函数重新确定为目标函数,并根据重新确定的目标函数,继续判断所述参数是否传播至其他函数,直至根据重新确定的目标函数确定所述参数不再传播至其他函数为止;
若否,则根据确定出的各目标函数的顺序,确定所述参数在各目标函数之间的第二流转过程,根据所述第二流转过程以及所述参数在所述各目标函数中分别对应的传播路径,更新所述参数在所述程序中的流转情况。
5.如权利要求1所述的方法,根据所述第一关系确定所述特定字段的参数去向,具体包括:
根据所述特定函数的语义信息和所述查询语句框架,生成查询语句,并从数据库中确定所述查询语句对应的特定数据,以及确定所述查询语句与所述特定数据对应的第二关系;
根据所述第一关系和所述第二关系,确定所述特定字段的参数去向。
6.如权利要求1所述的方法,根据所述流转情况进行异常检测,具体包括:
若所述流转情况满足预设的异常条件,则根据所述流转情况和所述异常条件,确定所述程序中存在异常的函数,作为异常函数;
根据所述异常检测请求,将所述异常函数作为检测结果进行返回。
7.一种异常检测装置,所述装置包括:
接收模块,用于根据接收到的异常检测请求,确定需进行异常检测的程序以及所述程序的配置信息;
语义确定模块,用于根据所述配置信息和所述程序,确定所述程序中各函数分别对应的语义信息,所述语义信息用于表征所述函数中各字段之间的逻辑操作;
属性确定模块,用于针对每个函数,根据该函数对应的语义信息,确定该函数中各字段分别对应的参数来源和参数去向,并根据各参数来源和各参数去向,确定该函数中所述参数在各字段中的传播路径,作为该函数的属性信息;
检测模块,用于根据所述各函数分别对应的属性信息,确定所述参数在所述程序中的流转情况,并根据所述流转情况进行异常检测;
所述程序包含用于生成查询语句,并根据所述查询语句执行数据库操作的函数;
所述属性确定模块,具体用于:
根据所述配置信息,确定所述程序对应的各查询语句框架,以及各查询语句框架分别对应的语句标识,所述查询语句框架用于和所述参数进行组合生成查询语句;
针对每个语句标识,根据该语句标识,从所述程序包含的各函数中,确定与该语句标识对应的函数,作为特定函数,所述特定函数用于调用该语句标识对应的查询语句框架,并根据所述查询语句框架和字段中的数据,生成查询语句,以基于所述查询语句执行数据库操作;
根据所述特定函数的语义信息和所述语句标识对应的查询语句框架,从所述特定函数包含的各字段中,确定与所述查询语句框架对应的字段,作为特定字段,并确定所述特定字段和所述语句标识对应的查询语句框架,作为第一关系,以及根据所述第一关系确定所述特定字段的参数去向;
根据特定函数中各字段分别对应的参数来源和参数去向,确定所述特定函数中所述参数在各字段中的传播路径。
8.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~6任一项所述的方法。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述权利要求1~6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211740220.9A CN116432185B (zh) | 2022-12-30 | 2022-12-30 | 一种异常检测方法、装置、可读存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211740220.9A CN116432185B (zh) | 2022-12-30 | 2022-12-30 | 一种异常检测方法、装置、可读存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116432185A CN116432185A (zh) | 2023-07-14 |
CN116432185B true CN116432185B (zh) | 2024-03-26 |
Family
ID=87080335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211740220.9A Active CN116432185B (zh) | 2022-12-30 | 2022-12-30 | 一种异常检测方法、装置、可读存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116432185B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521543A (zh) * | 2011-12-23 | 2012-06-27 | 中国人民解放军国防科学技术大学 | 一种基于动态污点分析进行消息语义解析的方法 |
CN103166942A (zh) * | 2011-12-19 | 2013-06-19 | 中国科学院软件研究所 | 一种恶意代码的网络协议解析方法 |
CN104424269A (zh) * | 2013-08-30 | 2015-03-18 | 中国电信股份有限公司 | 数据血统分析方法与装置 |
CN107545030A (zh) * | 2017-07-17 | 2018-01-05 | 阿里巴巴集团控股有限公司 | 数据血缘关系的处理方法、装置及设备 |
CN110929267A (zh) * | 2019-11-29 | 2020-03-27 | 深信服科技股份有限公司 | 代码漏洞检测方法、装置、设备及存储介质 |
CN113641701A (zh) * | 2021-10-13 | 2021-11-12 | 苏州浪潮智能科技有限公司 | 一种数据查询方法、系统、异构加速平台及存储介质 |
-
2022
- 2022-12-30 CN CN202211740220.9A patent/CN116432185B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103166942A (zh) * | 2011-12-19 | 2013-06-19 | 中国科学院软件研究所 | 一种恶意代码的网络协议解析方法 |
CN102521543A (zh) * | 2011-12-23 | 2012-06-27 | 中国人民解放军国防科学技术大学 | 一种基于动态污点分析进行消息语义解析的方法 |
CN104424269A (zh) * | 2013-08-30 | 2015-03-18 | 中国电信股份有限公司 | 数据血统分析方法与装置 |
CN107545030A (zh) * | 2017-07-17 | 2018-01-05 | 阿里巴巴集团控股有限公司 | 数据血缘关系的处理方法、装置及设备 |
CN110929267A (zh) * | 2019-11-29 | 2020-03-27 | 深信服科技股份有限公司 | 代码漏洞检测方法、装置、设备及存储介质 |
CN113641701A (zh) * | 2021-10-13 | 2021-11-12 | 苏州浪潮智能科技有限公司 | 一种数据查询方法、系统、异构加速平台及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116432185A (zh) | 2023-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107704382B (zh) | 面向Python的函数调用路径生成方法和系统 | |
CN107391101B (zh) | 一种信息处理方法及装置 | |
CN111158741B (zh) | 监控业务模块对第三方类库依赖关系变化的方法及装置 | |
CN109241026B (zh) | 数据管理的方法、装置及系统 | |
CN111400681B (zh) | 数据权限处理方法、装置及设备 | |
CN107066519A (zh) | 一种任务检测方法及装置 | |
CN108920566B (zh) | 一种对SQLite数据库的操作方法、装置及设备 | |
CN112685030A (zh) | 一种生成业务代码的方法、装置、存储介质及电子设备 | |
CN114547024A (zh) | 一种sql语句风险检测方法、装置、设备及介质 | |
CN114035805A (zh) | 用于预编译器的代码转换方法、装置、介质及设备 | |
CN115599386A (zh) | 代码生成方法、装置、设备及存储介质 | |
US20150106781A1 (en) | Verification of uml state machines | |
CN106156050B (zh) | 一种数据处理方法及装置 | |
CN111694992A (zh) | 一种数据处理方法和装置 | |
CN115618363B (zh) | 漏洞路径的挖掘方法及相关设备 | |
CN109409037B (zh) | 一种数据混淆规则的生成方法、装置及设备 | |
CN107301097B (zh) | 一种调用java对象、java对象的引用地址信息的存储方法及装置 | |
CN116432185B (zh) | 一种异常检测方法、装置、可读存储介质及电子设备 | |
CN110874322B (zh) | 一种用于应用程序的测试方法及测试服务器 | |
CN115934161A (zh) | 一种代码变更的影响分析方法、装置以及设备 | |
CN110245166A (zh) | 数据核对方法及装置 | |
CN115391426A (zh) | 一种数据查询方法、装置、存储介质及电子设备 | |
CN115390852A (zh) | 一种生成统一抽象语法树与程序分析的方法和装置 | |
CN110704742B (zh) | 一种特征提取方法及装置 | |
CN111966709A (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 |