CN110414239A - 一种软件供应链安全分析方法及装置 - Google Patents
一种软件供应链安全分析方法及装置 Download PDFInfo
- Publication number
- CN110414239A CN110414239A CN201910579448.6A CN201910579448A CN110414239A CN 110414239 A CN110414239 A CN 110414239A CN 201910579448 A CN201910579448 A CN 201910579448A CN 110414239 A CN110414239 A CN 110414239A
- Authority
- CN
- China
- Prior art keywords
- software
- component
- analytical method
- code
- loophole
- 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
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/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- 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/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供一种软件供应链安全分析方法及装置,所述软件供应链安全分析方法包括:获取已知存在漏洞的组件;根据所述组件和预先构建的软件依赖性关系图,确定存在安全问题的软件;其中,所述软件依赖性关系图中包含有各组件和各软件之间的依赖关系。本发明实施例提供的软件供应链安全分析方法及装置,根据已知存在漏洞的组件和预先构建的软件依赖性关系图,判断哪些软件与该组件存在使用依赖关系,进而可以确定存在安全问题的软件,从而实现了软件供应链安全的快速高效分析,使得可以高效、全面进行漏洞预警与防御。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种软件供应链安全分析方法及装置。
背景技术
漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。漏洞是受限制的计算机、组件、应用程序或其他联机资源无意中留下的不受保护的入口点。
由于软件开发者开发软件时的疏忽,或者是编程语言的局限性,比如C语言家族比Java效率高但漏洞也多,电脑系统几乎就是用C语言编的,所以常常要打补丁。软件漏洞有时是作者日后检查的时候发现的;还有一些人专门找别人的漏洞以从中做些非法的事,当作者知道自己的漏洞被他人利用的时候就会想办法补救。
WinRAR是世界上最流行的Windows文件压缩、解压应用程序之一,近期获知WinRAR存在着一个古老的漏洞CVE-2018-20250。这个漏洞是Check Point Software的安全研究人员于2018年发现的,影响了过去19年中发布的所有WinRAR版本。据Check Point表示,WinRAR的该漏洞存在于所有WinRAR版本包含的UNACEV2.DLL库中,UNACEV2.DLL库负责ACE格式压缩文件。
Check Point的研究人员表示,通过漏洞,攻击者可以在用户指定的解压缩路径之外创建文件,执行攻击。例如,攻击者能够利用此漏洞在Windows电脑的Startup文件夹中植入恶意软件,恶意软件会在下一次重启后执行,感染并接管电脑。WinRAR拥有超过5亿名用户,而这些用户都是受到潜在影响的人群。
目前在对软件进行安全性分析时,一般都是正向处理,也即对某个软件进行分析,试图发现其中是否存在漏洞。例如上面提到的例子:分析WinRAR软件,发现该软件依赖的UNACEV2.DLL组件中存在漏洞CVE-2018-20250。但是这种分析方法仅可以得到WinRAR软件存在漏洞的结论,而无法得到其他软件的安全情况。目前这种正向的处理方法只能针对软件逐个排查,无法高效、全面进行漏洞预警与防御。
发明内容
针对现有技术中的问题,本发明实施例提供一种软件供应链安全分析方法及装置。
第一方面,本发明实施例提供了一种软件供应链安全分析方法,包括:
获取已知存在漏洞的组件;
根据所述组件和预先构建的软件依赖性关系图,确定存在安全问题的软件;
其中,所述软件依赖性关系图中包含有各组件和各软件之间的依赖关系。
进一步地,在根据所述组件和预先构建的软件依赖性关系图,确定存在安全问题的软件之前,所述软件供应链安全分析方法还包括:构建所述软件依赖性关系图的步骤,具体包括:
对运行在沙箱中的各软件进行动态分析,获取所述各软件分别依赖的组件;
根据所述各软件分别依赖的组件,构建所述软件依赖性关系图。
进一步地,所述组件包括静态链接的代码模块、动态加载的共享库、释放的库文件和释放的可执行程序中的一种或多种。
进一步地,所述对运行在沙箱中的各软件进行动态分析,获取所述各软件分别依赖的组件,具体包括:
监控运行在沙箱中的各软件在动态运行过程中加载的共享库、释放的库文件、释放的可执行程序,以及,运行的代码模块,同时对所述各软件的子进程进行迭代监控分析,以获取所述各软件分别依赖的组件。
进一步地,所述监控运行在沙箱中的各软件在动态运行过程中加载的共享库、释放的库文件、释放的可执行程序,以及,运行的代码模块,具体包括:
通过监控底层系统调用获取各软件在动态运行过程中加载的共享库、释放的库文件和可执行程序;
通过监控预设代码运行指令获取各软件在动态运行过程中运行的代码模块。
进一步地,所述通过监控预设代码运行指令获取各软件在动态运行过程中运行的代码模块,具体包括:
通过监控预设代码运行指令获取各软件在动态运行过程中由预设代码运行指令组成的基本块,并通过代码切片和函数识别的方式,将基本块整合成函数级或功能级的代码片段,其中,所述代码片段就是所述代码模块。
进一步地,所述软件供应链安全分析方法还包括:
获取待进行安全分析的目标软件;
将所述目标软件放置在沙箱中运行,对所述目标软件的动态运行过程进行分析,获取所述目标软件依赖的所有组件;
判断所述所有组件中是否包含有已知存在漏洞的组件,若是,则确定所述目标软件为存在安全问题的软件。
第二方面,本发明实施例还提供了一种软件供应链安全分析装置,包括:
第一获取模块,用于获取已知存在漏洞的组件;
确定模块,用于根据所述组件和预先构建的软件依赖性关系图,确定存在安全问题的软件;其中,所述软件依赖性关系图中包含有各组件和各软件之间的依赖关系。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述软件供应链安全分析方法的步骤。
第四方面,本发明实施例还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述软件供应链安全分析方法的步骤。
由上面技术方案可知,本发明实施例提供的软件供应链安全分析方法及装置,根据已知存在漏洞的组件和预先构建的软件依赖性关系图,判断哪些软件与该组件存在使用依赖关系,进而可以确定存在安全问题的软件,从而实现了软件供应链安全的快速高效分析,使得可以高效、全面进行漏洞预警与防御。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的软件供应链安全分析方法的流程图;
图2是本发明一实施例提供的软件依赖性关系图的示意图;
图3是本发明一实施例提供的沙箱的部署结构示意图;
图4为本发明一实施例提供的软件供应链安全分析装置的结构示意图;
图5为本发明一实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前在对软件进行安全性分析时,一般都是正向处理,也即对某个软件进行分析,试图发现其中是否存在漏洞。例如背景技术部分提到的例子:分析WinRAR软件,发现了其中的一个漏洞CVE-2018-20250。但实际上这个漏洞是存在于UNACEV2.DLL这个库中的,除了WinRAR软件外,市面上还存在大量其它使用了这个库的软件,同样会受这个漏洞的影响。那么这个漏洞到底影响了多少软件,目前实际上没有有效的方法去知道。由此可知,目前这种正向的处理方法只能针对软件逐个排查,无法高效、全面进行漏洞预警与防御。针对该问题,本发明实施例提供了一种软件供应链安全分析方法及装置,本发明实施例通过构建各软件与各组件之间的相互依赖关系,从而能够依据该依赖关系获知某个库(组件)被多少软件依赖、某个代码模块(组件)被多少软件复用,从而一旦发现某个库或者某个代码模块中存在漏洞,就可以立刻检索出这个漏洞到底影响了哪些软件。也即,本发明实施例可以在已知某一软件存在安全漏洞时,迅速获知哪些其他软件也会受到相关影响,从而可以迅速找到存在安全问题的软件。此外,针对任何一款软件,特别是新出现的软件,也可以分析其是否依赖了已知有漏洞的组件,比如是否加载了有漏洞的共享库、是否复用了有漏洞的代码模块,从而能立刻知道该软件是否被已知漏洞影响。下面将通过具体实施例本发明提供的方案进行详细解释说明。
图1示出了本发明实施例提供的软件供应链安全分析方法的流程图。如图1所示,本发明实施例提供的软件供应链安全分析方法包括如下步骤:
步骤101:获取已知存在漏洞的组件。
在本步骤中,当发现某一软件存在漏洞时,分析该漏洞所属的组件,然后将该组件确定为已知存在漏洞的组件。例如,WinRAR软件,发现了其中的一个漏洞CVE-2018-20250,而该漏洞存在于UNACEV2.DLL这个库中,因此UNACEV2.DLL这个库就是已知存在漏洞的组件。
在本步骤中,组件就是指QQ、微信、Office等这些软件程序为了实现相应功能所依赖的功能模块。
步骤102:根据所述组件和预先构建的软件依赖性关系图,确定存在安全问题的软件;其中,所述软件依赖性关系图中包含有各组件和各软件之间的依赖关系。
在本步骤中,当获取已知存在漏洞的组件后,根据该组件以及预先构建的软件依赖性关系图,从软件依赖性关系图中寻找与该组件存在依赖关系的软件,从而将这些软件确定为存在安全问题的软件。例如,参见图2所示的软件依赖性关系图,图2所示的软件依赖性关系图中包含有各组件和各软件之间的依赖关系。假设根据存在漏洞的WinRAR软件得到已知存在漏洞的组件为UNACEV2.DLL,而从图2所示的软件依赖性关系图可以获知,WinRAR软件、好压软件、Bandizip软件均与组件UNACEV2.DLL存在依赖关系,因此可以确定除已知存在安全问题的WinRAR软件之外,好压软件和Bandizip软件也均为存在安全问题的软件。
需要说明的是,图2所示的软件依赖性关系图只是一个示意图,并不具有限定作用,在实际应用中,构建的软件依赖性关系图要远远比图2所示的关系图复杂。也即是说,实际构建的软件依赖性关系图中包括有更为广泛的软件类型、更为广泛的组件类型以及各软件与各组件之间的依赖关系。
需要说明的是,在构建所述软件依赖性关系图时,各软件与各组件之间的依赖关系可以通过历史关于各软件和各组件之间调用关系的统计数据获取,也可以采用下面实施例所述的在沙箱内采用动态分析的方式获取。本发明对此不作限定。不过需要说明的是,通过在沙箱内采用动态分析的方式获取的各软件与各组件之间的依赖关系,会更为全面和准确,不容易发生依赖关系的遗漏,且获取的依赖关系准确度较高,此外,还有一个好处就是整个构建过程可以实现自动化。
由上面技术方案可知,本发明实施例通过构建各软件与各组件之间的相互依赖关系,从而能够依据该依赖关系获知某个组件被多少软件依赖,从而一旦发现某个组件中存在漏洞,就可以立刻获知这个漏洞影响了哪些软件,从而可以快速确定存在相同漏洞问题的其他软件,从而可以尽可能避免所述其他软件因该漏洞而引发的安全问题。
由上面技术方案可知,本发明实施例提供的软件供应链安全分析方法,根据已知存在漏洞的组件和预先构建的软件依赖性关系图,判断哪些软件与该组件存在使用依赖关系,进而可以确定存在安全问题的软件,从而实现了软件供应链安全的快速高效分析,使得可以高效、全面进行漏洞预警与防御。
进一步地,基于上述实施例的内容,在本实施例中,在上述步骤101或102之前,所述方法还包括:
步骤100:构建所述软件依赖性关系图。
在本实施例的一种可选实施方式中,上述步骤100构建所述软件依赖性关系图可通过下面方式实现:
步骤100A:对运行在沙箱中的各软件进行动态分析,获取所述各软件分别依赖的组件;
步骤100B:根据所述各软件分别依赖的组件,构建所述软件依赖性关系图。
在本实施例中,在构建所述软件依赖性关系图时,通过对运行在沙箱中的各软件进行动态分析,获取各软件分别依赖的组件,然后根据所述各软件分别依赖的组件,构建所述软件依赖性关系图。
在本实施例中,如图3所示,在一个安装有沙箱的终端设备上,共设置有四层结构,分别为:物理硬件层、宿主机操作系统层、虚拟硬件层和虚拟操作系统层;其中:
物理硬件层:真正的硬件,即终端设备上插的CPU、内存、硬盘等等;
宿主机操作系统层:安装在终端设备上的操作系统。即按电源按钮后,终端设备启动进入的操作系统,如可以为Linux;
虚拟硬件层:在宿主机操作系统上运行的一个程序,这个程序会用纯软件的形式模拟出CPU、内存、硬盘等一系列硬件,即实现虚拟硬件层,也就是实现了虚拟机的功能。因为是纯软件模拟的,因此可以模拟出和真实物理硬件层完全不一样的虚拟硬件。例如在x86架构的CPU的终端设备上,其虚拟硬件层中的虚拟CPU可以是ARM架构的;
虚拟操作系统层:即虚拟机操作系统,直接安装在虚拟硬件层上,可以是linux、windows、android等等,取决于待分析的软件(样本程序)希望运行在什么系统中。
在上面介绍完安装有沙箱的终端设备的结构后可知,一个终端设备上,设置有四层:物理硬件层、宿主机操作系统层、虚拟硬件层、虚拟操作系统层;也就是说,在宿主机操作系统层运行了一个程序,这个程序的作用就是用纯软件的形式模拟CPU、内存、硬盘等一系列硬件,即实现虚拟硬件层,也就是实现了虚拟机的功能。然后再在虚拟硬件层上安装虚拟操作系统,其中,软件(样本程序)一般在沙箱的虚拟操作系统层运行,在软件的运行过程中,可以对运行在虚拟操作系统层的软件进行动态分析,例如,监控运行在沙箱中的各软件在动态运行过程中所加载的共享库、释放的库文件、释放的可执行程序,以及,运行的代码模块等,从而获取该软件依赖的组件。
基于上述实施例的内容,在本实施例中,上述步骤100A可通过下面方式实现:
监控运行在沙箱中的各软件在动态运行过程中加载的共享库、释放的库文件、释放的可执行程序,以及,运行的代码模块,同时对所述各软件的子进程进行迭代监控分析,以获取所述各软件分别依赖的组件。
在本实施例中,当软件(即样本程序)在沙箱中运行时,本实施例会监控该样本程序加载的运行库、释放的库文件和可执行程序、运行的代码模块。同时也会对样本程序的子进程进行迭代分析,从而构建该样本程序到底依赖了多少组件。
在本实施例中,软件就是指QQ、微信、Office等程序,组件就是指这些程序为了实现功能所依赖的功能模块。
在本实施例中,所述组件包括静态链接的代码模块、动态加载的共享库、释放的库文件和释放的可执行程序中的一种或多种。
在本实施例中,组件分为三类:(1)动态加载的DLL、LIB等运行库(也就是共享库),以独立文件的形式存在。例如为了实现解压ace压缩包,WinRAR软件和Bandizip软件都使用了UNACEV2.DLL库,所以都会受到这个库中的漏洞的影响;(2)释放出来的库文件、可执行程序;(3)静态链接的代码模块,开发者实现某些具体功能时,往往会从网络(比如github)上搜索相关功能代码,集成到自己的软件代码中,这种就属于静态链接的代码模块。不同的软件,为了实现相同的功能,往往会复用相同的代码模块,而这些代码模块跟运行库不同,不是以单独的文件的形式存在的,而是直接“整合拼装”到软件本身的程序文件中的。当发现某个被广泛复用的代码模块存在漏洞时,同样需要能知道哪些软件中含有这样的代码模块。
基于上述实施例的内容,在本实施例中,所述监控运行在沙箱中的各软件在动态运行过程中加载的共享库、释放的库文件、释放的可执行程序,以及,运行的代码模块,具体包括:
通过监控底层系统调用获取各软件在动态运行过程中加载的共享库、释放的库文件和可执行程序;
通过监控预设代码运行指令获取各软件在动态运行过程中运行的代码模块。
在本实施例中,在通过监控底层系统调用获取各软件在动态运行过程中加载的共享库、释放的库文件和可执行程序时,可以监控MiMapViewOfImageSection检测模块加载、监控NtWriteFile检测文件释放等方式获取各软件在动态运行过程中加载的共享库、释放的库文件和可执行程序。
在本实施例中,在通过监控预设代码运行指令获取各软件在动态运行过程中运行的代码模块时,可以通过监控预设代码运行指令获取各软件在动态运行过程中由预设代码运行指令组成的基本块,并通过代码切片和函数识别的方式,将基本块整合成函数级或功能级的代码片段,其中,所述代码片段就是所述代码模块。
需要说明的是,在本实施例中,加载运行库、释放库文件,都可以通过监控一些底层系统调用实现。例如监控MiMapViewOfImageSection检测模块加载、监控NtWriteFile检测文件释放等。代码模块提取需要经过指令监控实现。由于沙箱是基于硬件模拟器实现,用纯软件的形式模拟出了CPU,因此在沙箱中运行的软件执行的每一条指令都可以获知得到,从而可以提取出软件执行的基本块,并进一步通过代码切片、函数识别的方法,将基本块整合成函数级或功能级的代码片段,即提取代码模块。
基于上述实施例的内容,在本实施例中,所述软件供应链安全分析方法还包括:
获取待进行安全分析的目标软件;
将所述目标软件放置在沙箱中运行,对所述目标软件的动态运行过程进行分析,获取所述目标软件依赖的所有组件;
判断所述所有组件中是否包含有已知存在漏洞的组件,若是,则确定所述目标软件为存在安全问题的软件。
在本实施例中,除了上面描述的可以根据已知存在漏洞的组件以及软件依赖关系图确定存在安全问题的软件意外,还可以针对任何一款目标软件,特别是新出现的软件,分析其是否依赖了已知有漏洞的组件,比如是否加载了有漏洞的共享库、是否复用了有漏洞的代码模块,从而能立刻知道该软件是否被已知漏洞影响。
图4示出了本发明实施例提供的软件供应链安全分析装置的结构示意图。如图4所示,本发明实施例提供的软件供应链安全分析装置包括:第一获取模块21和确定模块22,其中:
第一获取模块21,用于获取已知存在漏洞的组件;
确定模块22,用于根据所述组件和预先构建的软件依赖性关系图,确定存在安全问题的软件;其中,所述软件依赖性关系图中包含有各组件和各软件之间的依赖关系。
基于上述实施例的内容,在本实施例中,所述装置还包括:构建模块,用于构建所述软件依赖性关系图;
其中,所述构建模块,具体包括:
获取单元,用于对运行在沙箱中的各软件进行动态分析,获取所述各软件分别依赖的组件;
构建单元,用于根据所述各软件分别依赖的组件,构建所述软件依赖性关系图。
基于上述实施例的内容,在本实施例中,所述组件包括静态链接的代码模块、动态加载的共享库、释放的库文件和释放的可执行程序中的一种或多种。
基于上述实施例的内容,在本实施例中,所述获取单元,具体用于:
监控运行在沙箱中的各软件在动态运行过程中加载的共享库、释放的库文件、释放的可执行程序,以及,运行的代码模块,同时对所述各软件的子进程进行迭代监控分析,以获取所述各软件分别依赖的组件。
基于上述实施例的内容,在本实施例中,所述获取单元通过监控底层系统调用获取各软件在动态运行过程中加载的共享库、释放的库文件和可执行程序,以及,通过监控预设代码运行指令获取各软件在动态运行过程中运行的代码模块。
基于上述实施例的内容,在本实施例中,所述获取单元通过监控预设代码运行指令获取各软件在动态运行过程中由预设代码运行指令组成的基本块,并通过代码切片和函数识别的方式,将基本块整合成函数级或功能级的代码片段,其中,所述代码片段就是所述代码模块。
基于上述实施例的内容,在本实施例中,所述软件供应链安全分析装置还包括:
第二获取模块,用于获取待进行安全分析的目标软件;
分析模块,用于将所述目标软件放置在沙箱中运行,对所述目标软件的动态运行过程进行分析,获取所述目标软件依赖的所有组件;
判断模块,用于判断所述所有组件中是否包含有已知存在漏洞的组件,若是,则确定所述目标软件为存在安全问题的软件。
由于本发明实施例提供的软件供应链安全分析装置,可以用于执行上述实施例所述的软件供应链安全分析方法,其工作原理和有益效果类似,故此处不再详述,具体内容可参见上述实施例的介绍。
基于相同的发明构思,本发明又一实施例提供了一种电子设备,参见图5,所述电子设备具体包括如下内容:处理器301、存储器302、通信接口303和通信总线304;
其中,所述处理器301、存储器302、通信接口303通过所述通信总线304完成相互间的通信;
所述处理器301用于调用所述存储器302中的计算机程序,所述处理器执行所述计算机程序时实现上述软件供应链安全分析方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述过程:获取已知存在漏洞的组件;根据所述组件和预先构建的软件依赖性关系图,确定存在安全问题的软件;其中,所述软件依赖性关系图中包含有各组件和各软件之间的依赖关系。
基于相同的发明构思,本发明又一实施例提供了一种非暂态计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述软件供应链安全分析方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述过程:获取已知存在漏洞的组件;根据所述组件和预先构建的软件依赖性关系图,确定存在安全问题的软件;其中,所述软件依赖性关系图中包含有各组件和各软件之间的依赖关系。
此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的软件供应链安全分析方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种软件供应链安全分析方法,其特征在于,包括:
获取已知存在漏洞的组件;
根据所述组件和预先构建的软件依赖性关系图,确定存在安全问题的软件;
其中,所述软件依赖性关系图中包含有各组件和各软件之间的依赖关系。
2.根据权利要求1所述的软件供应链安全分析方法,其特征在于,在根据所述组件和预先构建的软件依赖性关系图,确定存在安全问题的软件之前,所述软件供应链安全分析方法还包括:构建所述软件依赖性关系图的步骤,具体包括:
对运行在沙箱中的各软件进行动态分析,获取所述各软件分别依赖的组件;
根据所述各软件分别依赖的组件,构建所述软件依赖性关系图。
3.根据权利要求2所述的软件供应链安全分析方法,其特征在于,所述组件包括静态链接的代码模块、动态加载的共享库、释放的库文件和释放的可执行程序中的一种或多种。
4.根据权利要求3所述的软件供应链安全分析方法,其特征在于,所述对运行在沙箱中的各软件进行动态分析,获取所述各软件分别依赖的组件,具体包括:
监控运行在沙箱中的各软件在动态运行过程中加载的共享库、释放的库文件、释放的可执行程序,以及,运行的代码模块,同时对所述各软件的子进程进行迭代监控分析,以获取所述各软件分别依赖的组件。
5.根据权利要求4所述的软件供应链安全分析方法,其特征在于,所述监控运行在沙箱中的各软件在动态运行过程中加载的共享库、释放的库文件、释放的可执行程序,以及,运行的代码模块,具体包括:
通过监控底层系统调用获取各软件在动态运行过程中加载的共享库、释放的库文件和可执行程序;
通过监控预设代码运行指令获取各软件在动态运行过程中运行的代码模块。
6.根据权利要求5所述的软件供应链安全分析方法,其特征在于,所述通过监控预设代码运行指令获取各软件在动态运行过程中运行的代码模块,具体包括:
通过监控预设代码运行指令获取各软件在动态运行过程中由预设代码运行指令组成的基本块,并通过代码切片和函数识别的方式,将基本块整合成函数级或功能级的代码片段,其中,所述代码片段就是所述代码模块。
7.根据权利要求2所述的软件供应链安全分析方法,其特征在于,所述软件供应链安全分析方法还包括:
获取待进行安全分析的目标软件;
将所述目标软件放置在沙箱中运行,对所述目标软件的动态运行过程进行分析,获取所述目标软件依赖的所有组件;
判断所述所有组件中是否包含有已知存在漏洞的组件,若是,则确定所述目标软件为存在安全问题的软件。
8.一种软件供应链安全分析装置,其特征在于,包括:
第一获取模块,用于获取已知存在漏洞的组件;
确定模块,用于根据所述组件和预先构建的软件依赖性关系图,确定存在安全问题的软件;其中,所述软件依赖性关系图中包含有各组件和各软件之间的依赖关系。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述软件供应链安全分析方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7任一项所述软件供应链安全分析方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910579448.6A CN110414239B (zh) | 2019-06-28 | 2019-06-28 | 一种软件供应链安全分析方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910579448.6A CN110414239B (zh) | 2019-06-28 | 2019-06-28 | 一种软件供应链安全分析方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110414239A true CN110414239A (zh) | 2019-11-05 |
CN110414239B CN110414239B (zh) | 2021-09-03 |
Family
ID=68358581
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910579448.6A Active CN110414239B (zh) | 2019-06-28 | 2019-06-28 | 一种软件供应链安全分析方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110414239B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111783103A (zh) * | 2020-07-03 | 2020-10-16 | Oppo广东移动通信有限公司 | 基于Maven的依赖管理方法、装置、电子装置及存储介质 |
CN114077741A (zh) * | 2021-11-01 | 2022-02-22 | 清华大学 | 软件供应链安全检测方法和装置、电子设备及存储介质 |
CN115033894A (zh) * | 2022-08-12 | 2022-09-09 | 中国电子科技集团公司第三十研究所 | 一种基于知识图谱的软件组件供应链安全检测方法及装置 |
CN115544465A (zh) * | 2022-11-25 | 2022-12-30 | 卓望数码技术(深圳)有限公司 | 一种用于软件构建的第三方组件的安全管控方法及装置 |
DE102022122125A1 (de) | 2022-09-01 | 2024-03-07 | Audi Aktiengesellschaft | Verfahren und Prozessorschaltung zum Betreiben eines Computernetzwerks, um bekannte Sicherheitslücken zu verorten und abzuschirmen, sowie Computernetzwerk, Speichermedium und Kraftfahrzeug |
DE102022122124A1 (de) | 2022-09-01 | 2024-03-07 | Audi Aktiengesellschaft | Verfahren und Prozessorschaltung zum Schützen eines Computernetzwerks bei Erkennen von angreifbaren Schwachstellen sowie computerlesbares Speichermedium, Computernetzwerk und Kraftfahrzeug |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101923510A (zh) * | 2010-04-13 | 2010-12-22 | 张克东 | 软件探测方法和应用该方法的软件探测器及软件探测系统 |
CN105046155A (zh) * | 2015-06-24 | 2015-11-11 | 北京系统工程研究所 | 软件系统漏洞风险评估方法及装置 |
CN106886442A (zh) * | 2017-03-06 | 2017-06-23 | 中山大学 | 一种软件依赖关系分析方法 |
CN107798245A (zh) * | 2017-11-02 | 2018-03-13 | 北京理工大学 | 一种基于组件依赖图的软件安全漏洞预测方法 |
US10069855B1 (en) * | 2015-09-23 | 2018-09-04 | Wells Fargo Bank, N.A. | Automated security analysis of software libraries |
CN108763928A (zh) * | 2018-05-03 | 2018-11-06 | 北京邮电大学 | 一种开源软件漏洞分析方法、装置和存储介质 |
CN109918285A (zh) * | 2018-12-28 | 2019-06-21 | 北京奇安信科技有限公司 | 一种开源软件的安全识别方法及装置 |
-
2019
- 2019-06-28 CN CN201910579448.6A patent/CN110414239B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101923510A (zh) * | 2010-04-13 | 2010-12-22 | 张克东 | 软件探测方法和应用该方法的软件探测器及软件探测系统 |
CN105046155A (zh) * | 2015-06-24 | 2015-11-11 | 北京系统工程研究所 | 软件系统漏洞风险评估方法及装置 |
US10069855B1 (en) * | 2015-09-23 | 2018-09-04 | Wells Fargo Bank, N.A. | Automated security analysis of software libraries |
CN106886442A (zh) * | 2017-03-06 | 2017-06-23 | 中山大学 | 一种软件依赖关系分析方法 |
CN107798245A (zh) * | 2017-11-02 | 2018-03-13 | 北京理工大学 | 一种基于组件依赖图的软件安全漏洞预测方法 |
CN108763928A (zh) * | 2018-05-03 | 2018-11-06 | 北京邮电大学 | 一种开源软件漏洞分析方法、装置和存储介质 |
CN109918285A (zh) * | 2018-12-28 | 2019-06-21 | 北京奇安信科技有限公司 | 一种开源软件的安全识别方法及装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111783103A (zh) * | 2020-07-03 | 2020-10-16 | Oppo广东移动通信有限公司 | 基于Maven的依赖管理方法、装置、电子装置及存储介质 |
CN111783103B (zh) * | 2020-07-03 | 2024-06-04 | Oppo广东移动通信有限公司 | 基于Maven的依赖管理方法、装置、电子装置及存储介质 |
CN114077741A (zh) * | 2021-11-01 | 2022-02-22 | 清华大学 | 软件供应链安全检测方法和装置、电子设备及存储介质 |
CN115033894A (zh) * | 2022-08-12 | 2022-09-09 | 中国电子科技集团公司第三十研究所 | 一种基于知识图谱的软件组件供应链安全检测方法及装置 |
DE102022122125A1 (de) | 2022-09-01 | 2024-03-07 | Audi Aktiengesellschaft | Verfahren und Prozessorschaltung zum Betreiben eines Computernetzwerks, um bekannte Sicherheitslücken zu verorten und abzuschirmen, sowie Computernetzwerk, Speichermedium und Kraftfahrzeug |
DE102022122124A1 (de) | 2022-09-01 | 2024-03-07 | Audi Aktiengesellschaft | Verfahren und Prozessorschaltung zum Schützen eines Computernetzwerks bei Erkennen von angreifbaren Schwachstellen sowie computerlesbares Speichermedium, Computernetzwerk und Kraftfahrzeug |
CN115544465A (zh) * | 2022-11-25 | 2022-12-30 | 卓望数码技术(深圳)有限公司 | 一种用于软件构建的第三方组件的安全管控方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110414239B (zh) | 2021-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110414239A (zh) | 一种软件供应链安全分析方法及装置 | |
CN105068932B (zh) | 一种Android应用程序加壳的检测方法 | |
US10997291B2 (en) | Extending dynamic detection of malware using static and dynamic malware analyses | |
CN110795734B (zh) | 一种恶意移动应用检测方法 | |
US7448020B2 (en) | Autonomic computing system, execution environment control method and program | |
EP2784716A1 (en) | Suspicious program detection | |
Abraham et al. | GroddDroid: a gorilla for triggering malicious behaviors | |
Grech et al. | Heaps don't lie: countering unsoundness with heap snapshots | |
CN109255235B (zh) | 基于用户态沙箱的移动应用第三方库隔离方法 | |
CN109033839A (zh) | 一种基于动态多特征的恶意软件检测方法 | |
Bhatt et al. | Machine learning forensics: A new branch of digital forensics. | |
Jin et al. | Exgen: Cross-platform, automated exploit generation for smart contract vulnerabilities | |
Park et al. | {FUGIO}: Automatic Exploit Generation for {PHP} Object Injection Vulnerabilities | |
CN110298173A (zh) | 检测由软件程序的延迟循环隐藏的恶意软件 | |
Tan et al. | Detecting kernel refcount bugs with {Two-Dimensional} consistency checking | |
Sun et al. | Dexx: a double layer unpacking framework for android | |
Ntousakis et al. | Detecting third-party library problems with combined program analysis | |
Kim et al. | FIRM-COV: high-coverage greybox fuzzing for IoT firmware via optimized process emulation | |
CN110781081B (zh) | 一种移动应用回调强制触发方法、系统及存储介质 | |
Zhao et al. | Semantic-informed driver fuzzing without both the hardware devices and the emulators | |
CN112100620A (zh) | 代码安全检测方法、装置、设备和可读存储介质 | |
CN113378182B (zh) | 一种提权漏洞检测方法、装置、设备及介质 | |
EP4160455A1 (en) | Behavior analysis based on finite-state machine for malware detection | |
CN111190813B (zh) | 基于自动化测试的安卓应用网络行为信息提取系统及方法 | |
WO2015158742A1 (fr) | Procédé d'analyse du fonctionnement d'un programme exécutable binaire et installation pour la mise en oeuvre de ce procédé |
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 |