CN117435480A - 一种二进制文件检测方法、装置、电子设备及存储介质 - Google Patents
一种二进制文件检测方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117435480A CN117435480A CN202311319390.4A CN202311319390A CN117435480A CN 117435480 A CN117435480 A CN 117435480A CN 202311319390 A CN202311319390 A CN 202311319390A CN 117435480 A CN117435480 A CN 117435480A
- Authority
- CN
- China
- Prior art keywords
- feature
- features
- source code
- component
- similarity
- 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
- 238000001514 detection method Methods 0.000 title claims abstract description 37
- 238000000034 method Methods 0.000 claims abstract description 41
- 230000006870 function Effects 0.000 claims description 72
- 238000007781 pre-processing Methods 0.000 claims description 24
- 238000000605 extraction Methods 0.000 claims description 17
- 238000004422 calculation algorithm Methods 0.000 claims description 15
- 238000004364 calculation method Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 14
- 238000010276 construction Methods 0.000 claims description 11
- 238000012216 screening Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 230000001364 causal effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000007670 refining Methods 0.000 description 1
- 238000012038 vulnerability analysis Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/213—Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- 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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种二进制文件检测方法、装置、电子设备及存储介质,涉及软件供应链安全技术领域。该方法包括:对待检测的二进制文件进行特征提取,提取得到二进制文件的函数特征、字符串特征、整数特征;计算该函数特征与开源特征库中组件级特征之间的相似度;若函数特征与组件级特征中第一组件特征的第一相似度满足第一相似度要求时,从开源特征库中版本级特征提取出与该第一组件特征对应的至少一个版本特征;计算字符串特征和整数特征,分别与至少一个版本特征之间的相似度;若字符串特征和整数特征,与至少一个版本特征中第一版本特征的第二相似度满足第二相似度要求,则根据第一组件特征、第一版本特征,确定二进制文件的组件检测结果。
Description
技术领域
本申请涉及软件供应链安全技术领域,尤其涉及一种二进制文件检测方法、装置、电子设备及存储介质。
背景技术
软件成分分析(Soft Component Analysis,SCA)是一种识别某一个软件中所包含的第三方组件信息,可包括组件来源、版本、许可证信息的技术,用于分析开发人员使用的各种源码、模块、框架和库,以识别和清点软件的组件及其构成和依赖关系,并识别已知的安全漏洞或者潜在的许可证授权问题,把这些风险排查在应用系统投产之前,也适用于应用系统运行中的诊断分析。
目前在基于二进制文件的软件成分分析领域最常见的技术框架是基于特征的相似度匹配,将整个字符串作为一个完整的特征与样本文件进行匹配,最终通过评估待测二进制文件与特征数据库中各样本文件的相似度进行第三方组件识别。
但在实际应用中,字符串中包括可变的部分(例如日期,文件路径),如果使用传统的方案将整个字符串看作一个完整的特征与特征数据库中各样本文件进行匹配,这些可变的部分可能会导致匹配结果不准确。
发明内容
本申请提供了一种二进制文件检测方法、装置、电子设备及存储介质,用以提高对二进制文件检测的准确性。
第一方面,提供一种二进制文件检测方法,包括:
对待检测的二进制文件进行特征提取,提取得到所述二进制文件的函数特征、字符串特征、整数特征;
计算所述函数特征,与开源特征库中组件级特征之间的相似度;
若所述函数特征与所述组件级特征中第一组件特征的第一相似度满足第一相似度要求时,从所述开源特征库中版本级特征提取出与所述第一组件特征对应的至少一个版本特征;
计算所述字符串特征和所述函数特征,分别与所述至少一个版本特征之间的相似度;
若所述字符串特征和所述函数特征,与所述至少一个版本特征中第一版本特征的第二相似度满足第二相似度要求,则根据所述第一组件特征、所述第一版本特征,确定所述二进制文件的组件检测结果。
可选的,所述对待检测的二进制文件进行特征提取之前,还包括:
对收集到的源代码文件进行分析,分析得到所述源代码文件的组件信息;
使用编译器将所述源代码文件解析成AST,并遍历所述AST进行特征提取,得到所述源代码文件的源代码特征;
根据所述组件信息、所述源代码特征生成所述开源特征库。
可选的,所述开源特征库中组件级特征是根据所述组件信息,以及所述源代码特征中的函数签名生成的;
所述开源特征库中版本级特征是根据所述源代码特征中的字符串、整数常量生成的。
可选的,所述得到所述源代码文件的源代码特征之后,还包括:
对所述源代码特征执行第一预处理操作,得到预处理后的源代码特征;其中,所述第一预处理操作包括剔除所述源代码特征中的无效特征、剔除所述源代码特征中的重复特征、将所述源代码特征按照设定标准格式转换中至少一种。
可选的,所述对待检测的二进制文件进行特征提取,提取得到所述二进制文件的函数特征、字符串特征、整数特征之后,还包括:
对所述函数特征、所述字符串特征、所述整数特征执行第二预处理操作,得到预处理后的函数特征、字符串特征、整数特征;其中,所述第二预处理操作包括剔除所述函数特征、所述字符串特征、所述整数特征各自的无效特征、剔除所述函数特征、所述字符串特征、所述整数特征各自的重复特征、将所述函数特征、所述字符串特征、所述整数特征按照设定标准格式转换中至少一种。
可选的,所述第一相似度是基于完全匹配算法计算得到的;所述第二相似度是基于模糊哈希算法计算得到的。
本申请实施例中,有益效果如下:
由于开源特征库中是将特征进行了更细粒度的划分,划分为组件特征与版本特征,使得开源特征库中的特征信息更加丰富和全面;在后续基于该开源特征库对二进制文件进行检测时,先基于组件特征对二进制文件的函数特征进行相似度比对,再基于版本特征对二进制文件的字符串特征进行相似比对,因此可提高对二进制文件检测的准确性。
第二方面,提供一种二进制文件检测装置,包括:
特征提取模块,用于对待检测的二进制文件进行特征提取,提取得到所述二进制文件的函数特征、字符串特征、整数特征;
第一相似度计算模块,用于计算所述函数特征,分别与开源特征库中组件级特征之间的相似度;
筛选模块,用于若所述函数特征与所述组件级特征中第一组件特征的第一相似度满足第一相似度要求时,从所述开源特征库中版本级特征提取出与所述第一组件特征对应的至少一个版本特征;
第二相似度计算模块,用于计算所述字符串特征和所述整数特征,分别与所述至少一个版本特征之间的相似度;
检测模块,用于若所述字符串特征和所述整数特征,与所述至少一个版本特征中第一版本特征的第二相似度满足第二相似度要求,则根据所述第一组件特征、所述第一版本特征,确定所述二进制文件的组件检测结果。
可选的,所述装置还包括特征库构建模块;
所述特征库构建模块,用于对收集到的源代码文件进行分析,分析得到所述源代码文件的组件信息;
使用编译器将所述源代码文件解析AST,并遍历所述AST进行特征提取,得到所述源代码文件的源代码特征;
根据所述组件信息、所述源代码特征生成所述开源特征库。
可选的,所述开源特征库中组件级特征是根据所述组件信息,以及所述源代码特征中的函数签名生成的;
所述开源特征库中版本级特征是根据所述源代码特征中的字符串、整数常量生成的。
可选的,所述特征库构建模块,还用于:
对所述源代码特征执行第一预处理操作,得到预处理后的源代码特征;其中,所述第一预处理操作包括剔除所述源代码特征中的无效特征、剔除所述源代码特征中的重复特征、将所述源代码特征按照设定标准格式转换中至少一种。
可选的,所述特征提取模块,还用于:
对所述函数特征、所述字符串特征、所述整数特征执行第二预处理操作,得到预处理后的函数特征、字符串特征、整数特征;其中,所述第二预处理操作包括剔除所述函数特征、所述字符串特征、所述整数特征各自的无效特征、剔除所述函数特征、所述字符串特征、所述整数特征各自的重复特征、将所述函数特征、所述字符串特征、所述整数特征按照设定标准格式转换中至少一种。
可选的,所述第一相似度是基于完全匹配算法计算得到的;所述第二相似度是基于模糊哈希算法计算得到的。
第三方面,提供一种电子设备,包括:
存储器,用于存放计算机程序;处理器,用于执行所述存储器上所存放的计算机程序时,实现第一方面中任一项所述的方法步骤。
第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面中任一项所述的方法步骤。
上述第二方面至第四方面中的各个方面以及各个方面可能达到的技术效果请参照上述针对第一方面或第一方面中的各种可能方案可以达到的技术效果说明,这里不再重复赘述。
附图说明
图1为本申请实施例提供的一种二进制文件检测方法的流程图;
图2为本申请实施例提供的一种构建开源特征库的流程图;
图3为本申请实施例提供的一种开源特征库的架构示意图;
图4为本申请实施例提供的一种二进制文件检测装置的结构示意图;
图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。方法实施例中的具体操作方法也可以应用于装置实施例或系统实施例中。需要说明的是,在本申请的描述中“多个”理解为“至少两个”。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。A与B连接,可以表示:A与B直接连接和A与B通过C连接这两种情况。另外,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
下面结合附图,对本申请实施例进行详细描述。
(1)抽象语法树(Abstract Syntax Tree,AST)页简称语法树(Syntax tree),是源代码语法架构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。
(2)Clang编译器:Clang是为C语言家族(C、C、Objective C)中的语言提供了语言前端和工具基础设施。
(3)模糊哈希算法又叫基于内容分割的上下文触发片段哈希(context triggeredpiecewise hashing,CTPH)算法,主要用于文件(本申请中为各种特征)的相似性比较,具体过程是使用一个弱哈希计算文件局部内容,在特定条件下对文件进行分片,然后使用一个强哈希对文件每片计算哈希值,取这些值的一部分并连接起来,与分片条件一起构成一个模糊哈希结果。使用一个字符串相似性对比算法判断两个模糊哈希值的相似度多少,从而判断两个文件的相似程度。
(4)完全匹配算法是指整个文件(本申请中为各种特征)完全匹配完才输出结果。
(5)开放式安全套接层协议(Open Secure Sockets Layer,OpenSSL)在计算机网络上,是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。
(6)GitHub是一个面向开源及私有软件项目的托管平台。
(7)国际漏洞数据库(National Vulnerability Database,NVD)旨在收集、共享和发布关于计算机软件和硬件中存在安全漏洞的相关信息。
(8)公共漏洞和暴露(Common Vulnerabilities&Exposures,CVE)数据库记录了各种软件和操作系统中已知的漏洞情况。
(9)国家信息安全漏洞共享平台(China National Vulnerability Database ofInformation Security,CNNVD)为负责建设运维的国家级信息安全漏洞数据管理平台,旨在为我国信息安全保障提供服务。
为进一步说明本申请实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本申请实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。所述方法在实际的处理过程中或者装置执行时,可按照实施例或者附图所示的方法顺序执行或者并执行。
图1为本申请实施例提供的一种二进制文件检测方法的流程图。该流程可由二进制文件检测装置所执行,该装置可通过软件的方式实现,也可通过软件和硬件相结合的方式实现,如图1所示,该流程包括如下步骤:
101:对待检测的二进制文件进行特征提取,提取得到该二进制文件的函数特征、字符串特征、整数特征。
可选的,对该二进制文件进行特征提取可以采用机器学习、静态特征、动态特征等一种或多种方法。
进一步的,提取到该二进制文件的函数特征、字符串特征、整数特征之后,还可对其进行执行第二预处理操作,从而提高后续对二进制文件的检测精度与效率,该第二预处理操作可包括以下至少一种:剔除函数特征、字符串特征、整数特征各自的无效特征、剔除函数特征、字符串特征、整数特征各自的重复特征、将函数特征、字符串特征、整数特征按照设定标准格式转换等。
可选的,在对该二进制文件进行特征提取之前,可预先构建一个开源特征库,如图2所示,示例性示出了本申请实施例提供的一种构建开源特征库的流程图,该流程包括如下步骤:
201:对收集到的源代码文件进行分析,分析得到该源代码文件的组件信息。
可选的,该源代码文件可以是从Github、Gitee、sourceforge等上收集的,该组件信息可包括组件的源码路径(也称文件路径),还可包括组件名称、组件所属厂商、许可证信息、组件版本号、组件描述、源码地址等,如表1所示,示例性示出了OpenSSL的组件信息示例表。
表1:OpenSSL的组件信息示例表
202:使用编译器将上述源代码文件解析成AST,并遍历AST进行特征提取,得到该源代码文件的源代码特征。
可选的,可使用Clang编译器将上述源代码文件解析成AST,也可使用其他类似的编译器将上述源代码文件解析成AST,本申请实施例在此不做限制。
可选的,该源代码特征包括整数常量、函数签名、字符串,还可包括类名、命名空间等特征。进一步的,提取到该源代码特征后,还可对其执行第一预处理操作,从而保证后续构建开源特征库的质量,该第一预处理操作包括以下至少一种:剔除源代码特征中的无效特征、剔除源代码特征中的重复特征、将源代码特征按照设定标准格式转换。如表2所示,示例性示出了OpenSSL的源代码特征示例表。
表1:OpenSSL的源代码特征示例表
203:根据上述组件信息、上述源代码特征生成开源特征库。
可选的,基于分析得到的组件信息,以及提取得到的源代码特征进行开源特征库构建时,可对其进行细粒度划分,划分为组件级特征与版本级特征,具体的:开源特征库中组件级特征是根据上述组件信息(例如,组件信中的源码路径),以及源代码特征中的函数签名生成的;开源特征库中版本级特征是根据源代码特征中的字符串、整数常量生成的。
在一些实施例中,还可在开源特征库中增加组件的漏洞信息,具体的:根据上述组件信息(例如,组件名称、组件版本号等),从漏洞数据库(例如,NVD、CVE、CNNVD等)中检索出与该组件信息对应的漏洞信息(例如,漏洞编号、解决方案、参考链接等),便于后续对待检测的二进制文件进行漏洞分析、恶意软件检测等,从而保证该二进制文件的安全性,避免在实际使用过程中被攻击者攻击。
图3示例性示出了本申请实施例提供的一种开源特征库的架构示意图。如图3所示,该开源特征库300包括:
组件级特征单元301用于将组件信息、各种函数签名作为组件特征进行存储。
版本级特征单元302用于将各字符串、各整数常量作为版本特征进行存储。
漏洞信息单元303用于将各种的漏洞编号、解决方案、参考链接等作为漏洞信息进行存储。
上述图2构建的开源特征库,使用Clang编译器工具提取更多细粒度的源代码特征;进一步结合组件信息,对源代码特征细化分类,将源代码特征中的函数签名与组件信息(例如源码路径)关联为组件特征,将字符串与整数常量关联为版本特征,因此使得该开源特征库中的特征信息更加丰富与全面,提高二进制文件匹配成功率。
102:计算上述函数特征,分别与开源特征库中组件级特征之间的相似度。
可选的,可采用完全匹配算法,计算上述函数特征,分别与开源特征库中组件级特征之间的相似度。举例来讲,计算二进制文件的函数特征,分别与图3所示的组件级特征单元301中存储的各组件特征之间的相似度。
103:若上述函数特征与组件级特征中第一组件特征的第一相似度满足第一相似度要求时,从该开源特征库中提取出与该第一组件特征对应的至少一个版本特征。
该步骤中,若该第一组件特征与函数特征的第一相似度大于设定的第一相似度阈值(如85),则表明该函数特征与第一组件特征相匹配,便可该开源特征库(如图3所示的版本级特征单元302)中提取出与该第一组件特征对应的至少一个版本特征,否则,执行其他操作,例如提示用户该待检测的二进制文件检测失败。
104:计算上述字符串特征和整数特征,分别与该至少一个版本特征之间的相似度。
可选的,由于图3所示的版本级特征单元302存储的各版本特征包括字符串与整数常量,因此在计算上述字符串特征和整数特征,分别与该至少一个版本特征之间的相似度时,可进一步划分为整数常量类型的相似度计算、字符串类型的相似度计算。进一步的,针对不同类型的版本特征采用不同相似度计算方式进行计算,提高了计算效率。例如,针对版本特征中是整数常量类型的,采用完全匹配算法;针对版本特征中是字符串类型的,采用模糊哈希算法。
在一些实施例中,针对整数常量类型的相似度计算与字符串类型的相似度计算可分别设定不同的权重,从而满足不同用户的需求,提高后续对二进制文件的检测速率。
105:若上述字符串特征和整数特征,与该至少一个版本特征中第一版本特征的第二相似度满足第二相似度要求,则根据该第一组件特征、该第一版本特征,确定该二进制文件的组件检测结果。
该步骤中,若该第一版本特征与字符串特征的第二相似度大于设定的第二相似度阈值(如90),则表明该字符串特征与第一版本特征相匹配,则可根据第一组件特征确定该二进制文件对应的组件名称,根据该第一版特征确定该二进制文件对应的组件版本号,从而输出该二进制文件的组件检测结果。
在一些实施例中,在确定出该二进制文件的组件检测结果后,还可基于该二进制文件的组件名称、组件版本号,从而图3所示的漏洞信息单元303中进行匹配,确定该二进制文件中是否存在恶意文件等。
本申请实施例中,有益效果如下:
由于开源特征库中是将特征进行了更细粒度的划分,划分为组件特征与版本特征,使得开源特征库中的特征信息更加丰富和全面;在后续基于该开源特征库对二进制文件进行检测时,先基于组件特征对二进制文件的函数特征进行相似度比对,再基于版本特征对二进制文件的字符串特征进行相似比对,因此可提高对二进制文件检测的准确性。
基于相同的技术构思,本申请实施例中还提供了一种二进制文件检测装置,该装置可实现本申请实施例中上述二进制文件检测方法流程。
图4为本申请实施例提供的一种二进制文件检测装置的结构示意图。该装置包括:特征提取模块401、第一相似计算模块402、筛选模块403、第二相似度计算模块404、检测模块405,进一步还可包括特征库构建模块406。
特征提取模块401,用于对待检测的二进制文件进行特征提取,提取得到所述二进制文件的函数特征、字符串特征、整数特征。
第一相似度计算模块402,用于计算所述函数特征,与开源特征库中组件级特征之间的相似度。
筛选模块403,用于若所述函数特征与所述组件级特征中第一组件特征的第一相似度满足第一相似度要求时,从所述开源特征库中提取出与所述第一组件特征对应的至少一个版本特征。
第二相似度计算模块404,用于计算所述字符串特征和所述整数特征,分别与所述至少一个版本特征之间的相似度。
检测模块405,用于若所述字符串特征和所述整数特征,与所述至少一个版本特征中第一版本特征的第二相似度满足第二相似度要求,则根据所述第一组件特征、所述第一版本特征,确定所述二进制文件的组件检测结果。
特征库构建模块406,用于对收集到的源代码文件进行分析,分析得到所述源代码文件的组件信息;使用编译器将所述源代码文件解析成AST,并遍历所述AST进行特征提取,得到所述源代码文件的源代码特征;根据所述组件信息、所述源代码特征生成所述开源特征库。
可选的,特征库构建模块406,还用于对所述源代码特征执行第一预处理操作,得到预处理后的源代码特征;其中,所述第一预处理操作包括剔除所述源代码特征中的无效特征、剔除所述源代码特征中的重复特征、将所述源代码特征按照设定标准格式转换中至少一种。
可选的,特征提取模块401,还用于对所述函数特征、所述字符串特征、所述整数特征,执行第二预处理操作,得到预处理后的函数特征、字符串特征、整数特征;其中,所述第二预处理操作包括剔除所述函数特征、所述字符串特征、所述整数特征各自的无效特征、剔除所述函数特征、所述字符串特征、所述整数特征各自的重复特征、将所述函数特征、所述字符串特征、所述整数特征按照设定标准格式转换中至少一种。
在此需要说明的是,本申请实施例提供的上述装置,能够实现上述方法实施例中的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
基于相同的技术构思,本申请实施例中还提供了一种电子设备,所述电子设备可以实现前述一种二进制文件检测装置的功能。
图5为本申请实施例提供的电子设备的结构示意图。
至少一个处理器501,以及与至少一个处理器501连接的存储器502,本申请实施例中不限定处理器501与存储器502之间的具体连接介质,图5中是以处理器501和存储器502之间通过总线500连接为例。总线500在图5中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线500可以分为地址总线、数据总线、控制总线等,为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。或者,处理器501也可以称为控制器,对于名称不做限制。
在本申请实施例中,存储器502存储有可被至少一个处理器501执行的指令,至少一个处理器501通过执行存储器502存储的指令,可以执行前文论述的一种二进制文件检测方法。处理器501可以实现图4所示的装置中各个模块的功能。
其中,处理器501是该装置的控制中心,可以利用各种接口和线路连接整个该控制设备的各个部分,通过运行或执行存储在存储器502内的指令以及调用存储在存储器502内的数据,该装置的各种功能和处理数据,从而对该装置进行整体监控。
在一种可能的设计中,处理器501可包括一个或多个处理单元,处理器501可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器501中。在一些实施例中,处理器501和存储器502可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器501可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的一种二进制文件检测方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器502作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器502可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器502是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器502还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
通过对处理器501进行设计编程,可以将前述实施例中介绍的一种二进制文件检测方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行图1所示的实施例的一种二进制文件检测方法。如何对处理器501进行设计编程为本领域技术人员所公知的技术,这里不再赘述。
在此需要说明的是,本申请实施例提供的上述通电子设备,能够实现上述方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于使计算机执行上述实施例中的一种二进制文件检测方法。
本申请实施例还提供了一种计算机程序产品,所述计算机程序产品在被计算机调用时,使得所述计算机执行上述实施例中的一种二进制文件检测方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
Claims (14)
1.一种二进制文件检测方法,其特征在于,包括:
对待检测的二进制文件进行特征提取,提取得到所述二进制文件的函数特征、字符串特征、整数特征;
计算所述函数特征,与开源特征库中组件级特征之间的相似度;
若所述函数特征与所述组件级特征中第一组件特征的第一相似度满足第一相似度要求时,从所述开源特征库中版本级特征提取出与所述第一组件特征对应的至少一个版本特征;
计算所述字符串特征和所述函数特征,分别与所述至少一个版本特征之间的相似度;
若所述字符串特征和所述函数特征,与所述至少一个版本特征中第一版本特征的第二相似度满足第二相似度要求,则根据所述第一组件特征、所述第一版本特征,确定所述二进制文件的组件检测结果。
2.如权利要求1所述的方法,其特征在于,所述对待检测的二进制文件进行特征提取之前,还包括:
对收集到的源代码文件进行分析,分析得到所述源代码文件的组件信息;
使用编译器将所述源代码文件解析成抽象语法树AST,并遍历所述AST进行特征提取,得到所述源代码文件的源代码特征;
根据所述组件信息、所述源代码特征生成所述开源特征库。
3.如权利要求2所述的方法,其特征在于,所述开源特征库中组件级特征是根据所述组件信息,以及所述源代码特征中的函数签名生成的;
所述开源特征库中版本级特征是根据所述源代码特征中的字符串、整数常量生成的。
4.如权利要求2所述的方法,其特征在于,所述得到所述源代码文件的源代码特征之后,还包括:
对所述源代码特征执行第一预处理操作,得到预处理后的源代码特征;其中,所述第一预处理操作包括剔除所述源代码特征中的无效特征、剔除所述源代码特征中的重复特征、将所述源代码特征按照设定标准格式转换中至少一种。
5.如权利要求1所述的方法,其特征在于,所述对待检测的二进制文件进行特征提取,提取得到所述二进制文件的函数特征、字符串特征、整数特征之后,还包括:
对所述函数特征、所述字符串特征、所述整数特征执行第二预处理操作,得到预处理后的函数特征、字符串特征、整数特征;其中,所述第二预处理操作包括剔除所述函数特征、所述字符串特征、所述整数特征各自的无效特征、剔除所述函数特征、所述字符串特征、所述整数特征各自的重复特征、将所述函数特征、所述字符串特征、所述整数特征按照设定标准格式转换中至少一种。
6.如权利要求1-5任一项所述的方法,其特征在于,所述第一相似度是基于完全匹配算法计算得到的;
所述第二相似度是基于模糊哈希算法计算得到的。
7.一种二进制文件检测装置,其特征在于,包括:
特征提取模块,用于对待检测的二进制文件进行特征提取,提取得到所述二进制文件的函数特征、字符串特征、整数特征;
第一相似度计算模块,用于计算所述函数特征,与开源特征库中组件级特征之间的相似度;
筛选模块,用于若所述函数特征与所述组件级特征中第一组件特征的第一相似度满足第一相似度要求时,从所述开源特征库中版本级特征提取出与所述第一组件特征对应的至少一个版本特征;
第二相似度计算模块,用于计算所述字符串特征和所述整数特征,分别与所述至少一个版本特征之间的相似度;
检测模块,用于若所述字符串特征和所述函数特征,与所述至少一个版本特征中第一版本特征的第二相似度满足第二相似度要求,则根据所述第一组件特征、所述第一版本特征,确定所述二进制文件的组件检测结果。
8.如权利要求7所述的装置,其特征在于,所述装置还包括特征库构建模块;
所述特征库构建模块,用于对收集到的源代码文件进行分析,分析得到所述源代码文件的组件信息;
使用编译器将所述源代码文件解析成抽象语法树AST,并遍历所述AST进行特征提取,得到所述源代码文件的源代码特征;
根据所述组件信息、所述源代码特征生成所述开源特征库。
9.如权利要求8所述的装置,其特征在于,所述开源特征库中的组件级特征是根据所述组件信息,以及所述源代码特征中的函数签名生成的;
所述开源特征库中版本级特征是根据所述源代码特征中的字符串、整数常量生成的。
10.如权利要求8所述的装置,其特征在于,所述特征库构建模块,还用于:
对所述源代码特征执行第一预处理操作,得到预处理后的源代码特征;其中,所述第一预处理操作包括剔除所述源代码特征中的无效特征、剔除所述源代码特征中的重复特征、将所述源代码特征按照设定标准格式转换中至少一种。
11.如权利要求7所述的装置,其特征在于,所述特征提取模块,还用于:
对所述函数特征、所述字符串特征、所述整数特征执行第二预处理操作,得到预处理后的函数特征、字符串特征、整数特征;其中,所述第二预处理操作包括剔除所述函数特征、所述字符串特征、所述整数特征各自的无效特征、剔除所述函数特征、所述字符串特征、所述整数特征各自的重复特征、将所述函数特征、所述字符串特征、所述整数特征按照设定标准格式转换中至少一种。
12.如权利要求7-11任一项所述的装置,其特征在于,所述第一相似度是基于完全匹配算法计算得到的;
所述第二相似度是基于模糊哈希算法计算得到的。
13.一种电子设备,其特征在于,包括:
存储器,用于存放计算机程序;
处理器,用于执行所述存储器上所存放的计算机程序时,实现权利要求1-6中任一项所述的方法步骤。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-6中任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311319390.4A CN117435480A (zh) | 2023-10-12 | 2023-10-12 | 一种二进制文件检测方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311319390.4A CN117435480A (zh) | 2023-10-12 | 2023-10-12 | 一种二进制文件检测方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117435480A true CN117435480A (zh) | 2024-01-23 |
Family
ID=89557507
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311319390.4A Pending CN117435480A (zh) | 2023-10-12 | 2023-10-12 | 一种二进制文件检测方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117435480A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117972399A (zh) * | 2024-03-28 | 2024-05-03 | 北京安普诺信息技术有限公司 | 用于二进制sca的特征提取方法、装置、设备及介质 |
-
2023
- 2023-10-12 CN CN202311319390.4A patent/CN117435480A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117972399A (zh) * | 2024-03-28 | 2024-05-03 | 北京安普诺信息技术有限公司 | 用于二进制sca的特征提取方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11061648B2 (en) | Method and system for arbitrary-granularity execution clone detection | |
US9959276B2 (en) | Static feature extraction from structured files | |
Pham et al. | Detection of recurring software vulnerabilities | |
Yu et al. | Patching vulnerabilities with sanitization synthesis | |
CN109101815B (zh) | 一种恶意软件检测方法及相关设备 | |
CN114077741B (zh) | 软件供应链安全检测方法和装置、电子设备及存储介质 | |
CN110474900B (zh) | 一种游戏协议测试方法及装置 | |
US9495542B2 (en) | Software inspection system | |
CN117435480A (zh) | 一种二进制文件检测方法、装置、电子设备及存储介质 | |
CN111222137A (zh) | 一种程序分类模型训练方法、程序分类方法及装置 | |
CN111338622B (zh) | 供应链代码识别方法、装置、服务器及可读存储介质 | |
CN114386046A (zh) | 一种未知漏洞检测方法、装置、电子设备及存储介质 | |
CN116186716A (zh) | 一种面向持续集成部署的安全分析方法及装置 | |
CN115168847A (zh) | 应用补丁生成方法、装置、计算机设备及可读存储介质 | |
JP5077455B2 (ja) | 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法 | |
US8909566B2 (en) | Method, a computer program and apparatus for analyzing symbols in a computer | |
US7539975B2 (en) | Method, system and product for determining standard Java objects | |
US7647581B2 (en) | Evaluating java objects across different virtual machine vendors | |
CN112632548B (zh) | 一种恶意安卓程序检测方法、装置,电子设备及存储介质 | |
CN115310087A (zh) | 一种基于抽象语法树的网站后门检测方法和系统 | |
CN112380541A (zh) | 智能合约的漏洞的检测方法、装置及计算机设备 | |
CN118094255B (zh) | 一种过滤函数的识别方法、装置、设备及存储介质 | |
CN115203060B (zh) | 一种基于iast的安全测试方法及装置 | |
EP4386601A1 (en) | System and method for auto repairing vulnerable code program fragments of a software | |
Zeng et al. | OSSDetector: Towards a More Accurate Approach for C/C++ Third-Party Library Detection |
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 |