CN106446691B - 检测软件中集成或定制的开源项目漏洞的方法和装置 - Google Patents

检测软件中集成或定制的开源项目漏洞的方法和装置 Download PDF

Info

Publication number
CN106446691B
CN106446691B CN201611050817.5A CN201611050817A CN106446691B CN 106446691 B CN106446691 B CN 106446691B CN 201611050817 A CN201611050817 A CN 201611050817A CN 106446691 B CN106446691 B CN 106446691B
Authority
CN
China
Prior art keywords
loophole
software
open source
source projects
information
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
CN201611050817.5A
Other languages
English (en)
Other versions
CN106446691A (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.)
China Academy of Information and Communications Technology CAICT
Original Assignee
China Academy of Telecommunications Research CATR
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 China Academy of Telecommunications Research CATR filed Critical China Academy of Telecommunications Research CATR
Priority to CN201611050817.5A priority Critical patent/CN106446691B/zh
Publication of CN106446691A publication Critical patent/CN106446691A/zh
Application granted granted Critical
Publication of CN106446691B publication Critical patent/CN106446691B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了一种检测软件中集成或定制的开源项目漏洞的方法和装置,涉及软件漏洞检测技术领域。方法包括:从预先设置的搜集库中获取开源项目的原始漏洞信息;根据开源项目的原始漏洞信息,提取开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息;根据开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息建立漏洞检测数据库;漏洞检测数据库包括以预设索引顺序排列的各检测项;从待检测软件中提取待检测软件的代码和可执行文件;根据漏洞检测数据库中的各检测项,以预设索引顺序依次匹配检测待检测软件的代码和可执行文件,以确定待检测软件集成或定制的开源项目是否存在漏洞。

Description

检测软件中集成或定制的开源项目漏洞的方法和装置
技术领域
本发明涉及软件漏洞检测技术领域,尤其涉及一种检测软件中集成或定制的开源项目漏洞的方法和装置。
背景技术
开源项目是被非盈利软件组织注册为认证标记,并对其进行了正式的定义,用于描述那些源码可以被公众使用的软件,开源项目的使用、修改和发行不受许可证的限制。当前,随着互联网上开源项目蓬勃发展,优秀的开源软已经被其他软件项目广泛集成或定制开发成组件,例如linux、openssl、webkit等。同时,一款软件中集成或定制的开源项目数量大大增加,如谷歌chrome浏览器集成、定制的开源软件已超过150个。但是,优秀开源项目由于代码更新、漏洞修复等非常频繁,版本更新及迭代速度较快,版本更新及迭代过程中往往伴随着开源项目的模块、接口、策略等的变化,由此很容易产生开源项目新老版本的兼容性问题,导致通过开源项目集成或定制的组件不能及时更新,忽视了大量安全问题的修补。
目前,这种现象在全球范围内普遍存在,即使是非常优秀的商业产品或开源项目。例如:使用最广泛的移动操作***安卓(Android)的内核是linux,其在修复linux内核漏洞上表现出明显的滞后性,如Android在2016年3月才修补了linux内核一年前修补的漏洞CVE-2015-1805,该漏洞在Android上被修补之前已经在互联网上出现了利用该漏洞的攻击代码,导致谷歌公司不得不发布紧急补丁修复该漏洞。另外,由集成openssl、定制webkit等开源项目却没有及时更新安全补丁所带来的问题也数不胜数。因此,及时检测软件中集成或定制的开源项目是否存在漏洞具有重要意义。
目前对软件中集成或定制的开源项目的漏洞检测方案较少,且大都是通过组件版本比对的方法检测漏洞,即搜索软件文件中的组件名称及版本号字符串与漏洞影响的版本进行比对来判断漏洞是否存在,而集成或定制开源项目的软件为避免版本更新迭代所造成的不兼容,一般只修补存在漏洞的代码而不更新组件版本,所以,一般检测方法或工具不能准确判断存在漏洞的代码是否被修补,从而不能准确检测漏洞,另外,部分集成或定制的开源项目的软件中可能去掉组件名称及版本号字符串,所以也无法通过组件版本比对的方法检测漏洞。而一般的软件漏洞检测方法,如通过按照策略构造随机测试用例检测软件异常的fuzzing技术,通过人工阅读审计代码的代码审计等方法用于检测软件集成、定制的组件中漏洞,较为缓慢复杂,缺乏效率。可见,当前缺少快捷准确地检测软件中集成或定制的开源项目漏洞的方法。
发明内容
本发明的实施例提供一种检测软件中集成或定制的开源项目漏洞的方法和装置,以现有技术中缺少快捷准确地检测软件中集成或定制的开源项目漏洞的方法的问题。
为达到上述目的,本发明采用如下技术方案:
一种检测软件中集成或定制的开源项目漏洞的方法,包括:
从预先设置的搜集库中获取开源项目的原始漏洞信息;
根据所述开源项目的原始漏洞信息,提取开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息;
根据所述开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息建立漏洞检测数据库;所述漏洞检测数据库包括以预设索引顺序排列的各检测项;
从待检测软件中提取待检测软件的代码和可执行文件;
根据所述漏洞检测数据库中的各检测项,以预设索引顺序依次匹配检测待检测软件的代码和可执行文件,以确定待检测软件集成或定制的开源项目是否存在漏洞。
具体的,从预先设置的搜集库中获取开源项目的原始漏洞信息,包括:
从预先设置的漏洞数据库中获取开源项目的原始漏洞信息,并通过所述原始漏洞信息中的漏洞参考信息的补丁链接获取开源项目的原始漏洞的修补代码;
或者,从预先设置的开源项目主页中获取关键词代码,在所述关键词代码中过滤获取开源项目的原始漏洞的修补代码。
具体的,所述漏洞描述信息包括漏洞编号信息、严重程度信息、漏洞类型信息、漏洞披露时间信息、漏洞详情信息。
具体的,所述漏洞影响的软件或组件版本信息包括漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号。
具体的,所述漏洞检测细节特征信息包括开源项目组件识别模块特征、识别函数特征、漏洞是否修补特征。
具体的,所述以预设索引顺序排列的各检测项包括:漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征。
具体的,根据所述漏洞检测数据库中的各检测项,以预设索引顺序依次匹配检测待检测软件的代码和可执行文件,以确定待检测软件集成或定制的开源项目是否存在漏洞,包括:
依次根据漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征,对待检测软件的代码和可执行文件进行匹配检测;
若在待检测软件的代码和可执行文件中,存在与漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征其中之一的不匹配内容,则确定待检测软件集成或定制的开源项目不存在漏洞;
若待检测软件的代码和可执行文件中未存在与漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征其中之一的不匹配内容,则确定待检测软件集成或定制的开源项目存在漏洞。
一种检测软件中集成或定制的开源项目漏洞的装置,包括:
原始漏洞信息获取单元,用于从预先设置的搜集库中获取开源项目的原始漏洞信息;
信息提取单元,用于根据所述开源项目的原始漏洞信息,提取开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息;
漏洞检测数据库建立单元,用于根据所述开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息建立漏洞检测数据库;所述漏洞检测数据库包括以预设索引顺序排列的各检测项;
待检测软件提取单元,用于从待检测软件中提取待检测软件的代码和可执行文件;
匹配检测单元,用于根据所述漏洞检测数据库中的各检测项,以预设索引顺序依次匹配检测待检测软件的代码和可执行文件,以确定待检测软件集成或定制的开源项目是否存在漏洞。
此外,所述原始漏洞信息获取单元,具体用于:
从预先设置的漏洞数据库中获取开源项目的原始漏洞信息,并通过所述原始漏洞信息中的漏洞参考信息的补丁链接获取开源项目的原始漏洞的修补代码;
或者,从预先设置的开源项目主页中获取关键词代码,在所述关键词代码中过滤获取开源项目的原始漏洞的修补代码。
此外,所述信息提取单元提取的漏洞描述信息包括漏洞编号信息、严重程度信息、漏洞类型信息、漏洞披露时间信息、漏洞详情信息。
具体的,所述信息提取单元提取的漏洞影响的软件或组件版本信息包括漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号。
此外,所述信息提取单元提取的漏洞检测细节特征信息包括开源项目组件识别模块特征、识别函数特征、漏洞是否修补特征。
具体的,所述漏洞检测数据库建立单元中的以预设索引顺序排列的各检测项包括:漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征。
另外,所述匹配检测单元,具体用于:
依次根据漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征,对待检测软件的代码和可执行文件进行匹配检测;
若在待检测软件的代码和可执行文件中,存在与漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征其中之一的不匹配内容,则确定待检测软件集成或定制的开源项目不存在漏洞;
若待检测软件的代码和可执行文件中未存在与漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征其中之一的不匹配内容,则确定待检测软件集成或定制的开源项目存在漏洞。
本发明实施例提供的检测软件中集成或定制的开源项目漏洞的方法和装置,从预先设置的搜集库中获取开源项目的原始漏洞信息;根据所述开源项目的原始漏洞信息,提取开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息;根据所述开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息建立漏洞检测数据库;所述漏洞检测数据库包括以预设索引顺序排列的各检测项;从待检测软件中提取待检测软件的代码和可执行文件;根据所述漏洞检测数据库中的各检测项,以预设索引顺序依次匹配检测待检测软件的代码和可执行文件,以确定待检测软件集成或定制的开源项目是否存在漏洞。可见,本发明实施例可以通过开源项目的源代码补丁提取漏洞检测特征,即各检测项,从而通过这些检测项即可进行匹配检测,自动匹配检测较为快捷准确,避免了当前缺少快捷准确地检测软件中集成或定制的开源项目漏洞的方法。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种检测软件中集成或定制的开源项目漏洞的方法的流程图一;
图2为本发明实施例提供的一种检测软件中集成或定制的开源项目漏洞的方法的流程图二;
图3为本发明实施例提供的一种检测软件中集成或定制的开源项目漏洞的装置结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供一种检测软件中集成或定制的开源项目漏洞的方法,包括:
步骤101、从预先设置的搜集库中获取开源项目的原始漏洞信息。
步骤102、根据所述开源项目的原始漏洞信息,提取开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息。
步骤103、根据所述开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息建立漏洞检测数据库。
其中,所述漏洞检测数据库包括以预设索引顺序排列的各检测项。
步骤104、从待检测软件中提取待检测软件的代码和可执行文件。
步骤105、根据所述漏洞检测数据库中的各检测项,以预设索引顺序依次匹配检测待检测软件的代码和可执行文件,以确定待检测软件集成或定制的开源项目是否存在漏洞。
本发明实施例提供的检测软件中集成或定制的开源项目漏洞的方法,从预先设置的搜集库中获取开源项目的原始漏洞信息;根据所述开源项目的原始漏洞信息,提取开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息;根据所述开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息建立漏洞检测数据库;所述漏洞检测数据库包括以预设索引顺序排列的各检测项;从待检测软件中提取待检测软件的代码和可执行文件;根据所述漏洞检测数据库中的各检测项,以预设索引顺序依次匹配检测待检测软件的代码和可执行文件,以确定待检测软件集成或定制的开源项目是否存在漏洞。可见,本发明实施例可以通过开源项目的源代码补丁提取漏洞检测特征,即各检测项,从而通过这些检测项即可进行匹配检测,自动匹配检测较为快捷准确,避免了当前缺少快捷准确地检测软件中集成或定制的开源项目漏洞的方法。
为了使本领域的技术人员更好的了解本发明,下面结合具体的实例,对本发明做进一步的说明,如图2所示,本发明实施例提供一种检测软件中集成或定制的开源项目漏洞的方法,包括:
步骤201、从预先设置的漏洞数据库中获取开源项目的原始漏洞信息,并通过所述原始漏洞信息中的漏洞参考信息的补丁链接获取开源项目的原始漏洞的修补代码;或者,从预先设置的开源项目主页中,搜索开发者提交的代码描述及注释,从而获取关键词代码,在所述关键词代码中过滤获取开源项目的原始漏洞的修补代码。
上述的漏洞数据库可以是CVE(公共漏洞和暴露,Common Vulnerabilities&Exposures)等漏洞数据库。此处的开源项目可以为linux、openssl等流行的开源软件。上述的关键词代码可以为vulnerability,crash,bug,OOB等关键词代码。
步骤202、根据所述开源项目的原始漏洞信息,提取开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息。
此处,所述漏洞描述信息包括漏洞编号信息、严重程度信息、漏洞类型信息、漏洞披露时间信息、漏洞详情信息。
此处,所述漏洞影响的软件或组件版本信息包括漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号,例如组件名称和版本号为linux kernel 3.10.12~3.14.15。
此处,所述漏洞检测细节特征信息包括开源项目组件识别模块特征、识别函数特征、漏洞是否修补特征。
对于上述开源项目组件识别模块特征,首先可以提取开源项目组件模块编译好后的库(如文件xx.so或xx.lib)的特征;然后提取库组件模块中特殊的字符串(如“MD5partof OPENSSL 1.0.2a”)等信息形成开源项目组件识别模块特征。
另外,上述的识别函数特征可通过函数中如下具有特征的指令来形成,例如:操作常量运算指令(如mov eax,0x1234,注:本发明实施例以x86二进制文件反汇编指令举例,其他架构及语言同理)、库函数调用的指令(如call write)、对特征字符串的操作指令(如leaesi,“0123456789”)。
对于上述的漏洞是否修改特征,其主要是通过补丁代码中增加或删除的可区分代码不同的特征序列是否存在,从而可判断漏洞是否已修补。例如几种类型的特征:
判断大小等改变程序执行路径分支的指令序列(如“cmp eax,16;ja xxxx”);
给新变量赋值的指令序列(如“mov eax,0x123;mov[esp],eax”);
字符串操作的相关指令。
步骤203、根据所述开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息建立漏洞检测数据库;所述漏洞检测数据库包括以预设索引顺序排列的各检测项。
具体的,所述以预设索引顺序排列的各检测项包括:漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征。
步骤204、从待检测软件中提取待检测软件的代码和可执行文件。
步骤205、依次根据漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征,对待检测软件的代码和可执行文件进行匹配检测。
在步骤205之后,执行步骤206或者步骤207。
步骤206、若在待检测软件的代码和可执行文件中,存在与漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征其中之一的不匹配内容,则确定待检测软件集成或定制的开源项目不存在漏洞。
步骤207、若待检测软件的代码和可执行文件中未存在与漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征其中之一的不匹配内容,则确定待检测软件集成或定制的开源项目存在漏洞。
本发明实施例提供的检测软件中集成或定制的开源项目漏洞的方法,从预先设置的搜集库中获取开源项目的原始漏洞信息;根据所述开源项目的原始漏洞信息,提取开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息;根据所述开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息建立漏洞检测数据库;所述漏洞检测数据库包括以预设索引顺序排列的各检测项;从待检测软件中提取待检测软件的代码和可执行文件;根据所述漏洞检测数据库中的各检测项,以预设索引顺序依次匹配检测待检测软件的代码和可执行文件,以确定待检测软件集成或定制的开源项目是否存在漏洞。可见,本发明实施例可以通过开源项目的源代码补丁提取漏洞检测特征,即各检测项,从而通过这些检测项即可进行匹配检测,自动匹配检测较为快捷准确,避免了当前缺少快捷准确地检测软件中集成或定制的开源项目漏洞的方法。
如图3所示,本发明实施例提供一种检测软件中集成或定制的开源项目漏洞的装置,包括:
原始漏洞信息获取单元301,可以从预先设置的搜集库中获取开源项目的原始漏洞信息。
信息提取单元302,可以根据所述开源项目的原始漏洞信息,提取开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息。
漏洞检测数据库建立单元303,可以根据所述开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息建立漏洞检测数据库;所述漏洞检测数据库包括以预设索引顺序排列的各检测项。
待检测软件提取单元304,可以从待检测软件中提取待检测软件的代码和可执行文件。
匹配检测单元305,可以根据所述漏洞检测数据库中的各检测项,以预设索引顺序依次匹配检测待检测软件的代码和可执行文件,以确定待检测软件集成或定制的开源项目是否存在漏洞。
此外,所述原始漏洞信息获取单元301,具体可以:
从预先设置的漏洞数据库中获取开源项目的原始漏洞信息,并通过所述原始漏洞信息中的漏洞参考信息的补丁链接获取开源项目的原始漏洞的修补代码。
或者,从预先设置的开源项目主页中获取关键词代码,在所述关键词代码中过滤获取开源项目的原始漏洞的修补代码。
此外,所述信息提取单元302提取的漏洞描述信息包括漏洞编号信息、严重程度信息、漏洞类型信息、漏洞披露时间信息、漏洞详情信息。
具体的,所述信息提取单元302提取的漏洞影响的软件或组件版本信息包括漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号。
此外,所述信息提取单元302提取的漏洞检测细节特征信息包括开源项目组件识别模块特征、识别函数特征、漏洞是否修补特征。
具体的,所述漏洞检测数据库建立单元303中的以预设索引顺序排列的各检测项包括:漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征。
另外,所述匹配检测单元305,具体用于:
依次根据漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征,对待检测软件的代码和可执行文件进行匹配检测。
若在待检测软件的代码和可执行文件中,存在与漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征其中之一的不匹配内容,则确定待检测软件集成或定制的开源项目不存在漏洞。
若待检测软件的代码和可执行文件中未存在与漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征其中之一的不匹配内容,则确定待检测软件集成或定制的开源项目存在漏洞。
值得说明的是,本发明实施例提供的检测软件中集成或定制的开源项目漏洞的装置的具体实现方式可以参见上述图1和图2对应的方法实施例,此处不再赘述。
本发明实施例提供的检测软件中集成或定制的开源项目漏洞的装置,从预先设置的搜集库中获取开源项目的原始漏洞信息;根据所述开源项目的原始漏洞信息,提取开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息;根据所述开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息建立漏洞检测数据库;所述漏洞检测数据库包括以预设索引顺序排列的各检测项;从待检测软件中提取待检测软件的代码和可执行文件;根据所述漏洞检测数据库中的各检测项,以预设索引顺序依次匹配检测待检测软件的代码和可执行文件,以确定待检测软件集成或定制的开源项目是否存在漏洞。可见,本发明实施例可以通过开源项目的源代码补丁提取漏洞检测特征,即各检测项,从而通过这些检测项即可进行匹配检测,自动匹配检测较为快捷准确,避免了当前缺少快捷准确地检测软件中集成或定制的开源项目漏洞的方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (12)

1.一种检测软件中集成或定制的开源项目漏洞的方法,其特征在于,包括:
从预先设置的搜集库中获取开源项目的原始漏洞信息;其中,所述从预先设置的搜集库中获取开源项目的原始漏洞信息包括:
从预先设置的漏洞数据库中获取开源项目的原始漏洞信息,并通过所述原始漏洞信息中的漏洞参考信息的补丁链接获取开源项目的原始漏洞的修补代码;
或者,从预先设置的开源项目主页中获取关键词代码,在所述关键词代码中过滤获取开源项目的原始漏洞的修补代码;
根据所述开源项目的原始漏洞信息,提取开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息;
根据所述开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息建立漏洞检测数据库;所述漏洞检测数据库包括以预设索引顺序排列的各检测项;
从待检测软件中提取待检测软件的代码和可执行文件;
根据所述漏洞检测数据库中的各检测项,以预设索引顺序依次匹配检测待检测软件的代码和可执行文件,以确定待检测软件集成或定制的开源项目是否存在漏洞。
2.根据权利要求1所述的检测软件中集成或定制的开源项目漏洞的方法,其特征在于,所述漏洞描述信息包括漏洞编号信息、严重程度信息、漏洞类型信息、漏洞披露时间信息、漏洞详情信息。
3.根据权利要求2所述的检测软件中集成或定制的开源项目漏洞的方法,其特征在于,所述漏洞影响的软件或组件版本信息包括漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号。
4.根据权利要求3所述的检测软件中集成或定制的开源项目漏洞的方法,其特征在于,所述漏洞检测细节特征信息包括开源项目组件识别模块特征、识别函数特征、漏洞是否修补特征。
5.根据权利要求4所述的检测软件中集成或定制的开源项目漏洞的方法,其特征在于,所述以预设索引顺序排列的各检测项包括:漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征。
6.根据权利要求5所述的检测软件中集成或定制的开源项目漏洞的方法,其特征在于,根据所述漏洞检测数据库中的各检测项,以预设索引顺序依次匹配检测待检测软件的代码和可执行文件,以确定待检测软件集成或定制的开源项目是否存在漏洞,包括:
依次根据漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征,对待检测软件的代码和可执行文件进行匹配检测;
若在待检测软件的代码和可执行文件中,存在与漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征其中之一的不匹配内容,则确定待检测软件集成或定制的开源项目不存在漏洞;
若待检测软件的代码和可执行文件中未存在与漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征其中之一的不匹配内容,则确定待检测软件集成或定制的开源项目存在漏洞。
7.一种检测软件中集成或定制的开源项目漏洞的装置,其特征在于,包括:
原始漏洞信息获取单元,用于从预先设置的搜集库中获取开源项目的原始漏洞信息;
其中,所述原始漏洞信息获取单元,具体用于:
从预先设置的漏洞数据库中获取开源项目的原始漏洞信息,并通过所述原始漏洞信息中的漏洞参考信息的补丁链接获取开源项目的原始漏洞的修补代码;
或者,从预先设置的开源项目主页中获取关键词代码,在所述关键词代码中过滤获取开源项目的原始漏洞的修补代码;
信息提取单元,用于根据所述开源项目的原始漏洞信息,提取开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息;
漏洞检测数据库建立单元,用于根据所述开源项目的漏洞描述信息、漏洞影响的软件或组件版本信息以及漏洞检测细节特征信息建立漏洞检测数据库;所述漏洞检测数据库包括以预设索引顺序排列的各检测项;
待检测软件提取单元,用于从待检测软件中提取待检测软件的代码和可执行文件;
匹配检测单元,用于根据所述漏洞检测数据库中的各检测项,以预设索引顺序依次匹配检测待检测软件的代码和可执行文件,以确定待检测软件集成或定制的开源项目是否存在漏洞。
8.根据权利要求7所述的检测软件中集成或定制的开源项目漏洞的装置,其特征在于,所述信息提取单元提取的漏洞描述信息包括漏洞编号信息、严重程度信息、漏洞类型信息、漏洞披露时间信息、漏洞详情信息。
9.根据权利要求7所述的检测软件中集成或定制的开源项目漏洞的装置,其特征在于,所述信息提取单元提取的漏洞影响的软件或组件版本信息包括漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号。
10.根据权利要求9所述的检测软件中集成或定制的开源项目漏洞的装置,其特征在于,所述信息提取单元提取的漏洞检测细节特征信息包括开源项目组件识别模块特征、识别函数特征、漏洞是否修补特征。
11.根据权利要求10所述的检测软件中集成或定制的开源项目漏洞的装置,其特征在于,所述漏洞检测数据库建立单元中的以预设索引顺序排列的各检测项包括:漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征。
12.根据权利要求11所述的检测软件中集成或定制的开源项目漏洞的装置,其特征在于,所述匹配检测单元,具体用于:
依次根据漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征,对待检测软件的代码和可执行文件进行匹配检测;
若在待检测软件的代码和可执行文件中,存在与漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征其中之一的不匹配内容,则确定待检测软件集成或定制的开源项目不存在漏洞;
若待检测软件的代码和可执行文件中未存在与漏洞影响的软件或组件名称、漏洞影响的软件或组件的版本号、开源项目组件识别模块特征、识别函数特征以及漏洞是否修补特征其中之一的不匹配内容,则确定待检测软件集成或定制的开源项目存在漏洞。
CN201611050817.5A 2016-11-24 2016-11-24 检测软件中集成或定制的开源项目漏洞的方法和装置 Active CN106446691B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611050817.5A CN106446691B (zh) 2016-11-24 2016-11-24 检测软件中集成或定制的开源项目漏洞的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611050817.5A CN106446691B (zh) 2016-11-24 2016-11-24 检测软件中集成或定制的开源项目漏洞的方法和装置

Publications (2)

Publication Number Publication Date
CN106446691A CN106446691A (zh) 2017-02-22
CN106446691B true CN106446691B (zh) 2019-07-05

Family

ID=58219711

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611050817.5A Active CN106446691B (zh) 2016-11-24 2016-11-24 检测软件中集成或定制的开源项目漏洞的方法和装置

Country Status (1)

Country Link
CN (1) CN106446691B (zh)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106911694B (zh) * 2017-02-28 2020-08-25 广东电网有限责任公司信息中心 一种基于android漏洞知识库自动更新的方法
CN107885999B (zh) * 2017-11-08 2019-12-24 华中科技大学 一种基于深度学习的漏洞检测方法及***
CN109858252B (zh) * 2017-11-30 2023-04-25 中标软件有限公司 自制***的漏洞分析修复方法
CN109977675B (zh) * 2017-12-28 2022-08-16 超聚变数字技术有限公司 一种开源软件识别方法及装置
CN108563445B (zh) * 2018-03-30 2021-09-10 平安科技(深圳)有限公司 应用程序代码检测方法及服务器
CN108804926B (zh) * 2018-05-23 2020-06-26 腾讯科技(深圳)有限公司 一种通用Web应用漏洞检测、修复方法以及装置
CN109409094B (zh) * 2018-10-29 2021-09-28 杭州安恒信息技术股份有限公司 一种路由器自动化漏洞利用的方法、***及电子设备
CN109918285B (zh) * 2018-12-28 2022-08-09 奇安信科技集团股份有限公司 一种开源软件的安全识别方法及装置
CN109828780B (zh) * 2018-12-28 2022-09-16 奇安信科技集团股份有限公司 一种开源软件的识别方法及装置
CN110110527A (zh) * 2019-05-10 2019-08-09 重庆八戒电子商务有限公司 一种漏洞组件的发现方法、发现装置、计算机装置以及存储介质
CN110109696A (zh) * 2019-05-10 2019-08-09 重庆天蓬网络有限公司 一种数据收集的方法
CN110232279A (zh) * 2019-06-06 2019-09-13 深圳前海微众银行股份有限公司 一种漏洞检测方法及装置
CN110276171A (zh) * 2019-06-10 2019-09-24 深圳开源互联网安全技术有限公司 第三方库文件安全评估方法、***、装置及存储介质
CN111368305A (zh) * 2019-07-12 2020-07-03 北京关键科技股份有限公司 一种代码安全风险检测方法
CN110659502B (zh) * 2019-09-05 2021-09-28 中国科学院软件研究所 一种基于文本信息关联关系分析的项目版本检测方法及***
CN110572399B (zh) * 2019-09-10 2022-05-20 阿波罗智联(北京)科技有限公司 漏洞检测处理方法、装置、设备及存储介质
CN110941831B (zh) * 2019-11-22 2024-03-26 上海工业自动化仪表研究院有限公司 基于分片技术的漏洞匹配方法
CN110909363A (zh) * 2019-11-25 2020-03-24 中国人寿保险股份有限公司 基于大数据的软件第三方组件漏洞应急响应***及方法
CN113343221A (zh) * 2020-02-18 2021-09-03 厦门网宿有限公司 一种终端预警方法和装置
CN111581638A (zh) * 2020-03-20 2020-08-25 中国电力科学研究院有限公司 一种开源软件的安全分析方法及装置
CN111488580A (zh) * 2020-03-25 2020-08-04 杭州迪普科技股份有限公司 安全隐患检测方法、装置、电子设备及计算机可读介质
CN111797402A (zh) * 2020-06-17 2020-10-20 北京世纪互联宽带数据中心有限公司 一种软件漏洞检测的方法、装置及存储介质
US11288041B1 (en) 2020-12-03 2022-03-29 International Business Machines Corporation Efficient defect location in new code versions
CN112434305B (zh) * 2020-12-07 2024-03-08 北京中科微澜科技有限公司 基于补丁的漏洞检测方法、装置、存储介质和电子设备
CN112800430A (zh) * 2021-02-01 2021-05-14 苏州棱镜七彩信息科技有限公司 适用于开源组件的安全与合规治理方法
CN112906007A (zh) * 2021-02-09 2021-06-04 中国工商银行股份有限公司 开源软件漏洞管控方法及装置
CN112579476B (zh) * 2021-02-23 2021-05-18 北京北大软件工程股份有限公司 一种漏洞和软件对齐的方法、装置以及存储介质
CN112988607B (zh) * 2021-05-11 2022-02-11 腾讯科技(深圳)有限公司 一种应用程序的组件检测方法、装置和存储介质
CN113177001A (zh) * 2021-05-24 2021-07-27 深圳前海微众银行股份有限公司 一种开源组件的漏洞检测方法及装置
CN113268713A (zh) * 2021-06-03 2021-08-17 西南大学 基于软件依赖的开源软件许可证选择方法
CN113778509B (zh) * 2021-08-13 2024-07-02 国网河北省电力有限公司电力科学研究院 一种确定开源组件的版本的方法、存储介质和电子装置
CN114095269B (zh) * 2021-11-29 2024-04-30 广东电网有限责任公司 ***检测方法、装置、电子设备及存储介质
WO2024021874A1 (zh) * 2022-07-25 2024-02-01 华为云计算技术有限公司 漏洞分析方法、装置、设备及计算机可读存储介质
CN114996720B (zh) * 2022-08-01 2022-11-15 北京中科微澜科技有限公司 漏洞影响范围的检测方法、装置、存储介质及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541729A (zh) * 2010-12-31 2012-07-04 航空工业信息中心 软件安全漏洞检测装置和方法
CN103065095A (zh) * 2013-01-29 2013-04-24 四川大学 一种基于指纹识别技术的web漏洞扫描方法和漏洞扫描器
CN104573525A (zh) * 2014-12-19 2015-04-29 中国航天科工集团第二研究院七〇六所 一种基于白名单的专用信息服务软件漏洞修复***

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541729A (zh) * 2010-12-31 2012-07-04 航空工业信息中心 软件安全漏洞检测装置和方法
CN103065095A (zh) * 2013-01-29 2013-04-24 四川大学 一种基于指纹识别技术的web漏洞扫描方法和漏洞扫描器
CN104573525A (zh) * 2014-12-19 2015-04-29 中国航天科工集团第二研究院七〇六所 一种基于白名单的专用信息服务软件漏洞修复***

Also Published As

Publication number Publication date
CN106446691A (zh) 2017-02-22

Similar Documents

Publication Publication Date Title
CN106446691B (zh) 检测软件中集成或定制的开源项目漏洞的方法和装置
CN110008113B (zh) 一种测试方法、装置、电子设备
CN109271326B (zh) 云数据库的测试方法及其装置、设备和存储介质
CA2773981C (en) System and method of substituting parameter sets in self-contained mini-applications
CN104123493A (zh) 应用程序的安全性检测方法和装置
CN107346284B (zh) 一种应用程序的检测方法及检测装置
CN105989283A (zh) 一种识别病毒变种的方法及装置
CN103473506A (zh) 用于识别恶意apk文件的方法和装置
CN105550594A (zh) 安卓应用文件的安全性检测方法
CN108197476B (zh) 一种智能终端设备的漏洞检测方法及装置
EP3693860B1 (en) Generation of test models from behavior driven development scenarios based on behavior driven development step definitions and similarity analysis using neuro linguistic programming and machine learning mechanisms
CN109918296A (zh) 软件自动化测试方法及装置
CN113901463B (zh) 面向概念漂移的可解释Android恶意软件检测方法
Akram et al. VCIPR: vulnerable code is identifiable when a patch is released (hacker's perspective)
CN103971055B (zh) 一种基于程序切片技术的安卓恶意软件检测方法
CN107766253A (zh) 一种基于模型变更的自动维护测试脚本的方法
WO2014112303A1 (ja) データ更新漏れ検査装置、データ更新漏れ検査方法、データ更新漏れ検査プログラム
CN112464237A (zh) 一种静态代码安全诊断方法及装置
CN116401670A (zh) 一种无源码场景下的漏洞补丁存在性检测方法及***
CN116932381A (zh) 小程序安全风险自动化评估方法及相关设备
CN114792006B (zh) 基于lstm的安卓跨应用程序共谋安全分析方法及***
Guo et al. An investigation of quality issues in vulnerability detection datasets
Zheng et al. Representation vs. model: what matters most for source code vulnerability detection
CN115408700A (zh) 基于二进制程序模块化的开源组件检测方法
CN113885896A (zh) 应用程序软件包安装方法、装置、计算机设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20211227

Address after: 100191 No. 40, Haidian District, Beijing, Xueyuan Road

Patentee after: CHINA ACADEMY OF INFORMATION AND COMMUNICATIONS

Address before: 100191 No. 52 Garden North Road, Beijing, Haidian District

Patentee before: CHINA ACADEME OF TELECOMMUNICATION RESEARCH OF MIIT

TR01 Transfer of patent right