CN110851367B - 一种基于ast评估源码泄漏风险的方法、装置和电子设备 - Google Patents

一种基于ast评估源码泄漏风险的方法、装置和电子设备 Download PDF

Info

Publication number
CN110851367B
CN110851367B CN201911130983.XA CN201911130983A CN110851367B CN 110851367 B CN110851367 B CN 110851367B CN 201911130983 A CN201911130983 A CN 201911130983A CN 110851367 B CN110851367 B CN 110851367B
Authority
CN
China
Prior art keywords
protected
function node
function
nodes
node
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
CN201911130983.XA
Other languages
English (en)
Other versions
CN110851367A (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 Anheng Information Security Technology Co Ltd
Original Assignee
Hangzhou Anheng Information Security 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 Anheng Information Security Technology Co Ltd filed Critical Hangzhou Anheng Information Security Technology Co Ltd
Priority to CN201911130983.XA priority Critical patent/CN110851367B/zh
Publication of CN110851367A publication Critical patent/CN110851367A/zh
Application granted granted Critical
Publication of CN110851367B publication Critical patent/CN110851367B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供了一种基于AST评估源码泄漏风险的方法、装置和电子设备,涉及网络安全的技术领域,包括:获取待保护源码的AST信息,然后基于AST信息在目标路径中获取雷同源码,其中,目标路径包括以下至少之一:Git仓库和搜索引擎,接下来,将雷同源码进行源码转换,得到对应的雷同AST信息,最后,基于待保护源码的AST信息和雷同AST信息确定待保护源码的泄露风险值。该方法能够基于AST对目标路径上的源码进行实时监测分析,并对源码泄漏风险进行评估,实现了快速、及时、准确的发现源码泄漏情况,及时提醒企业做出应急处理措施,从而缓解了现有技术中保护源码的方法存在的安全性差的技术问题。

Description

一种基于AST评估源码泄漏风险的方法、装置和电子设备
技术领域
本发明涉及网络安全的技术领域,尤其是涉及一种基于AST评估源码泄漏风险的方法、装置和电子设备。
背景技术
2018年华住酒店程序员把带有用户名和密码的数据库访问权限代码上传到Github,导致数据库泄漏;2019年4月疑似B站前员工在Github上创建“go-common”代码库,近40家知名企业源代码泄漏,互联网源码泄漏事件频发,源码安全成为一个亟需解决的问题,现有技术中,多采用对源码进行加密的方式预防源代泄漏,但是如果加密方式外泄或者被黑客攻击,仍然无法规避源代泄漏的风险。
综上所述,现有技术中保护源码的方法存在安全性差的技术问题。
发明内容
本发明的目的在于提供一种基于AST评估源码泄漏风险的方法、装置和电子设备,以缓解了现有技术中保护源码的方法存在的安全性差的技术问题。
第一方面,实施例提供一种基于AST评估源码泄漏风险的方法,包括:获取待保护源码的AST信息;基于所述AST信息在目标路径中获取雷同源码,其中,所述目标路径包括以下至少之一:Git仓库、搜索引擎;将所述雷同源码进行源码转换,得到对应的雷同AST信息;基于所述待保护源码的AST信息和所述雷同AST信息确定待保护源码的泄露风险值。
在可选的实施方式中,基于所述AST信息在目标路径中获取雷同源码,包括:从所述待保护源码的AST信息中提取待保护源码的特征信息;基于所述特征信息获取所述目标路径中的雷同源码。
在可选的实施方式中,若所述目标路径为Git仓库,则基于所述特征信息获取所述目标路径中的雷同源码,包括:获取所述Git仓库的API接口;通过所述API接口查询所述Git仓库中与所述特征信息相匹配的目标仓库;并在所述目标仓库中提取所述雷同源码。
在可选的实施方式中,若所述目标路径为搜索引擎,则基于所述特征信息获取所述目标路径中的雷同源码,包括:利用网络爬虫在所述搜索引擎中查询与所述特征信息匹配的html页面;判断所述html页面中是否存在所述雷同源码的下载路径;若存在,则按照所述下载路径下载所述雷同源码。
在可选的实施方式中,基于所述待保护源码的AST信息和所述雷同AST信息确定待保护源码的泄露风险值,包括:对所述待保护源码的AST信息进行过滤,得到待保护函数节点序列,并对所述雷同AST信息进行过滤,得到雷同函数节点序列;在所述雷同函数节点序列中为所述待保护函数节点序列中的每个待保护函数节点选择目标函数节点,其中,所述目标函数节点与所述待保护函数节点具有最大相似度;计算所有待保护函数节点与对应的目标函数节点相似度的平均值,并将所述平均值作为所述待保护源码的泄露风险值。
在可选的实施方式中,在所述雷同函数节点序列中为所述待保护函数节点序列中的每个待保护函数节点选择目标函数节点,包括:计算所述每个待保护函数节点的子节点与所述雷同函数节点序列中所有子节点的相似度,其中,每个待保护函数节点包括:声明变量子节点、赋值运算子节点和函数输出子节点;基于算式计算所述每个待保护函数节点与每个雷同函数节点的相似度,其中,Sij表示第i个待保护函数节点与第j个雷同函数节点的相似度,i取值1至I,I表示待保护函数节点的数量,j取值1至J,J表示雷同函数节点的数量,Xi表示第i个待保护函数节点中声明变量子节点的数量,Yi表示所述第i个待保护函数节点中赋值运算子节点的数量,Zi表示所述第i个待保护函数节点中函数输出子节点的数量,pij表示第j个雷同函数节点中与第i个待保护函数节点的声明变量子节点相似度为100%的子节点数量,mij表示第j个雷同函数节点中与第i个待保护函数节点的赋值运算子节点相似度为100%的子节点数量,nij表示第j个雷同函数节点中与第i个待保护函数节点的函数输出子节点相似度为100%的子节点的数量;将第k个雷同函数节点作为所述第i个待保护函数节点的目标函数节点,其中,Sik=max(Sij)。
第二方面,实施例提供一种基于AST评估源码泄漏风险的装置,包括:第一获取模块,用于获取待保护源码的AST信息;第二获取模块,用于基于所述AST信息在目标路径中获取雷同源码,其中,所述目标路径包括以下至少之一:Git仓库、搜索引擎;转换模块,用于将所述雷同源码进行源码转换,得到对应的雷同AST信息;确定模块,用于基于所述待保护源码的AST信息和所述雷同AST信息确定待保护源码的泄露风险值。
在可选的实施方式中,所述第二获取模块包括:提取单元,用于从所述待保护源码的AST信息中提取待保护源码的特征信息;获取单元,用于基于所述特征信息获取所述目标路径中的雷同源码。
第三方面,实施例提供一种电子设备,包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述前述实施方式中任一项所述的方法的步骤。
第四方面,实施例提供一种具有处理器可执行的非易失的程序代码的计算机可读介质,所述程序代码使所述处理器执行前述实施方式中任一项所述的方法。
现有技术中多采用对源码进行加密的方式进行源码保护,但是如果加密方式外泄或者被黑客攻击,仍然无法规避源代泄漏的风险,与现有技术相比,本发明提供了一种基于AST评估源码泄漏风险的方法,该方法首先获取待保护源码的AST信息,然后基于AST信息在目标路径中获取雷同源码,其中,目标路径包括以下至少之一:Git仓库和搜索引擎,接下来,将雷同源码进行源码转换,得到对应的雷同AST信息,最后,基于待保护源码的AST信息和雷同AST信息确定待保护源码的泄露风险值。该方法能够基于AST对目标路径上的源码进行实时监测分析,并对源码泄漏风险进行评估,实现了快速、及时、准确的发现源码泄漏情况,及时提醒企业做出应急处理措施,从而缓解了现有技术中保护源码的方法存在的安全性差的技术问题。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于AST评估源码泄漏风险的方法的流程图;
图2为本发明实施例提供的一种基于待保护源码的AST信息和雷同AST信息确定待保护源码的泄露风险值的流程图;
图3为本发明实施例提供的一种待保护函数节点序列和雷同函数节点序列的结构示意图;
图4为本发明实施例提供的另一种待保护函数节点序列和雷同函数节点序列的结构示意图;
图5为本发明实施例提供的一种基于AST评估源码泄漏风险的装置的功能模块图;
图6为本发明实施例提供的一种电子设备的示意图。
图标:100-第一获取模块;200-第二获取模块;300-转换模块;400-确定模块;60-处理器;61-存储器;62-总线;63-通信接口。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
源码泄漏是指企业内部的开发源代码被人为或者网络攻击窃取,暴露在互联网中,一旦发生了源码泄露事件,无疑是对企业的资产安全产生了重大的威胁,因此,如何保护源码甚至如何应对源码泄漏事件就成为了企业重点关注的方向,有鉴于此,本发明实施例提供了一种基于AST评估源码泄漏风险的方法。
实施例一
本发明实施例提供了一种基于AST评估源码泄漏风险的方法,如图1所示,该方法具体包括如下步骤:
步骤S11,获取待保护源码的AST信息;
具体的,为了评估待保护源码的泄漏风险,首先需要获取待保护源码的AST(Abstract Syntax Tree,抽象语法树)信息,AST是源码语法结构的一种抽象表示,它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源码中的一种结构,AST在程序的编译过程中产生,是介于源码与中间语言之间的中间数据结构,包含了更多的程序代码的结构信息,从而使得源码泄漏风险的分析计算更加准确、全面。在一些实施方式中,可以使用开源的语法分析工具ANTLR(Another Tool for Language Recognition)对待保护源码进行处理,将待保护源码经过词法分析、语法分析,进而得到待保护源码的AST信息。
步骤S12,基于AST信息在目标路径中获取雷同源码。
进一步的,获取到待保护源码的AST信息后,还需要在目标路径上获取雷同源码,在本发明实施例中,目标路径包括以下至少之一:Git仓库、搜索引擎,Git仓库包括但不限于Github、Gitlab、Gitee,其中,GitHub是一个面向开源及私有软件项目的托管平台,除了Git代码仓库托管及基本的Web管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能;GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务;Gitee是基于Git的代码托管平台。搜索引擎就是为用户提供检索服务,将检索的相关信息展示给用户的系统,以百度、谷歌为例。需要说明的是,在目标路径上获取的雷同源码可能为一个也可能为多个,本发明实施例仅针对其中一个雷同源码的处理过程进行详细介绍,其他雷同源码均采用相同的处理步骤。
步骤S13,将雷同源码进行源码转换,得到对应的雷同AST信息。
步骤S14,基于待保护源码的AST信息和雷同AST信息确定待保护源码的泄露风险值。
基于待保护源码的AST信息在上述目标路径中获取到雷同源码后,还需要进一步的将每个雷同源码进行源码转换,在一些实施方式中,可以使用ANTLR对雷同源码进行处理,得到雷同源码对应的雷同AST信息。
鉴于AST信息包含了源码的结构信息,所以就能够基于待保护源码的AST信息和雷同AST信息确定待保护源码的泄露风险值。若上述两种AST信息的相似度越高,则说明待保护源码的泄漏风险值越高。
现有技术中多采用对源码进行加密的方式进行源码保护,但是如果加密方式外泄或者被黑客攻击,仍然无法规避源代泄漏的风险,与现有技术相比,本发明提供了一种基于AST评估源码泄漏风险的方法,该方法首先获取待保护源码的AST信息,然后基于AST信息在目标路径中获取雷同源码,其中,目标路径包括以下至少之一:Git仓库和搜索引擎,接下来,将雷同源码进行源码转换,得到对应的雷同AST信息,最后,基于待保护源码的AST信息和雷同AST信息确定待保护源码的泄露风险值。该方法能够基于AST对目标路径上的源码进行实时监测分析,并对源码泄漏风险进行评估,实现了快速、及时、准确的发现源码泄漏情况,及时提醒企业做出应急处理措施,从而缓解了现有技术中保护源码的方法存在的安全性差的技术问题。
上文中已经对基于AST评估源码泄漏风险的方法进行了简单的介绍,下面对如何基于AST信息在目标路径中获取雷同源码的过程进行详细的描述。
在一个可选的实施方式中,上述步骤S12,基于AST信息在目标路径中获取雷同源码,具体包括如下步骤:
步骤S121,从待保护源码的AST信息中提取待保护源码的特征信息。
步骤S122,基于特征信息获取目标路径中的雷同源码。
具体的,在获取到待保护源码的AST信息后,为了能够更加精准的查询到目标路径中的雷同源码,在一些实施例中,可以利用第一正则表达式从待保护源码的AST信息中提取出待保护源码的特征信息,然后再根据上述特征信息获取目标路径中的雷同源码,在本发明实施例中,待保护源码的特征信息包括以下至少之一:源码配置信息、package信息(包名)和project信息(项目名),在目标路径中查询雷同源码时所使用的特征信息越多,查询到的雷同源码相似度就会越高。
在一个可选的实施方式中,若目标路径为Git仓库,则步骤S122,基于特征信息获取目标路径中的雷同源码,具体包括以下步骤:
步骤S21,获取Git仓库的API接口。
步骤S22,通过API接口查询Git仓库中与特征信息相匹配的目标仓库;并在目标仓库中提取雷同源码。
具体的,若目标路径为Git仓库,Github、Gitlab、Gitee等官方都提供了对应的API(Application Programming Interface,应用程序接口),通过调用API就可以查询到上述Git仓库中的哪些仓库是与待保护源码的特征信息相匹配的目标仓库,然后再从目标仓库中提取出雷同源码。在一些实施例中,为了将待保护源码与雷同源码进行比较,可以将待保护源码与雷同源码下载到预设的对比分析空间,Git仓库中的雷同源码可以通过git clone命令将其同步到上述对比分析工作空间。
在一个可选的实施方式中,若目标路径为搜索引擎,则步骤S122,基于特征信息获取目标路径中的雷同源码,具体包括以下步骤:
步骤S31,利用网络爬虫在搜索引擎中查询与特征信息匹配的html页面。
步骤S32,判断html页面中是否存在雷同源码的下载路径。
若存在,则执行步骤S33。
步骤S33,按照下载路径下载雷同源码。
具体的,若目标路径为搜索引擎,则需要利用网络爬虫在搜索引擎中查询与特征信息匹配的html(HyperText Markup Language,超级文本标记语言)页面,通过搜索引擎返回的匹配结果,分析html页面中的节点信息,在一些实施例中,可以利用第二正则表达式判断html页面中是否存在雷同源码的下载路径,如果确定存在雷同源码的下载路径,则需要按照上述下载路径下载雷同源码,在一些实施例中,可以通过wget和curl(CommandLineUniform Resource Locator)或者人工下载到对比分析工作空间,wget是一个从网络上自动下载文件的自由工具,支持通过HTTP(Hyper Text Transfer Protocol,超文本传输协议)、HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer,超文本传输安全协议)、FTP(File Transfer Protocol,文件传输协议)三个最常见的TCP/IP协议下载,并可以使用HTTP代理;curl是一个利用URL语法在命令行下工作的文件传输工具,支持文件上传和下载,是综合传输工具。
上文中已经对如何获取雷同源码的过程进行了详细的介绍,下面对如何确定待保护源码的泄漏风险值进行具体的描述。
在一个可选的实施方式中,如图2所示,上述步骤S14,基于待保护源码的AST信息和雷同AST信息确定待保护源码的泄露风险值,具体包括如下步骤:
步骤S141,对待保护源码的AST信息进行过滤,得到待保护函数节点序列,并对雷同AST信息进行过滤,得到雷同函数节点序列。
在获取到待保护源码的AST信息以及雷同源码的AST信息之后,就可以确定出相较于上述雷同源码,待保护源码的泄露风险值,为了比较客观的评价泄漏风险,本发明实施例中设置了几个评价维度,以使风险评估更有依据,所以将一些AST中的无关节点进行过滤(例如编译类型的节点、注释类型的节点等),仅保留函数节点中的声明变量子节点、赋值运算子节点和函数输出子节点,进而得到待保护函数节点序列和雷同函数节点序列。
步骤S142,在雷同函数节点序列中为待保护函数节点序列中的每个待保护函数节点选择目标函数节点。
步骤S143,计算所有待保护函数节点与对应的目标函数节点相似度的平均值,并将平均值作为待保护源码的泄露风险值。
进一步的,在对待保护源码的泄露风险值进行计算时,首先在雷同函数节点序列中为待保护函数节点序列中的每个待保护函数节点选择目标函数节点,其中,目标函数节点与待保护函数节点具有最大相似度,然后计算所有待保护函数节点与对应的目标函数节点的相似度的平均值,并将上述平均值作为待保护源码的泄露风险值。
为了便于理解,下面举例说明,如图3所示,假设待保护函数节点序列中包括5个待保护函数节点,分别为A1,A2,A3,A4,A5;雷同函数节点序列1中包括6个雷同函数节点,分别为B1,B2,B3,B4,B5,B6,雷同函数节点序列中与待保护函数节点A1具有最大相似度的雷同函数节点是B2,雷同函数节点序列中与待保护函数节点A2具有最大相似度的雷同函数节点是B4,雷同函数节点序列中与待保护函数节点A3具有最大相似度的雷同函数节点是B4,雷同函数节点序列中与待保护函数节点A4具有最大相似度的雷同函数节点是B1,雷同函数节点序列中与待保护函数节点A5具有最大相似度的雷同函数节点是B6,且上述最大相似度依次为60%,70%,100%,90%,30%,那么相较于该雷同源码,待保护源码的泄露风险值为
假设待保护函数节点序列中包括5个待保护函数节点,分别为A1,A2,A3,A4,A5;雷同函数节点序列2中包括4个雷同函数节点,分别为C1,C2,C3,C4,雷同函数节点序列中与待保护函数节点A1具有最大相似度的雷同函数节点是C1,雷同函数节点序列中与待保护函数节点A2具有最大相似度的雷同函数节点是C2,雷同函数节点序列中与待保护函数节点A3具有最大相似度的雷同函数节点是C4,雷同函数节点序列中与待保护函数节点A4具有最大相似度的雷同函数节点是C3,雷同函数节点序列中的每个雷同函数节点与待保护函数节点A5的相似度均是0%,上述最大相似度依次为50%,20%,10%,100%,0%,那么相较于该雷同源码,待保护源码的泄露风险值为
上文中已经对如何计算待保护源码的泄露风险值进行了详细的描述,下面对如何为每个待保护函数节点选择目标函数节点的过程进行详细介绍。
在一个可选的实施方式中,上述步骤S142,在雷同函数节点序列中为待保护函数节点序列中的每个待保护函数节点选择目标函数节点,包括:
步骤S41,计算每个待保护函数节点的子节点与雷同函数节点序列中所有子节点的相似度。
步骤S42,基于算式计算每个待保护函数节点与每个雷同函数节点的相似度。
具体的,首先可以利用GST算法计算每个待保护函数节点的子节点与雷同函数节点序列中所有子节点的相似度,其中,每个待保护函数节点包括:声明变量子节点、赋值运算子节点和函数输出子节点。然后再利用算式计算每个待保护函数节点与每个雷同函数节点的相似度。
Sij表示第i个待保护函数节点与第j个雷同函数节点的相似度,i取值1至I,I表示待保护函数节点的数量,j取值1至J,J表示雷同函数节点的数量,Xi表示第i个待保护函数节点中声明变量子节点的数量,Yi表示第i个待保护函数节点中赋值运算子节点的数量,Zi表示第i个待保护函数节点中函数输出子节点的数量,pij表示第j个雷同函数节点中与第i个待保护函数节点的声明变量子节点相似度为100%的子节点数量,mij表示第j个雷同函数节点中与第i个待保护函数节点的赋值运算子节点相似度为100%的子节点数量,nij表示第j个雷同函数节点中与第i个待保护函数节点的函数输出子节点相似度为100%的子节点的数量。
为了便于理解,下面举例说明,参考图4,假设待保护函数节点序列中第1个待保护函数节点A1的声明变量子节点的数量为5个、赋值运算子节点的数量为3个、函数输出子节点的数量为6个;雷同函数节点序列中第1个雷同函数节点B1的声明变量子节点的数量为7个、赋值运算子节点的数量为6个、函数输出子节点的数量为6个;第2个雷同函数节点B2的声明变量子节点的数量为5个、赋值运算子节点的数量为4个、函数输出子节点的数量为3个。
利用GST算法可以确定第1个雷同函数节点中:与第1个待保护函数节点的声明变量子节点相似度为100%的子节点数量为5个,与第1个待保护函数节点的赋值运算子节点相似度为100%的子节点数量为3个,与第1个待保护函数节点的函数输出子节点相似度为100%的子节点的数量为6个,那么利用算式即可得到第1个待保护函数节点与第1个雷同函数节点的相似度/>
第2个雷同函数节点中:与第1个待保护函数节点的声明变量子节点相似度为100%的子节点数量为3个,与第1个待保护函数节点的赋值运算子节点相似度为100%的子节点数量为3个,与第1个待保护函数节点的函数输出子节点相似度为100%的子节点的数量为1个,那么利用算式即可得到第1个待保护函数节点与第1个雷同函数节点的相似度/>
以此类推,分别计算S11,S12,…S1J、S21,S22,…S2J……SI1,SI2,…SIJ,具体计算方式请参考以上方法,此处不再赘述。
步骤S43,将第k个雷同函数节点作为第i个待保护函数节点的目标函数节点,其中,Sik=max(Sij)。
进一步的,上述步骤中已经计算出了每个待保护函数节点与每个雷同函数节点的相似度,那么对于第i个待保护函数节点,得到了相似度计算结果Sij={Si1,Si2,…SiJ},本发明实施例将其中的最大相似度对应的雷同函数节点作为第i个待保护函数节点的目标函数节点。
假设第1个待保护函数节点与所有雷同函数节点(5个)的相似度依次为100%,10%,20%,50%,80%,那么就将第1个雷同函数节点作为第1个待保护函数节点的目标函数节点。
综上所述,本发明实施例提供的基于AST评估源码泄漏风险的方法能够快速、及时、准确的发现源码泄漏情况,一旦发现源码泄漏,可以及时提醒企业做出应急处理措施,有效缓解了现有技术中保护源码的方法存在的安全性差的技术问题。
实施例二
本发明实施例还提供了一种基于AST评估源码泄漏风险的装置,该基于AST评估源码泄漏风险的装置主要用于执行上述实施例一所提供的基于AST评估源码泄漏风险的方法,以下对本发明实施例提供的基于AST评估源码泄漏风险的装置做具体介绍。
图5是本发明实施例提供的一种基于AST评估源码泄漏风险的装置的功能模块图,如图5所示,该装置主要包括:第一获取模块100,第二获取模块200;转换模块300,确定模块400,其中:
第一获取模块100,用于获取待保护源码的AST信息。
第二获取模块200,用于基于AST信息在目标路径中获取雷同源码,其中,目标路径包括以下至少之一:Git仓库、搜索引擎。
转换模块300,用于将雷同源码进行源码转换,得到对应的雷同AST信息。
确定模块400,用于基于待保护源码的AST信息和雷同AST信息确定待保护源码的泄露风险值。
现有技术中多采用对源码进行加密的方式进行源码保护,但是如果加密方式外泄或者被黑客攻击,仍然无法规避源代泄漏的风险,与现有技术相比,本发明提供了一种基于AST评估源码泄漏风险的装置,该装置首先获取待保护源码的AST信息,然后基于AST信息在目标路径中获取雷同源码,其中,目标路径包括以下至少之一:Git仓库和搜索引擎,接下来,将雷同源码进行源码转换,得到对应的雷同AST信息,最后,基于待保护源码的AST信息和雷同AST信息确定待保护源码的泄露风险值。该装置能够基于AST对目标路径上的源码进行实时监测分析,并对源码泄漏风险进行评估,实现了快速、及时、准确的发现源码泄漏情况,及时提醒企业做出应急处理措施,从而缓解了现有技术中保护源码的方法存在的安全性差的技术问题。
可选的,第二获取模块200包括:
提取单元,用于从待保护源码的AST信息中提取待保护源码的特征信息。
获取单元,用于基于特征信息获取目标路径中的雷同源码。
可选的,若目标路径为Git仓库,则获取单元具体用于:
获取Git仓库的API接口。
通过API接口查询Git仓库中与特征信息相匹配的目标仓库;并在目标仓库中提取雷同源码。
可选的,若目标路径为搜索引擎,则获取单元具体用于:
利用网络爬虫在搜索引擎中查询与特征信息匹配的html页面。
判断html页面中是否存在雷同源码的下载路径。
若存在,则按照下载路径下载雷同源码。
可选的,确定模块400包括:
过滤单元,用于对待保护源码的AST信息进行过滤,得到待保护函数节点序列,并对雷同AST信息进行过滤,得到雷同函数节点序列。
选择单元,用于在雷同函数节点序列中为待保护函数节点序列中的每个待保护函数节点选择目标函数节点,其中,目标函数节点与待保护函数节点具有最大相似度。
计算单元,用于计算所有待保护函数节点与对应的目标函数节点相似度的平均值,并将平均值作为待保护源码的泄露风险值。
可选的,选择单元具体用于:
计算每个待保护函数节点的子节点与雷同函数节点序列中所有子节点的相似度,其中,每个待保护函数节点包括:声明变量子节点、赋值运算子节点和函数输出子节点。
基于算式计算每个待保护函数节点与每个雷同函数节点的相似度,其中,Sij表示第i个待保护函数节点与第j个雷同函数节点的相似度,i取值1至I,I表示待保护函数节点的数量,j取值1至J,J表示雷同函数节点的数量,Xi表示第i个待保护函数节点中声明变量子节点的数量,Yi表示第i个待保护函数节点中赋值运算子节点的数量,Zi表示第i个待保护函数节点中函数输出子节点的数量,pij表示第j个雷同函数节点中与第i个待保护函数节点的声明变量子节点相似度为100%的子节点数量,mij表示第j个雷同函数节点中与第i个待保护函数节点的赋值运算子节点相似度为100%的子节点数量,nij表示第j个雷同函数节点中与第i个待保护函数节点的函数输出子节点相似度为100%的子节点的数量。
将第k个雷同函数节点作为第i个待保护函数节点的目标函数节点,其中,Sik=max(Sij)。
实施例三
参见图6,本发明实施例提供了一种电子设备,该电子设备包括:处理器60,存储器61,总线62和通信接口63,所述处理器60、通信接口63和存储器61通过总线62连接;处理器60用于执行存储器61中存储的可执行模块,例如计算机程序。
其中,存储器61可能包含高速随机存取存储器(RAM,RandomAccessMemory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口63(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线62可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器61用于存储程序,所述处理器60在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器60中,或者由处理器60实现。
处理器60可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器60中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器60可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器61,处理器60读取存储器61中的信息,结合其硬件完成上述方法的步骤。
本发明实施例所提供的一种基于AST评估源码泄漏风险的方法、装置和电子设备的计算机程序产品,包括存储了处理器可执行的非易失的程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
此外,术语“水平”、“竖直”、“悬垂”等术语并不表示要求部件绝对水平或悬垂,而是可以稍微倾斜。如“水平”仅仅是指其方向相对“竖直”而言更加水平,并不是表示该结构一定要完全水平,而是可以稍微倾斜。
在本发明的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (8)

1.一种基于AST评估源码泄漏风险的方法,其特征在于,包括:
获取待保护源码的AST信息;
基于所述AST信息在目标路径中获取雷同源码,其中,所述目标路径包括以下至少之一:Git仓库、搜索引擎;
将所述雷同源码进行源码转换,得到对应的雷同AST信息;
基于所述待保护源码的AST信息和所述雷同AST信息确定待保护源码的泄露风险值;
其中,基于所述待保护源码的AST信息和所述雷同AST信息确定待保护源码的泄露风险值,包括:
对所述待保护源码的AST信息进行过滤,得到待保护函数节点序列,并对所述雷同AST信息进行过滤,得到雷同函数节点序列;
在所述雷同函数节点序列中为所述待保护函数节点序列中的每个待保护函数节点选择目标函数节点,其中,所述目标函数节点与所述待保护函数节点具有最大相似度;
计算所有待保护函数节点与对应的目标函数节点相似度的平均值,并将所述平均值作为所述待保护源码的泄露风险值;
其中,在所述雷同函数节点序列中为所述待保护函数节点序列中的每个待保护函数节点选择目标函数节点,包括:
计算所述每个待保护函数节点的子节点与所述雷同函数节点序列中所有子节点的相似度,其中,每个待保护函数节点包括:声明变量子节点、赋值运算子节点和函数输出子节点;
基于算式计算所述每个待保护函数节点与每个雷同函数节点的相似度,其中,Sij表示第i个待保护函数节点与第j个雷同函数节点的相似度,i取值1至I,I表示待保护函数节点的数量,j取值1至J,J表示雷同函数节点的数量,Xi表示第i个待保护函数节点中声明变量子节点的数量,Yi表示所述第i个待保护函数节点中赋值运算子节点的数量,Zi表示所述第i个待保护函数节点中函数输出子节点的数量,pij表示第j个雷同函数节点中与第i个待保护函数节点的声明变量子节点相似度为100%的子节点数量,mij表示第j个雷同函数节点中与第i个待保护函数节点的赋值运算子节点相似度为100%的子节点数量,nij表示第j个雷同函数节点中与第i个待保护函数节点的函数输出子节点相似度为100%的子节点的数量;
将第k个雷同函数节点作为所述第i个待保护函数节点的目标函数节点,其中,Sik=max(Sij)。
2.根据权利要求1所述的方法,其特征在于,基于所述AST信息在目标路径中获取雷同源码,包括:
从所述待保护源码的AST信息中提取待保护源码的特征信息;
基于所述特征信息获取所述目标路径中的雷同源码。
3.根据权利要求2所述的方法,其特征在于,若所述目标路径为Git仓库,则基于所述特征信息获取所述目标路径中的雷同源码,包括:
获取所述Git仓库的API接口;
通过所述API接口查询所述Git仓库中与所述特征信息相匹配的目标仓库;并在所述目标仓库中提取所述雷同源码。
4.根据权利要求2所述的方法,其特征在于,若所述目标路径为搜索引擎,则基于所述特征信息获取所述目标路径中的雷同源码,包括:
利用网络爬虫在所述搜索引擎中查询与所述特征信息匹配的html页面;
判断所述html页面中是否存在所述雷同源码的下载路径;
若存在,则按照所述下载路径下载所述雷同源码。
5.一种基于AST评估源码泄漏风险的装置,其特征在于,包括:
第一获取模块,用于获取待保护源码的AST信息;
第二获取模块,用于基于所述AST信息在目标路径中获取雷同源码,其中,所述目标路径包括以下至少之一:Git仓库、搜索引擎;
转换模块,用于将所述雷同源码进行源码转换,得到对应的雷同AST信息;
确定模块,用于基于所述待保护源码的AST信息和所述雷同AST信息确定待保护源码的泄露风险值;
其中,所述确定模块包括:
过滤单元,用于对所述待保护源码的AST信息进行过滤,得到待保护函数节点序列,并对所述雷同AST信息进行过滤,得到雷同函数节点序列;
选择单元,用于在所述雷同函数节点序列中为所述待保护函数节点序列中的每个待保护函数节点选择目标函数节点,其中,所述目标函数节点与所述待保护函数节点具有最大相似度;
计算单元,用于计算所有待保护函数节点与对应的目标函数节点相似度的平均值,并将所述平均值作为所述待保护源码的泄露风险值;
其中,所述选择单元具体用于:
计算所述每个待保护函数节点的子节点与所述雷同函数节点序列中所有子节点的相似度,其中,每个待保护函数节点包括:声明变量子节点、赋值运算子节点和函数输出子节点;
基于算式计算所述每个待保护函数节点与每个雷同函数节点的相似度,其中,Sij表示第i个待保护函数节点与第j个雷同函数节点的相似度,i取值1至I,I表示待保护函数节点的数量,j取值1至J,J表示雷同函数节点的数量,Xi表示第i个待保护函数节点中声明变量子节点的数量,Yi表示所述第i个待保护函数节点中赋值运算子节点的数量,Zi表示所述第i个待保护函数节点中函数输出子节点的数量,pij表示第j个雷同函数节点中与第i个待保护函数节点的声明变量子节点相似度为100%的子节点数量,mij表示第j个雷同函数节点中与第i个待保护函数节点的赋值运算子节点相似度为100%的子节点数量,nij表示第j个雷同函数节点中与第i个待保护函数节点的函数输出子节点相似度为100%的子节点的数量;
将第k个雷同函数节点作为所述第i个待保护函数节点的目标函数节点,其中,Sik=max(Sij)。
6.根据权利要求5所述的装置,其特征在于,所述第二获取模块包括:
提取单元,用于从所述待保护源码的AST信息中提取待保护源码的特征信息;
获取单元,用于基于所述特征信息获取所述目标路径中的雷同源码。
7.一种电子设备,包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至4中任一项所述的方法的步骤。
8.一种具有处理器可执行的非易失的程序代码的计算机可读介质,其特征在于,所述程序代码使所述处理器执行权利要求1至4中任一项所述的方法。
CN201911130983.XA 2019-11-18 2019-11-18 一种基于ast评估源码泄漏风险的方法、装置和电子设备 Active CN110851367B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911130983.XA CN110851367B (zh) 2019-11-18 2019-11-18 一种基于ast评估源码泄漏风险的方法、装置和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911130983.XA CN110851367B (zh) 2019-11-18 2019-11-18 一种基于ast评估源码泄漏风险的方法、装置和电子设备

Publications (2)

Publication Number Publication Date
CN110851367A CN110851367A (zh) 2020-02-28
CN110851367B true CN110851367B (zh) 2023-09-01

Family

ID=69602233

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911130983.XA Active CN110851367B (zh) 2019-11-18 2019-11-18 一种基于ast评估源码泄漏风险的方法、装置和电子设备

Country Status (1)

Country Link
CN (1) CN110851367B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111414632B (zh) * 2020-03-12 2022-04-19 西安电子科技大学 基于ast自合成的嵌入式程序数据流安全验证方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013186647A (ja) * 2012-03-07 2013-09-19 Yokohama National Univ 難読化装置、難読化方法、及び難読化プログラム、並びに難読化されたソースコード
KR101427412B1 (ko) * 2014-04-17 2014-08-08 (주)지란지교소프트 데이터 유출 방지를 위한 악성 코드 탐색 방법 및 장치
CN106453386A (zh) * 2016-11-09 2017-02-22 深圳市魔方安全科技有限公司 基于分布式技术的自动化互联网资产监控和风险检测方法
CN109361713A (zh) * 2018-12-17 2019-02-19 深信服科技股份有限公司 互联网风险监控方法、装置、设备及存储介质
CN110175128A (zh) * 2019-05-29 2019-08-27 北京百度网讯科技有限公司 一种相似代码案例获取方法、装置、设备和存储介质
CN110362968A (zh) * 2019-07-16 2019-10-22 腾讯科技(深圳)有限公司 信息检测方法、装置及服务器

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8141045B2 (en) * 2007-12-14 2012-03-20 International Business Machines Corporation Automatically identifying the source of copied software
US8732455B2 (en) * 2008-07-25 2014-05-20 Infotect Security Pte Ltd Method and system for securing against leakage of source code
KR101694783B1 (ko) * 2014-11-28 2017-01-10 주식회사 파수닷컴 소스 코드의 오류 검출에 있어서 경보 유형 분류 방법, 이를 위한 컴퓨터 프로그램, 그 기록매체
US10255443B2 (en) * 2016-02-11 2019-04-09 Line Corporation Method, apparatus, system and non-transitory computer readable medium for code protection
US10491622B2 (en) * 2017-01-04 2019-11-26 Synack, Inc. Automatic webpage change detection

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013186647A (ja) * 2012-03-07 2013-09-19 Yokohama National Univ 難読化装置、難読化方法、及び難読化プログラム、並びに難読化されたソースコード
KR101427412B1 (ko) * 2014-04-17 2014-08-08 (주)지란지교소프트 데이터 유출 방지를 위한 악성 코드 탐색 방법 및 장치
CN106453386A (zh) * 2016-11-09 2017-02-22 深圳市魔方安全科技有限公司 基于分布式技术的自动化互联网资产监控和风险检测方法
CN109361713A (zh) * 2018-12-17 2019-02-19 深信服科技股份有限公司 互联网风险监控方法、装置、设备及存储介质
CN110175128A (zh) * 2019-05-29 2019-08-27 北京百度网讯科技有限公司 一种相似代码案例获取方法、装置、设备和存储介质
CN110362968A (zh) * 2019-07-16 2019-10-22 腾讯科技(深圳)有限公司 信息检测方法、装置及服务器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
寨亮 ; 张刚 ; 赵逢禹 ; .基于本地代理和索引信息的代码侵权检测方法.软件导刊.2017,(06),全文. *

Also Published As

Publication number Publication date
CN110851367A (zh) 2020-02-28

Similar Documents

Publication Publication Date Title
US10958672B2 (en) Cognitive offense analysis using contextual data and knowledge graphs
US11194905B2 (en) Affectedness scoring engine for cyber threat intelligence services
US10313365B2 (en) Cognitive offense analysis using enriched graphs
Costin et al. A {Large-scale} analysis of the security of embedded firmwares
US20170034203A1 (en) Method and apparatus for detecting website security
US11057289B2 (en) Mobile application identification in network traffic via a search engine approach
JP2021500658A (ja) インタラクティブ・ワークフローを実行するコンピュータ実施方法、システム、およびコンピュータ・プログラム製品、ならびにコンピュータ・プログラム
US20190190945A1 (en) Corroborating threat assertions by consolidating security and threat intelligence with kinetics data
CN103714119B (zh) 一种浏览器数据的处理方法和装置
WO2012135519A1 (en) Determining machine behavior
CN111447215A (zh) 数据检测方法、装置和存储介质
CN110474900B (zh) 一种游戏协议测试方法及装置
US20150161390A1 (en) Fast and accurate identification of message-based api calls in application binaries
CN109951469B (zh) 一种创建域名黑白名单的方法、装置、存储介质和服务器
CN112511561A (zh) 网络攻击路径确定方法、设备、存储介质及装置
US20170220396A1 (en) Fast and accurate identification of message-based api calls in application binaries
CN107623693B (zh) 域名解析防护方法及装置、系统、计算设备、存储介质
Kumar et al. A study of software reliability on big data open source software
CN110851367B (zh) 一种基于ast评估源码泄漏风险的方法、装置和电子设备
CN115168847A (zh) 应用补丁生成方法、装置、计算机设备及可读存储介质
US20240054210A1 (en) Cyber threat information processing apparatus, cyber threat information processing method, and storage medium storing cyber threat information processing program
RU2724800C1 (ru) Система и способ обнаружения источника вредоносной активности на компьютерной системе
Michalas et al. MemTri: A memory forensics triage tool using bayesian network and volatility
EP4170534A1 (en) System and method for enabling differential privacy techniques
CN109246069B (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
CB02 Change of applicant information

Address after: 5 / F, building 1, 188 Lianhui street, Xixing street, Binjiang District, Hangzhou, Zhejiang 310000

Applicant after: Hangzhou Anheng Information Security Technology Co.,Ltd.

Address before: 5 / F, building 1, 188 Lianhui street, Xixing street, Binjiang District, Hangzhou, Zhejiang 310000

Applicant before: Zhejiang jundun Information Technology Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant