CN114021130A - 不依赖编译的漏洞扫描方法、装置及存储介质 - Google Patents
不依赖编译的漏洞扫描方法、装置及存储介质 Download PDFInfo
- Publication number
- CN114021130A CN114021130A CN202111189845.6A CN202111189845A CN114021130A CN 114021130 A CN114021130 A CN 114021130A CN 202111189845 A CN202111189845 A CN 202111189845A CN 114021130 A CN114021130 A CN 114021130A
- Authority
- CN
- China
- Prior art keywords
- scanning
- source code
- vulnerability
- information
- data model
- 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
Images
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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种不依赖编译的漏洞扫描方法、装置及存储介质,包括:获取具有源代码的文件信息,确定源代码的语言类型,根据语言类型对源代码进行解析,得到与源代码对应的数据模型信息,对数据模型信息进行扫描,输出文件信息的漏洞扫描结果。在实际应用中当需要对源代码进行漏洞扫描时,能够根据不同源代码的不同语言类型进行相应解析,从而得到统一格式数据模型信息,再对统一格式数据模型信息进行漏洞特征匹配的扫描,准确得到漏洞扫描结果。解决SAST产品在同一个平台下能够完成不同语言的分析扫描,不再依赖于语言特定的编译器,提高通用性的同时也不需要考虑项目代码的完整性。
Description
技术领域
本发明属于静态代码漏洞扫描技术领域,尤其涉及一种不依赖编译的漏洞扫描方法、装置及存储介质。
背景技术
目前,大多数静态应用程序安全测试技术,简称SAST(Static ApplicationSecurity Testing),其起到在编码阶段分析应用程序的源代码或二进制文件的语法、结构、过程、接口等来发现程序代码存在安全漏洞的作用。一般来说首先通过调用语言的编译器或者解析器将源代码转换成一种中间代码,将其源代码之间的调用关系、执行环境、上下文等分析清楚。
然而这种方式非常依赖语言的编译器,例如Swift/Object-C(编程语言)离开了Mac OS XCode(开发工具)环境就无法完成编译,C#(编程语言)也需要基于Windows环境搭建编译环境。除了编译器对环境有要求之外,一旦提供的代码不够完善的情况下,会出现编译报错,获取到编译后的文件不够完整,可能会导致漏报的情况。
由于不同的语言编译后的二进制内容是不统一的,因此需要根据不同的语言进行深度的分析,同时要求开发人员需要对编译原理有一定了解。由此基于编译的方式进行代码分析存在通用性差问题,同时需要保证项目代码的完整性。
因此,现有技术有待于改善。
发明内容
本发明的主要目的在于提出一种不依赖编译的漏洞扫描方法、装置及存储介质,以至少解决现有漏洞扫描方法在对于程序代码进行漏洞扫描时存在通用性低的技术问题。
本发明的第一方面,提供了不依赖编译的漏洞扫描方法,包括:
获取具有源代码的文件信息;
确定源代码的语言类型;
对源代码进行与语言类型对应的解析,得到与源代码对应的数据模型信息,得到与源代码对应的数据模型信息;
对数据模型信息进行扫描,输出文件信息的漏洞扫描结果。
本发明的第二方面,提供了一种电子装置,包括存储器、处理器和总线,所述总线用于实现所述存储器、处理器之间的连接通信,所述处理器用于执行存储在所述存储器上的计算机程序,所述处理器执行所述计算机程序时,实现第一方面的方法中的步骤。
本发明的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面的不依赖编译的漏洞扫描方法的步骤。
本发明的不依赖编译的漏洞扫描方法、装置及存储介质,通过获取具有源代码的文件信息,确定源代码的语言类型,根据语言类型对源代码进行解析,得到与源代码对应的数据模型信息,对数据模型信息进行分析,输出文件信息的漏洞扫描结果。在实际应用中当需要对源代码进行漏洞扫描时,能够根据不同源代码的不同语言类型进行相应分析,对所得到的统一格式数据模型信息进行漏洞特征匹配的分析,最后得到漏洞扫描结果。解决SAST产品在同一个平台下能够完成不同语言的分析扫描,不再依赖于语言特定的编译器,也不需要考虑项目代码的完整性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明第一实施例提供的不依赖编译的漏洞扫描方法的流程图;
图2为本发明中源码语言分析器的结构示意图;
图3为本发明中对数据模型信息进行不同策略扫描的流程示意图;
图4为本发明第二实施例提供的不依赖编译的漏洞扫描方法的流程图;
图5为本发明中第一操控界面的示意图;
图6为本发明中通过第一操控界面导入文件信息的示意图;
图7为本发明中所解析出的数据模型信息的一部分示意图;
图8为本发明中所解析出的数据模型信息的一部分示意图;
图9为本发明中SQL注入范例中需要动态构建的SQL语句的示意图;
图10为本发明中SQL注入范例中通过动态构建后的SQL语句的示意图;
图11为本发明第三实施例所提供的电子装置的模块连接示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
需要注意的是,相关术语如“第一”、“第二”等可以用于描述各种组件,但是这些术语并不限制该组件。这些术语仅用于区分一个组件和另一组件。例如,不脱离本发明的范围,第一组件可以被称为第二组件,并且第二组件类似地也可以被称为第一组件。
本发明的不依赖编译的漏洞扫描方法,能够应用于漏洞扫描软件(例如,SAST产品)中,该漏洞扫描软件安装于终端后,用户仅需要将待进行扫描的具有源代码的文件信息上传,由漏洞扫描软件对文件信息执行一系列步骤则可得到文件信息的漏洞扫描结果。在整个漏洞扫描过程中仅利用终端以及服务器,整体部署成本低,也不需要考虑编译器所依赖的操作系统环境,一处部署,随处可用。同时不需要考虑项目代码的完整性,尽可能的挖掘更多的漏洞,避免漏报。
图1示出了本发明第一实施例所提供的不依赖编译的漏洞扫描方法,包括:
步骤S10,获取具有源代码的文件信息;
在本实施例中,漏洞扫描软件可以通过多种方式获取具有源代码的文件信息,例如,漏洞扫描软件可直接获取由用户导入至安装有漏洞扫描软件的终端的具有源代码的文件信息;漏洞扫描软件可通过与服务器进行通信以获取具有源代码的文件信息。其中,文件信息可以是压缩包,该压缩包经过解压后可得到源代码;该文件信息一般由用户利用与源代码相关的开发软件进行编码操作后形成,如Mac OS XCode开发软件等。
步骤S20,确定源代码的语言类型;
在本实施例中,当漏洞扫描软件得到具有源代码的文件信息后,可以对文件信息进行解压操作得到存储有源代码的子文件信息,并基于子文件信息的后缀名称进行识别,以确定与后缀名称对应的语言类型,也即确定出源代码的语言类型。例如,该文件信息111.ZIP解压后得到1234.Java子文件信息,可基于子文件信息中的“Java”后缀名称确定出文件信息中的语言类型为Java。
步骤S30,对源代码进行与语言类型对应的解析,得到与源代码对应的数据模型信息;
在本实施例中,当漏洞扫描软件得到源代码的语言类型后,则对源代码进行与语言类型对应的分析,从而得到与源代码对应的数据模型信息。其中,漏洞扫描软件内可集成有源码语言分析器,该源码语言分析器具有多种解析器(每种解析器所能够解析对应的一种语言类型),这里可参考图2,源码语言分析器内集成有Java解析器、Php解析器、Python解析器等。因此无论是Java语言类型、Python语言类型还是Python语言类型的源代码,源码语言分析器都能调用对应的解析器实施分析,形成具有统一格式的数据模型信息。
需要注意的是,本发明的漏洞扫描方法基于能够将源代码解析为统一格式的数据模型信息,能够适用于不完整的源代码,不完整的代码表示不能完成编译的代码。比如,一个源代码本身能完成编译时需要有三个编码信息,现在缺少其中一个编码信息导致其无法完成编译,这种源代码称为不完整的源代码;以及一个源代码本身能完成编译时需要有三个语法正确的编码信息,现在其中一个编码信息存在语法错误,导致该编码信息无法完成编译,则这种源代码也称为不完整的源代码。
步骤S40,对数据模型信息进行扫描,输出文件信息的漏洞扫描结果。
在本实施例中,可参考图3,漏洞扫描软件集成有扫描功能,该扫描功能支持源代码质量扫描规则和源代码安全弱点扫描规则。由于实际源代码的复杂性,实现同一规则的匹配,需要通过不同的策略进行匹配,一条扫描规则可能对应多条扫描策略,扫描结束后将多个策略扫描出来的结果汇总为相应规则的结果,能够得到综合性强的漏洞扫描结果。
当得到数据模型信息后,启动扫描功能对数据模型信息进行扫描,得到与源代码相关的质量、安全弱点相关的漏洞扫描结果。在实际应用中当需要对源代码进行漏洞扫描时,能够根据不同源代码的不同语言类型进行相应分析,对所得到的统一格式数据模型信息进行扫描,最后得到漏洞扫描结果。解决SAST产品在同一个平台下能够完成不同语言的分析扫描,不再依赖于语言特定的编译器,也不需要考虑项目代码的完整性。
图4示出了本发明第二实施例所提供的不依赖编译的漏洞扫描方法,对获取具有源代码的文件信息的步骤进行具体限定,其包括:步骤S201,检测是否接收到用户所输入的仓库类型;步骤S202,若接收到用户所输入的仓库类型,从与仓库类型对应的具有存储代码功能的存储仓库中获取具有源代码的文件信息。具体的,在漏洞扫描软件的第一操控界面中检测是否接收到用户所输入的仓库类型,可参考图5的A标注的区域,该第一操控界面上可显示有多个仓库类型,例如,GIT、SVN、TFS等仓库类型。当用户通过鼠标点击其中一个仓库类型时则漏洞扫描软件可从第一操控界面中检测到用户所输入的仓库类型,从与仓库类型对应的具有存储代码功能的存储仓库中自动获取具有源代码的文件信息(例如选择GIT仓库类型时,则从GIT代码托管仓库中自动获取具有源代码的文件信息)。其中,具有存储代码功能的存储仓库会存储有子文件信息,该子文件信息为打开后可得到源代码的文件结构(同时,该子文件信息经压缩后得到文件信息)。
在本实施例中,在检测是否接收到用户所输入的仓库类型的步骤之后,包括:步骤S203,若未接收到用户所输入的仓库类型,检测是否接收到用户所输入的导入文件指令;步骤S204,若接收到用户所输入的导入文件指令,根据所述导入文件指令获取具有源代码的文件信息;步骤S205,若没有接收到用户所输入的导入文件指令,提示用户建立API接口。在具体应用时,这里可再次参考图5中B标注的区域,当用户未在第一操控界面中输入仓库类型时,用户还可以通过点击第一操作界面中的导入标识来导入待进行漏洞扫描的文件信息(如图6所示,所导入的格式一般为ZIP或者RAR,即导入的文件信息是压缩包)。而当用户既不选择仓库类型又不进行导入时,漏洞扫描软件在第一操控界面的至少一部分区域上显示第二操控界面,该第二操控界面用于提示用户建立API接口,比如,在该第二操控界面上具有目标地址输入栏,当用户在该目标地址输入栏中输入目标地址(比如是IP地址192.1.1.10),则漏洞扫描软件基于该IP地址192.1.1.10访问API接口对应的存储仓库,从而获取具有源代码的文件信息。本实施例可通过多种获取方式以得到通过不同存储方式的文件信息,获取文件信息的便利性较佳。
在本实施例中,对确定所述源代码的语言类型的步骤进行具体限定,其包括:对文件信息进行解压,得到文件信息中的子文件信息,根据子文件信息的后缀名称确定源代码的语言类型。例如,当漏洞扫描软件得到具有源代码的文件信息(比如是压缩包XXX.ZIP)时,自动对该文件信息进行解压,得到文件信息中的子文件信息(比如是压缩包里面的文件XXXXX.Java),则根据子文件信息的后缀名称(Java)确定源代码的语言类型为Java。
在本实施例中,还可以通过根据仓库类型得到与仓库类型对应的语言类型,这个所得到的与仓库类型对应的语言类型也是源代码的语言类型。进一步的,可将与仓库类型对应的语言类型、子文件信息的后缀名称所确定出的源代码的语言类型进行匹配,若两者相同,则将其一作为所确定出的语言类型,能够进一步保证文件信息中的源代码的语言类型的准确性。
在本实施例中,对根据语言类型对所述源代码进行分析,得到与源代码对应的数据模型信息的步骤进行具体限定,其包括:根据语言类型从源码语言分析器中确定与语言类型对应的解析器;利用解析器对源代码进行解析,得到与源代码对应的格式为AST的数据模型信息。例如,源码语言分析器内集成有Java解析器、Php解析器、Python解析器等。因此无论是Java语言类型、Python语言类型还是Python语言类型的源代码,源码语言分析器都能调用对应的解析器实施解析,形成具有统一格式的数据模型信息。
在对于源代码进行解析的过程中实际就是形成抽象语法树(Abstract SyntaxTree,AST),也即数据模型信息为抽象语法树。在计算机科学中,抽象语法树是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。由于每种语言都有自己的特有的语法特征,因此需要针对每种语言提供一个特有的解析器,然后生成统一格式的AST。由于输出的数据模型是一致的,因此后面源码扫描器只需要专注于规则匹配的业务逻辑。本设计中采用开源的语法生成器工具ANTLR v4(开源的组件),按照需求定制不同语言的解析器,达到针对不同语言类型的源代码进行针对性解析的作用。
在本实施例中,对数据模型信息进行扫描,输出本地文件的漏洞扫描结果的步骤包括:识别数据模型信息中的第一数据部分,利用第一预设扫描策略对第一数据部分进行扫描,得到与源代码质量相关的第一扫描结果。具体的,当数据模型信息为抽象语法树时,例如可参考图7,形成至少包括有第一数据部分和第二数据部分的抽象语法树,该第一数据部分包括抽象语法树的变量数据部分,比如图7中的name。该第二数据部分包括抽象语法树的表达式数据部分,比如图8中的ExpressionStatement。
漏洞扫描软件可以识别数据模型信息中的第一数据部分,利用第一预设扫描策略对第一数据部分进行扫描,得到与源代码质量相关的第一扫描结果;漏洞扫描软件还需要识别数据模型信息中的第二数据部分,利用第二预设扫描策略对第二数据部分进行扫描,得到与源代码安全弱点相关的第二扫描结果。其中,漏洞扫描软件通过对数据模型信息中不同数据部分执行不同的扫描策略,将分别得到与源代码质量相关的第一扫描结果、与源代码安全弱点相关的第二扫描结果作为本地文件的漏洞扫描结果进行输出。也即通过两种不同的扫描策略得到质量、安全弱点两个方面的综合扫描结果。
在本实施例中,第一预设扫描策略包括正则表达式扫描策略,利用第一预设扫描策略对所述第一数据部分进行扫描,得到与所述源代码质量相关的第一扫描结果的步骤包括:使用正则表达式扫描策略对第一数据部分的节点名称进行校验,得到检验结果,当校验结果为节点名称符合命名规则时,输出表示源代码质量为优的第一扫描结果。如果校验结果为节点名称不符合规则,则记录为不符合编码规则,并结束规则检测。例如,以Java代码为例,Java方法命名一般遵循驼峰法命名,并且首字母小写,则可根据Java代码的节点名称来判定是否符合编码规则。
在本实施例中,第二预设扫描策略包括JDBC扫描策略(Java DatabaseConnectivity,简称JDBC)、Hibernate扫描策略和mybatis扫描策略。JDBC扫描策略、Hibernate扫描策略和mybatis扫描策略属于SQL注入漏洞的相关扫描策略。利用第二预设扫描策略对第二数据部分进行扫描的步骤包括:分别利用JDBC扫描策略、Hibernate扫描策略、mybatis扫描策略对第二数据部分进行扫描。具体的,JDBC扫描策略用于检测在第二数据部分中直接调用JDBC的API接口(Application Programming Interface,应用程序接口),Hibernate扫描策略用于检测在第二数据部分中使用Hibernate框架(开放源代码的对象关系映射框架),mybatis扫描策略用于检测在第二数据部分中使用ibatis(基于SQL映射支持Java和NET的持久层框架)或者Mybatis框架(基于Java的持久层框架)。其中,分别利用JDBC扫描策略、Hibernate扫描策略、mybatis扫描策略对第二数据部分进行扫描可以得到第三扫描结果、第四扫描结果和第五扫描结果,每一种扫描结果都可以得出存在SQL(Structured Query Language)注入漏洞的第二扫描结果。也就是说进行三种不同的扫描策略的目的是保证扫描的准确性。
例如,当第三扫描结果为第二数据部分中直接调用JDBC的API接口,则第二扫描结果为存在SQL(Structured Query Language)注入漏洞;当第四扫描结果为第二数据部分中使用Hibernate框架,则第二扫描结果为存在SQL注入漏洞;当第五扫描结果为第二数据部分中使用ibatis或者Mybatis框架,则第二扫描结果为存在SQL注入漏洞。
如果不对源代码进行检测,任由源代码存在SQL注入漏洞,在具体实施源代码的应用程序中某一条SQL语句时,该漏洞会使用用户输入的数据进行动态构建的,且该数据没有经过严格的安全校验,就可能导致拼接的SQL被执行,非法获取数据库的信息,甚至篡改数据库信息,导致法生SQL注入攻击。举个例子,需要动态构建的SQL语句(参考图9),用户输入的数据为“1=1”,那通过动态构建后的SQL语句(参考图10):当record_order_info表数据达到100万条,甚至更多,该语句执行后会导致系统存现内存溢出的风险。因此本申请可检测出源代码是否存在SQL注入漏洞,且基于开源的语法生成器工具ANTLR v4设计的源代码语言分析器,可跨平台运行,可移植性、通用性高。基于抽象语法树(AST)构建统一数据模型。由于每种语言都有自己的特有的语法特征,因此需要针对每种语言提供一个特有的解析器,然后生成统一格式的AST信息,开发人员只需要专注于规则匹配的业务逻辑实现。由于输出的数据模型是一致的,因此完成一种语言的扫描规则,可以快速应用到其他语言。一条扫描规则由多种扫描策略组成,一个扫描策略对应一个Java实现类。
上述实施例中说明了本申请的漏洞扫描方法可以检测出SQL注入漏洞,但实际上本申请还可利用其余扫描规则得出其余漏洞,比如命令行注入漏洞等。这里不再具体赘述。
图11示出了本发明第三实施例所提供的电子装置,该电子装置可用于实现前述任一实施例中的不依赖编译的漏洞扫描方法。该电子装置包括:
存储器1101、处理器1102、总线1103及存储在存储器1101上并可在处理器1102上运行的计算机程序,存储器1101和处理器1102通过总线1103连接。处理器1102执行该计算机程序时,实现前述实施例中的不依赖编译的漏洞扫描方法。其中,处理器的数量可以是一个或多个。
存储器1101可以是高速随机存取记忆体(RAM,Random Access Memory)存储器,也可为非不稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1101用于存储可执行程序代码,处理器1102与存储器1101耦合。
进一步的,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是设置于上述各实施例中的电子装置中,该计算机可读存储介质可以是存储器。
该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现前述实施例中的不依赖编译的漏洞扫描方法。进一步的,该计算机可存储介质还可以是U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的可读存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种不依赖编译的漏洞扫描方法,其特征在于,所述方法包括:
获取具有源代码的文件信息;
确定所述源代码的语言类型;
对所述源代码进行与所述语言类型对应的解析,得到与所述源代码对应的数据模型信息;
对所述数据模型信息进行扫描,输出所述文件信息的漏洞扫描结果。
2.如权利要求1所述不依赖编译的漏洞扫描方法,其特征在于,所述获取具有源代码的文件信息的步骤包括:
检测是否接收到用户所输入的仓库类型;
若接收到用户所输入的仓库类型,从与所述仓库类型对应的具有存储代码功能的存储仓库中获取具有源代码的文件信息。
3.如权利要求2所述不依赖编译的漏洞扫描方法,其特征在于,在所述检测是否接收到用户所输入的仓库类型的步骤之后,包括:
若未接收到用户所输入的仓库类型,检测是否接收到用户所输入的导入文件指令;
若接收到用户所输入的导入文件指令,根据所述导入文件指令获取具有源代码的文件信息;
若没有接收到用户所输入的导入文件指令,提示用户建立API接口,所述API接口用于访问所述API接口对应的存储仓库并获取具有源代码的文件信息。
4.如权利要求1所述不依赖编译的漏洞扫描方法,其特征在于,所述确定所述源代码的语言类型的步骤包括:
对所述文件信息进行解压,得到所述文件信息中的子文件信息;
根据所述子文件信息的后缀名称确定所述源代码的语言类型。
5.如权利要求1所述不依赖编译的漏洞扫描方法,其特征在于,所述数据模型信息包括抽象语法树;
所述对所述源代码进行与所述语言类型对应的解析,得到与所述源代码对应的数据模型信息的步骤包括:
根据所述语言类型从源码语言分析器中确定与所述语言类型对应的解析器;其中,所述源码语言分析器中具有多种语言类型的解析器;
利用与所述语言类型对应的解析器对所述源代码进行解析,得到与所述源代码对应的抽象语法树。
6.如权利要求1所述不依赖编译的漏洞扫描方法,其特征在于,所述对所述数据模型信息进行扫描,输出所述本地文件的漏洞扫描结果的步骤包括:
识别所述数据模型信息中的第一数据部分,利用第一预设扫描策略对所述第一数据部分进行扫描,得到与所述源代码质量相关的第一扫描结果;
识别所述数据模型信息中的第二数据部分,利用第二预设扫描策略对所述第二数据部分进行扫描,得到与所述源代码安全弱点相关的第二扫描结果;
将所述第一扫描结果以及所述第二扫描结果作为所述本地文件的漏洞扫描结果进行输出。
7.如权利要求6所述不依赖编译的漏洞扫描方法,其特征在于,所述第一预设扫描策略包括正则表达式扫描策略;
所述利用第一预设扫描策略对所述第一数据部分进行扫描,得到与所述源代码质量相关的第一扫描结果的步骤包括:
使用正则表达式扫描策略对所述第一数据部分的节点名称进行校验;其中,所述第一数据部分包括所述数据模型信息的变量数据部分;
当所述节点名称符合命名规则时,输出表示所述源代码质量为优的第一扫描结果。
8.如权利要求6所述不依赖编译的漏洞扫描方法,其特征在于,所述第二预设扫描策略包括JDBC扫描策略、Hibernate扫描策略和mybatis扫描策略;
所述利用第二预设扫描策略对所述第二数据部分进行扫描包括:
分别利用JDBC扫描策略、Hibernate扫描策略、mybatis扫描策略对所述第二数据部分进行扫描;所述第二数据部分包括所述数据模型信息的表达式数据部分;
其中,所述JDBC扫描策略用于检测在所述第一数据部分中直接调用JDBC的API接口;所述Hibernate扫描策略用于检测在所述第二数据部分中使用Hibernate框架;所述mybatis扫描策略用于检测在所述第二数据部分中使用ibatis或者Mybatis框架。
9.一种电子装置,其特征在于,包括存储器、处理器和总线,所述总线用于实现所述存储器、处理器之间的连接通信,所述处理器用于执行存储在所述存储器上的计算机程序,所述处理器执行所述计算机程序时,实现权利要求1至8中任意一项所述方法中的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述不依赖编译的漏洞扫描方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111189845.6A CN114021130A (zh) | 2021-10-12 | 2021-10-12 | 不依赖编译的漏洞扫描方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111189845.6A CN114021130A (zh) | 2021-10-12 | 2021-10-12 | 不依赖编译的漏洞扫描方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114021130A true CN114021130A (zh) | 2022-02-08 |
Family
ID=80056198
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111189845.6A Pending CN114021130A (zh) | 2021-10-12 | 2021-10-12 | 不依赖编译的漏洞扫描方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114021130A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114756875A (zh) * | 2022-06-16 | 2022-07-15 | 荣耀终端有限公司 | 一种代码扫描方法及电子设备 |
CN115795487A (zh) * | 2023-02-07 | 2023-03-14 | 深圳开源互联网安全技术有限公司 | 漏洞检测方法、装置、设备及存储介质 |
CN116774988A (zh) * | 2023-08-16 | 2023-09-19 | 易方信息科技股份有限公司 | 解除框架包模式符号依赖的方法及装置 |
CN116881930A (zh) * | 2023-09-07 | 2023-10-13 | 思客云(北京)软件技术有限公司 | 一种基于orm框架的sql注入漏洞的分析方法与装置 |
CN117668237A (zh) * | 2024-01-29 | 2024-03-08 | 深圳开源互联网安全技术有限公司 | 用于智能模型训练的样本数据处理方法、系统及智能模型 |
-
2021
- 2021-10-12 CN CN202111189845.6A patent/CN114021130A/zh active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114756875A (zh) * | 2022-06-16 | 2022-07-15 | 荣耀终端有限公司 | 一种代码扫描方法及电子设备 |
CN114756875B (zh) * | 2022-06-16 | 2022-10-25 | 荣耀终端有限公司 | 一种代码扫描方法及电子设备 |
CN115795487A (zh) * | 2023-02-07 | 2023-03-14 | 深圳开源互联网安全技术有限公司 | 漏洞检测方法、装置、设备及存储介质 |
CN115795487B (zh) * | 2023-02-07 | 2023-05-12 | 深圳开源互联网安全技术有限公司 | 漏洞检测方法、装置、设备及存储介质 |
CN116774988A (zh) * | 2023-08-16 | 2023-09-19 | 易方信息科技股份有限公司 | 解除框架包模式符号依赖的方法及装置 |
CN116774988B (zh) * | 2023-08-16 | 2024-02-27 | 易方信息科技股份有限公司 | 解除框架包模式符号依赖的方法及装置 |
CN116881930A (zh) * | 2023-09-07 | 2023-10-13 | 思客云(北京)软件技术有限公司 | 一种基于orm框架的sql注入漏洞的分析方法与装置 |
CN116881930B (zh) * | 2023-09-07 | 2023-11-21 | 思客云(北京)软件技术有限公司 | 一种基于orm框架的sql注入漏洞的分析方法与装置 |
CN117668237A (zh) * | 2024-01-29 | 2024-03-08 | 深圳开源互联网安全技术有限公司 | 用于智能模型训练的样本数据处理方法、系统及智能模型 |
CN117668237B (zh) * | 2024-01-29 | 2024-05-03 | 深圳开源互联网安全技术有限公司 | 用于智能模型训练的样本数据处理方法、系统及智能模型 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114021130A (zh) | 不依赖编译的漏洞扫描方法、装置及存储介质 | |
CN109857641B (zh) | 对程序源文件进行缺陷检测的方法及装置 | |
CN103577324B (zh) | 移动应用中隐私信息泄露的静态检测方法 | |
US9122540B2 (en) | Transformation of computer programs and eliminating errors | |
US8527945B2 (en) | Method and system for integrating multiple scripts | |
US8615750B1 (en) | Optimizing application compiling | |
US20090313613A1 (en) | Methods and Apparatus for Automatic Translation of a Computer Program Language Code | |
CN111104677B (zh) | 基于cpe规范的漏洞补丁检测方法及装置 | |
CN112035443B (zh) | 基于Linux平台的大数据执行方法、系统、设备及存储介质 | |
CN113901083B (zh) | 基于多解析器的异构数据源操作资源解析定位方法和设备 | |
CN113961919B (zh) | 恶意软件检测方法和装置 | |
CN104134039A (zh) | 病毒查杀方法、客户端、服务器以及病毒查杀系统 | |
WO2012052215A1 (en) | Software development | |
US10782941B1 (en) | Refinement of repair patterns for static analysis violations in software programs | |
US10606569B2 (en) | Declarative configuration elements | |
CN110990833B (zh) | 一种sdk安全检测方法及相关设备 | |
US9710360B2 (en) | Optimizing error parsing in an integrated development environment | |
CN113032256A (zh) | 自动化测试方法、装置、计算机系统和可读存储介质 | |
CN113138767A (zh) | 代码语言转换方法、装置、电子设备及存储介质 | |
CN107943483B (zh) | 一种iOS中数据正向解析方法 | |
CN111151008A (zh) | 游戏运营数据的校验方法、装置、配置后台及介质 | |
CN114489653A (zh) | 基于编译器的数据处理方法、装置以及可读存储介质 | |
Liu et al. | ReuNify: A Step Towards Whole Program Analysis for React Native Android Apps | |
US12007883B2 (en) | Automated method and system for finding vulnerabilities in a program using fuzzing | |
US20230214318A1 (en) | Automated method and system for finding vulnerabilities in a program using fuzzing |
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 |