CN114048488B - 漏洞检测方法及系统 - Google Patents

漏洞检测方法及系统 Download PDF

Info

Publication number
CN114048488B
CN114048488B CN202210036060.3A CN202210036060A CN114048488B CN 114048488 B CN114048488 B CN 114048488B CN 202210036060 A CN202210036060 A CN 202210036060A CN 114048488 B CN114048488 B CN 114048488B
Authority
CN
China
Prior art keywords
function
loading
code
data
detection
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
Application number
CN202210036060.3A
Other languages
English (en)
Other versions
CN114048488A (zh
Inventor
吴凤娟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Moan Technology Co ltd
Original Assignee
Hangzhou Moan Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Moan Technology Co ltd filed Critical Hangzhou Moan Technology Co ltd
Priority to CN202210036060.3A priority Critical patent/CN114048488B/zh
Publication of CN114048488A publication Critical patent/CN114048488A/zh
Application granted granted Critical
Publication of CN114048488B publication Critical patent/CN114048488B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/032Protect output to user by software means

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开一种漏洞检测方法及系统,用于在待检测应用的启动阶段,于待检测应用中织入检测代码;其中,于待检测应用中织入检测代码的具体步骤为:加载配置文件,所述配置文件包括若干条与第三方库相映射的规则数据;获取加载数据,所述加载数据用于指示待测试应用所运用的第三方库;基于所述加载数据从所述配置文件中提取相对应的规则数据,获得目标规则数据;基于所述目标规则数据生成相应的检测代码并织入。本发明能够于待检测应用中织入检测代码,在应用运行阶段,通过运行所织入的检测代码,以实现基于IAST对待检测应用进行漏洞检测。

Description

漏洞检测方法及系统
技术领域
本发明涉及软件测试领域,尤其涉及一种对node.JS应用进行漏洞检测的漏洞检测技术。
背景技术
node.JS是基于Chrome V8引擎的JavaScript运行时平台,用于方便地响应速度快、易于扩展的网络应用,本说明书中将利用node.JS开发的应用称为node.JS应用。
IAST(交互式应用安全测试)是一种在应用自动化识别和诊断软件漏洞的技术,相较于DAST(动态应用安全测试,黑盒)和SAST(静态应用安全测试,白盒)有低误报、低漏报的优势。
IAST基于字节码插桩实现,该技术方案只适用于JAVA语言。
发明内容
本发明针对现有技术中的node.JS领域中缺少字节码插桩技术,难以基于IAST对node.JS应用进行漏洞检测的缺点,提供了一种漏洞检测技术,能够于待测试应用中织入检测代码,以便于在应用运行阶段,通过执行所述检测代码,实现IAST的功能。
为了解决上述技术问题,本发明通过下述技术方案得以解决:
一种漏洞检测方法,用于对node.JS应用进行漏洞检测,包括以下步骤:
启动待检测应用,并于所述待检测应用中织入检测代码;
运行织入检测代码的待检测应用,当所述检测代码被执行时,生成相应的漏洞数据;
漏洞数据例如可包括漏洞数据流、测试请求、代码位置信息、漏洞参数等数据,当所述检测代码检测到漏洞时,将所生成的漏洞数据上传至IAST服务端,由IAST服务端进行展示此部分为IAST常规功能,故不再本说明书中进行详细介绍。
其中,于所述待检测应用中织入检测代码的具体步骤为:
加载配置文件,所述配置文件包括若干条与第三方库相映射的规则数据,第三方库可与多条规则数据相映射;
获取加载数据,所述加载数据用于指示待测试应用所运用的第三方库,加载数据包括对应第三方库的名称信息;
基于所述加载数据从所述配置文件中提取相对应的规则数据,获得目标规则数据,即,调取待测试应用所运用的第三方库所对应的规则数据;
基于所述目标规则数据生成相应的检测代码并织入。
由于node.JS应用的功能的实现,往往需要通过调用第三方库,本发明通过预先配置规则数据,以指示针对各类第三方库的漏洞检测规则,再针对待测试应用所运用的第三方库,基于与所运用的第三方库所对应的规则数据编入检测代码。
作为一种可实施方式,所述规则数据包括函数信息和相应的检测规则信息,基于所述目标规则数据生成相应的检测代码并织入的具体步骤为:
基于所述目标规则数据中的函数信息确定待监测函数;
基于所述目标规则数据中的所述检测规则信息生成相应的检测代码,并基于所述检测代码重定义所述待监测函数,获得包含所述检测代码和所述待监测函数的目标函数。
进一步地:
运行阶段中,当目标函数被调用时,执行所述目标函数中的检测代码和待监测函数,基于所述检测代码进行漏洞检测,生成所述待监测函数所对应的漏洞数据。
作为一种可实施方式,加载配置文件的具体步骤为:
对所述待检测应用的入口函数进行重定义,所述重定义的入口函数中包含第一逻辑代码,所述第一逻辑代码被执行时调用并加载预设的配置文件。
上述入口函数为Module.runMain。
将待检测应用的入口函数记为原始入口函数,本发明在启动待检测应用时,加载agent工具,由加载完成的agent工具重定义该原始入口函数,重定义的入口函数包括第一逻辑代码和该原始入口函数;
在node.JS应用启动过程中,将执行入口函数,本发明通过agent工具对入口函数进行重定义,使得所执行的是重定义的入口函数,此时将执行第一逻辑代码以获取配置文件,并执行原始入口函数,以保证待检测应用能够正常启动。
进一步地,获取加载数据的具体步骤为:
所述第一逻辑代码被执行时还对所述待检测应用的加载函数进行重定义,所述加载函数用于加载第三方库,重定义的加载函数包含第二逻辑代码;
所述第二逻辑代码被执行时,收集所述加载函数所对应的加载数据。
上述加载函数为require函数;
将待检测应用的加载函数记为原始加载函数,本发明在执行重定义的入口函数时,执行所织入的第一逻辑代码,由第一逻辑代码重写该原始加载函数,所得重定义的加载数据包括第二逻辑代码和该原始加载函数;
在node.JS应用启动过程中,将将执行加载函数以加载所需的第三方库,本发明对加载函数进行重写,故此时执行的是重定义的加载函数;
由于原始加载函数中写有需加载的第三方库的名称信息,通过第二逻辑代码获取原始加载函数中第三方库的名称信息,从而获得相应的加载数据。
综上,本发明通过对入口函数、require函数的重定义,以实现从入口文件进入,确定待测试应用所运用的第三方库,从而提取相应的规则数据,以织入相应的检测代码,以实现针对第三方库的漏洞检测,即,对实现对待检测应用的漏洞检测。
作为一种可实施方式:
所述第二逻辑代码被执行时,还基于所述加载数据从配置文件中查询相对应的规则数据,将所得规则数据作为目标规则数据。
作为一种可实施方式:
所述第二逻辑代码被执行时,还用于收集加载函数所加载的第三方库的参数信息,获得相应的第三方库信息并上报。
本发明中,将所得的第三方库信息上传至IAST服务端,由IAST服务端进行第三方库漏洞检测;
第三方库漏洞检测即检测cve漏洞,即IAST服务端预设存在漏洞的第三方库信息表,基于收集的第三方库信息进行版本匹配,以判断是否有漏洞;
CVE ,“Common Vulnerabilities & Exposures”通用漏洞披露;
注:本发明中所织入的检测代码是基于第三方库对待检测应用所存在的漏洞进行检测,第三方库漏洞检测则是检测第三方库本身是否存在漏洞。
为解决上述技术问题,本发明还提出一种用于对node.JS应用进行漏洞检测的漏洞检测系统,包括:
织入模块,用于在待检测应用启动时,于所述待检测应用中织入检测代码;
运行模块,用于运行织入检测代码的待检测应用,当所述检测代码被执行时,生成相应的漏洞数据;
所述织入模块包括:
第一执行模块,用于加载配置文件,所述配置文件包括若干条与第三方库相映射的规则数据;
第二执行模块:
加载单元,用于获取加载数据,所述加载数据用于指示待测试应用所运用的第三方库;
提取单元,用于基于所述加载数据从所述配置文件中提取相对应的规则数据,获得目标规则数据;
织入单元,用于基于所述目标规则数据生成相应的检测代码并织入。
作为一种可实施方式:
所述规则数据包括函数信息和相应的检测规则信息;
所述织入单元:
用于基于所述目标规则数据中的函数信息确定待监测函数;
还用于基于所述目标规则数据中的所述检测规则信息生成相应的检测代码,并基于所述检测代码重定义所述待监测函数,获得包含所述检测代码和所述待监测函数的目标函数。
作为一种可实施方式:
所述织入模块还包括第一重写模块;
所述第一重写模块,用于对所述待检测应用的入口函数进行重定义,所述重定义的入口函数中包含第一逻辑代码;
第一执行模块,用于当重定义的入口函数被执行时,执行所述第一逻辑代码,调用并加载预设的配置文件,还对所述待检测应用的加载函数进行重定义,所述加载函数用于加载第三方库,重定义的加载函数包含第二逻辑代码,所述第二逻辑代码包括第一行动代码、第二行动代码和第三行动代码;
加载单元,用于执行所述第一行动代码,获取加载数据;
提取单元,用于执行所述第二行动代码,基于所述加载数据从所述配置文件中提取相对应的规则数据,获得目标规则数据;
织入单元,用于执行所述第三行动代码,基于所述目标规则数据生成相应的检测代码并织入。
本发明由于采用了以上技术方案,具有显著的技术效果:
本发明能够于待检测应用中织入检测代码,在应用运行阶段,通过运行所织入的检测代码,以实现基于IAST对待检测应用进行漏洞检测。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是实施例1中步骤S100启动阶段所对应的流程示意图;
图2是本发明一种漏洞检测系统的模块连接示意图;
图3是图2中第二执行模块120的模块连接示意图。
具体实施方式
下面结合实施例对本发明做进一步的详细说明,以下实施例是对本发明的解释而本发明并不局限于以下实施例。
实施例1、一种漏洞检测方法,用于对node.JS应用进行漏洞检测,包括以下步骤:
S100、启动阶段:
于待检测应用中织入agent漏洞检测逻辑代码;
agent漏洞检测逻辑代码包括第一逻辑代码、第二逻辑代码和检测代码,其中检测代码用于进行漏洞检测,参照图1,具体织入方式包括以下步骤:
S110、织入第一逻辑代码:
S111、在待检测应用启动时添加插件启动参数,加载agent工具;
所述插件启动参数用于指示待检测应用携带插件启动;
所述agent工具为代理工具。
S112、由agent工具对所述待检测应用的入口函数进行重定义;
本实施例中入口函数为Module.runMain函数,Module.runMain函数被执行时将加载node.JS应用执行的入口文件;
将重定义前的入口函数记为第一入口函数,将重定义后的入口函数记为第二入口函数,第二入口函数包括第一逻辑代码和第一入口函数。
S120、加载配置文件,并织入第二逻辑代码:
即,执行第二入口函数(重定义的入口函数),通过第二入口函数中的第一逻辑代码加载配置文件,并织入第二逻辑代码;
图1中粗实线所对应的流程为待检测应用的启动过程,细实线所对应的流程则为所织入的代码的执行过程,agent工具加载完成后,将继续执行待检测应用的应用代码,当执行到入口函数时,由于步骤S112中对入口函数进行重定义,故执行重定义的入口函数,即执行第二入口函数。
执行第二入口函数的步骤为:
S121、执行第一逻辑代码:
由第一逻辑代码调取并加载预设的配置文件,还对加载函数进行重定义。
配置文件包括若干条规则数据,所述规则数据包括库信息、函数信息和检测规则信息,其中库信息为第三方库的名称,函数信息为函数名称,检测规则信息用于指示预设的漏洞检测逻辑,配置文件通过库信息与第三方库相映射。
本实施例中加载函数为require函数,require函数被执行时将加载node.JS应用所依赖的第三方库;
将重定义前的加载函数记为第一加载函数,将重定义后的加载函数记为第二加载函数,第二加载函数包括第二逻辑代码和第一加载函数。
注:第一逻辑代码还用于收集环境信息,并将环境信息上报至IAST服务端,由IAST服务端进行展示。
S122、执行第一入口函数:
即执行Module.runMain函数,以加载待检测应用执行的入口文件,保证待检测应用的整层hang启动。
130、织入检测代码:
即,在执行第二加载函数(重定义的加载函数),通过执行第二逻辑代码实现检测代码的织入;
本实施例中第二逻辑代码包括三部分行动代码:
第一行动代码用于收集第一加载函数所加载的第三方库的名称,以生成相应的加载数据;
第二行动代码用于基于加载数据提取相对应的规则数据,获得目标规则数据;
第二行动代码用于基于目标规则数据生成并织入相应的检测代码。
执行第二加载函数的步骤为:
S121、执行第一行动代码:
require函数中写入需加载的第三方库的参数信息;
由第一行动代码收集第一加载函数中第三方库的参数信息,获得第三方库信息,本实施例中所述第三方库信息包括各第三方库的名称、版本号等参数信息;
将所述第三方库信息上传至相应的IAST服务端,由IAST服务端检测第三方库本身是否具有漏洞,并将相应的检测结果和第三方库信息进行展示。
从第三方库信息中提取各第三方库的名称,获得加载数据。
S122、执行第二行动代码:
由第二行动代码基于加载数据中第三方库的名称,于配置文件中查询是否存在对应第三方库的规则数据,将查询所得的规则数据作为目标规则数据。
S123、执行第三行动代码:
由第三行动代码提取每条目标规则数据中的函数信息和检测规则信息,将函数信息所对应的函数作为待监测函数,并基于检测规则信息生成相应的检测代码,生成包含所述检测代码和所述待监测函数的目标函数,并利用所述目标函数代替所述待监测函数;
即,由第三行动代码按照检测规则信息重定义相应的待监测函数,获得目标函数。
由上可知,本实施例中由第三行动代码,基于每一条目标规则数据,为与目标规则数据相对应的待监测函数织入相应的检测代码,以便于后续基于该检测代码跟踪待监测函数的执行情况,并进行漏洞判断。
S124、执行第一入口函数:
加载待检测应用所依赖的第三方库,保证待检测应用的正常启动。
通过上述步骤,在待检测应用的启动过程中,本实施例中通过重定义入口函数,以从入口函数进入,重定义加载函数,再获取待检测应用所运用的第三方库的名单,判断各第三方库是否存在预设的规则数据,如存在预设的规则数据,基于规则数据确定待监测函数,并织入与待监测函数相对应的检测代码,以完成对检测代码的织入。
S200、运行阶段:
运行agent漏洞检测逻辑代码进行漏洞检测,生成相应的漏洞数据,并将所得漏洞数据上报至IAST服务端;
具体为:
运行织入agent漏洞检测逻辑代码的待检测应用;
向所述待检测应用发送测试请求,令待检测应用基于测试请求调用相应的目标函数;
执行所述目标函数中的检测代码,由所述检测代码进行相应的漏洞检测,并基于漏洞检测结果生成相应的漏洞数据,即,当漏洞检测结果为存在漏洞时,收集漏洞数据流、测试请求、代码位置信息、漏洞参数等数据,生成相应的漏洞数据,并将漏洞数据上报至IAST服务端,由IAST 服务端对漏洞检测结果进行展示。
实施例2、一种漏洞检测系统,用于对node.JS应用进行漏洞检测,其包括Agent端和IAST服务端300,如图2所示,所述Agent端包括:
织入模块100,用于在待检测应用中织入检测代码;
运行模块200,用于运行织入检测代码的待检测应用,当所述检测代码被执行时,生成相应的漏洞数据。
所述织入模块100包括第一执行模块110和第二执行模块120:
所述第一执行模块110,用于加载配置文件,所述配置文件包括若干条与第三方库相映射的规则数据;
参照图3,所述第二执行模块120包括:
加载单元121,用于获取加载数据,所述加载数据用于指示待测试应用所运用的第三方库;
提取单元122,用于基于所述加载数据从所述配置文件中提取相对应的规则数据,获得目标规则数据;
织入单元123,用于基于所述目标规则数据生成相应的检测代码并织入。
上述规则数据包括函数信息和相应的检测规则信息,进一步地:
所述织入单元123:
用于基于所述目标规则数据中的函数信息确定待监测函数;
还用于基于所述目标规则数据中的所述检测规则信息生成相应的检测代码,并基于所述检测代码重定义所述待监测函数,获得包含所述检测代码和所述待监测函数的目标函数。
进一步地,所述织入模块100还包括第一重写模块;
所述第一重写模块,用于对所述待检测应用的入口函数进行重定义,所述重定义的入口函数中包含第一逻辑代码;
第一执行模块110,用于当重定义的入口函数被执行时,执行所述第一逻辑代码,调用并加载预设的配置文件,还对所述待检测应用的加载函数进行重定义,所述加载函数用于加载第三方库,重定义的加载函数包含第二逻辑代码,所述第二逻辑代码包括第一行动代码、第二行动代码和第三行动代码;
加载单元121,用于执行所述第一行动代码,获取加载数据;
提取单元122,用于执行所述第二行动代码,基于所述加载数据从所述配置文件中提取相对应的规则数据,获得目标规则数据;
织入单元123,用于执行所述第三行动代码,基于所述目标规则数据生成相应的检测代码并织入。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
需要说明的是:
说明书中提到的“一个实施例”或“实施例”意指结合实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,说明书通篇各个地方出现的短语 “一个实施例”或“实施例”并不一定均指同一个实施例。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
此外,需要说明的是,本说明书中所描述的具体实施例,其零、部件的形状、所取名称等可以不同。凡依本发明专利构思所述的构造、特征及原理所做的等效或简单变化,均包括于本发明专利的保护范围内。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,只要不偏离本发明的结构或者超越本权利要求书所定义的范围,均应属于本发明的保护范围。

Claims (8)

1.一种漏洞检测方法,用于对node.JS应用进行漏洞检测,其特征在于,包括以下步骤:
启动待检测应用,并于所述待检测应用中织入检测代码;
运行织入检测代码的待检测应用,当所述检测代码被执行时,生成相应的漏洞数据;
其中,于所述待检测应用中织入检测代码的具体步骤为:
加载配置文件,所述配置文件包括若干条与第三方库相映射的规则数据;
获取加载数据,所述加载数据用于指示待测试应用所运用的第三方库;
基于所述加载数据从所述配置文件中提取相对应的规则数据,获得目标规则数据;
基于所述目标规则数据生成相应的检测代码并织入;
其中,所述规则数据包括函数信息和相应的检测规则信息,基于所述目标规则数据生成相应的检测代码并织入的具体步骤为:
基于所述目标规则数据中的函数信息确定待监测函数;
基于所述目标规则数据中的所述检测规则信息生成相应的检测代码,并基于所述检测代码重定义所述待监测函数,获得包含所述检测代码和所述待监测函数的目标函数。
2.根据权利要求1所述的漏洞检测方法,其特征在于:
运行阶段中,当目标函数被调用时,执行所述目标函数中的检测代码和待监测函数,基于所述检测代码进行漏洞检测,生成所述待监测函数所对应的漏洞数据。
3.根据权利要求1或2所述的漏洞检测方法,其特征在于,加载配置文件的具体步骤为:
对所述待检测应用的入口函数进行重定义,所述重定义的入口函数中包含第一逻辑代码,所述第一逻辑代码被执行时调用并加载预设的配置文件。
4.根据权利要求3所述的漏洞检测方法,其特征在于,获取加载数据的具体步骤为:
所述第一逻辑代码被执行时还对所述待检测应用的加载函数进行重定义,所述加载函数用于加载第三方库,重定义的加载函数包含第二逻辑代码;
所述第二逻辑代码被执行时,收集所述加载函数所对应的加载数据。
5.根据权利要求4所述的漏洞检测方法,其特征在于:
所述第二逻辑代码被执行时,还基于所述加载数据从配置文件中查询相对应的规则数据,将所得规则数据作为目标规则数据。
6.根据权利要求5所述的漏洞检测方法,其特征在于:所述第二逻辑代码被执行时,还用于收集加载函数所加载的第三方库的参数信息,获得相应的第三方库信息并上报。
7.一种漏洞检测系统,用于对node.JS应用进行漏洞检测,其特征在于,包括:
织入模块,用于在待检测应用启动时,于所述待检测应用中织入检测代码;
运行模块,用于运行织入检测代码的待检测应用,当所述检测代码被执行时,生成相应的漏洞数据;
所述织入模块包括第一执行模块和第二执行模块:
所述第一执行模块,用于加载配置文件,所述配置文件包括若干条与第三方库相映射的规则数据;
所述第二执行模块包括:
加载单元,用于获取加载数据,所述加载数据用于指示待测试应用所运用的第三方库;
提取单元,用于基于所述加载数据从所述配置文件中提取相对应的规则数据,获得目标规则数据,所述规则数据包括函数信息和相应的检测规则信息;
织入单元,用于基于所述目标规则数据生成相应的检测代码并织入;
其中,所述织入单元用于基于所述目标规则数据中的函数信息确定待监测函数,还用于基于所述目标规则数据中的所述检测规则信息生成相应的检测代码,并基于所述检测代码重定义所述待监测函数,获得包含所述检测代码和所述待监测函数的目标函数。
8.根据权利要求7所述的一种漏洞检测系统,其特征在于:
所述织入模块还包括第一重写模块;
所述第一重写模块,用于对所述待检测应用的入口函数进行重定义,所述重定义的入口函数中包含第一逻辑代码;
第一执行模块,用于当重定义的入口函数被执行时,执行所述第一逻辑代码,调用并加载预设的配置文件,还对所述待检测应用的加载函数进行重定义,所述加载函数用于加载第三方库,重定义的加载函数包含第二逻辑代码,所述第二逻辑代码包括第一行动代码、第二行动代码和第三行动代码;
加载单元,用于执行所述第一行动代码,获取加载数据;
提取单元,用于执行所述第二行动代码,基于所述加载数据从所述配置文件中提取相对应的规则数据,获得目标规则数据;
织入单元,用于执行所述第三行动代码,基于所述目标规则数据生成相应的检测代码并织入。
CN202210036060.3A 2022-01-13 2022-01-13 漏洞检测方法及系统 Active CN114048488B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210036060.3A CN114048488B (zh) 2022-01-13 2022-01-13 漏洞检测方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210036060.3A CN114048488B (zh) 2022-01-13 2022-01-13 漏洞检测方法及系统

Publications (2)

Publication Number Publication Date
CN114048488A CN114048488A (zh) 2022-02-15
CN114048488B true CN114048488B (zh) 2022-04-22

Family

ID=80196523

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210036060.3A Active CN114048488B (zh) 2022-01-13 2022-01-13 漏洞检测方法及系统

Country Status (1)

Country Link
CN (1) CN114048488B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104715195A (zh) * 2015-03-12 2015-06-17 广东电网有限责任公司信息中心 基于动态插桩的恶意代码检测系统及方法
CN104951700A (zh) * 2014-10-11 2015-09-30 腾讯科技(深圳)有限公司 网页漏洞检测方法和装置
CN108459954A (zh) * 2017-02-22 2018-08-28 腾讯科技(深圳)有限公司 应用程序漏洞检测方法和装置
CN110941534A (zh) * 2019-11-19 2020-03-31 深圳开源互联网安全技术有限公司 检测web应用第三方代码调用的方法及系统
US10628586B1 (en) * 2017-11-30 2020-04-21 Palo Alto Networks, Inc. Detecting malware via scanning for dynamically generated function pointers in memory

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100509650B1 (ko) * 2003-03-14 2005-08-23 주식회사 안철수연구소 코드 삽입 기법을 이용한 악성 스크립트 감지 방법
CN111435393B (zh) * 2019-01-14 2024-04-16 北京京东尚科信息技术有限公司 对象漏洞的检测方法、装置、介质及电子设备
CN112347484A (zh) * 2020-10-27 2021-02-09 杭州安恒信息技术股份有限公司 软件漏洞检测方法、装置、设备及计算机可读存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104951700A (zh) * 2014-10-11 2015-09-30 腾讯科技(深圳)有限公司 网页漏洞检测方法和装置
CN104715195A (zh) * 2015-03-12 2015-06-17 广东电网有限责任公司信息中心 基于动态插桩的恶意代码检测系统及方法
CN108459954A (zh) * 2017-02-22 2018-08-28 腾讯科技(深圳)有限公司 应用程序漏洞检测方法和装置
US10628586B1 (en) * 2017-11-30 2020-04-21 Palo Alto Networks, Inc. Detecting malware via scanning for dynamically generated function pointers in memory
CN110941534A (zh) * 2019-11-19 2020-03-31 深圳开源互联网安全技术有限公司 检测web应用第三方代码调用的方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于iOS平台的应用安全性研究;刘筱琪;《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》;20190115(第01期);第I138-1669页 *
基于行为信息的恶意代码抗分析技术检测系统设计与实现;雷家怡等;《信息工程大学学报》;20180815(第04期);第494-497页 *

Also Published As

Publication number Publication date
CN114048488A (zh) 2022-02-15

Similar Documents

Publication Publication Date Title
CN108694320B (zh) 一种多安全环境下敏感应用动态度量的方法及系统
CN112417461B (zh) 设备固件的模糊测试方法及系统
CN110941528A (zh) 一种基于故障的日志埋点设置方法、装置及系统
CN112035314B (zh) 内存泄漏的监控方法、装置及电子设备
CN114866300A (zh) 一种基于重放分析的网络协议软件状态变量识别方法
CN111913878A (zh) 基于程序分析结果的字节码插桩方法、装置及存储介质
CN114048488B (zh) 漏洞检测方法及系统
CN113127367B (zh) Android动态权限申请的缺陷检测方法
CN111638990A (zh) 内存泄露的处理方法、装置及存储介质
US8291389B2 (en) Automatically detecting non-modifying transforms when profiling source code
CN107168875B (zh) 一种基于安卓应用多入口特性的Activity构件泄露检测方法
CN115906104A (zh) 一种二次封装后开源组件的安全检测方法及装置
CN115292716A (zh) 第三方软件包的安全性分析方法、装置、设备及介质
CN112286803A (zh) 一种测试用例的检测方法及装置
CN113918373A (zh) 一种内存泄露监控方法、内存泄露检测方法及相应装置
CN114579252A (zh) 一种监测应用状态的方法、系统、存储介质及设备
CN113032100A (zh) 一种异常处理方法、装置、设备及存储介质
CN111338956A (zh) 一种自动化的压测方法、装置、设备和存储介质
CN112346963B (zh) 一种基于aop的插桩测试方法、装置和电子设备
CN117742897B (zh) 一种基于容器镜像漏洞自动修复的实现方法
CN116414722B (zh) 模糊测试处理方法、装置、模糊测试系统及存储介质
CN112099838B (zh) 确定版本差异的方法、装置及存储介质
CN114281585A (zh) 一种系统异常处理方法、装置、设备和存储介质
CN114780952A (zh) 敏感应用调用场景的检测方法、系统及存储介质
CN115185844A (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
CP02 Change in the address of a patent holder

Address after: 1st Floor, Building 3, No. 2616, Yuhangtang Road, Cangqian Street, Yuhang District, Hangzhou City, Zhejiang Province, 311100

Patentee after: HANGZHOU MOAN TECHNOLOGY CO.,LTD.

Address before: 311100 10th floor, Block E, building 1, 1378 Wenyi West Road, Cangqian street, Yuhang District, Hangzhou City, Zhejiang Province

Patentee before: HANGZHOU MOAN TECHNOLOGY CO.,LTD.

CP02 Change in the address of a patent holder