CN111767547B - 一种基于复杂网络社团的软件漏洞检测方法 - Google Patents
一种基于复杂网络社团的软件漏洞检测方法 Download PDFInfo
- Publication number
- CN111767547B CN111767547B CN202010585822.6A CN202010585822A CN111767547B CN 111767547 B CN111767547 B CN 111767547B CN 202010585822 A CN202010585822 A CN 202010585822A CN 111767547 B CN111767547 B CN 111767547B
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- neighbor
- communities
- community
- 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
Links
Images
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/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
- 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/562—Static detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种基于复杂网络社团的软件漏洞检测方法,首先将软件***抽象为复杂网络图,再对复杂网络图进行预处理得到重构网络图,然后采用社团划分算法,将重构网络图转换为若干个社团,既保存了各个社团中的中心节点构成的中心节点集,又保存了整个复杂网络图中的社团集;同时,由于中心节点的重要程度可以衡量一个社团在整个复杂网络图中的重要程度,因此,本发明基于nRank节点排序算法,对中心节点集进行排序,从而实现对整个复杂网络图中的若干个社团进行排序;最后,本发明将得到的按序排列的社团与预处理后的重构网络图进行图匹配,从而找到软件***中可能潜在的漏洞,有效地提高算法准确度和时效。
Description
技术领域
本发明属于计算机技术领域,尤其涉及一种基于复杂网络社团的软件漏洞检测方法。
背景技术
随着互联网的快速发展,人们对计算机的使用频率越来越高,软件***的规模也越来越大,软件***内潜在的漏洞数量也越来越多,这些漏洞可能会影响软件***的功能和性能。在一般情况下,计算机出现漏洞的情况是比较少的,但是一旦出现并被人利用,就可以造成严重的危害,轻则经济损失,重则危及生命安全。自计算机诞生起至今,已知漏洞数量已经不计其数,还有许多未知漏洞未被发现。而软件漏洞是不可避免的,因为在软件的开发过程中,就会伴随着软件漏洞的产生,但一般在实际使用的过程中,往往很难出现相关问题,主要是因为在整体的工作过程中,往往存在着保护体系,可以阻止人们利用部分漏洞,且实际使用过程中,人们也很少会对漏洞进行利用。但是在软件的多次版本升级过程中,可能会因为研究人员在软件设计的过程中所引起的缺陷导致软件漏洞的产生。而在当下,研究人员的设计水平良莠不齐,这就会带来一定的软件漏洞风险,应当加以重视。
一般来说,计算机软件在开发过程中就可能会存在漏洞,随着开发阶段的推进,开发的代码量会越来越多,与此同时,软件漏洞的数量也会越来越多。一般而言,开发人员都是边开发边修复已发现的漏洞,以防止前期已发现漏洞给后期开发工作带来进一步的影响。目前,可用于计算机软件安全漏洞检测的技术较多,大体上分为两类,一类是动态检测技术,主要包括:非执行栈、内部映射、沙箱、程序解释和安全共享库;另一类是静态检测技术,主要包括:程序译注、类型推断、约束解释器、元编译和词法检测。其中,静态检测技术主要是从语法或语义层面来分析程序源代码,从而实现软件漏洞的检测。动态检测技术主要是获取并分析可执行代码在运行过程中所产生的动态信息,从而实现软件漏洞的检测;而静态检测技术,在对源代码的预处理上有着良好的优势,目前,研究人员们基于图对软件漏洞检测取得了很大的工作。传统的可提供静态分析使用的图包括UML图、构件连接件图、控制流图以及数据流图等。针对复杂网络图,由于其具有高复杂性,所以不论是静态检测方法还是动态检测方法,对于复杂网络图的研究,都可分为局部挖掘和全局挖掘,局部挖掘可以保证时效快,性能更好,但会忽略局部边缘的节点关系;全局挖掘可以保证整个复杂网络图研究的完整性,但时效太慢,运行效率太低。
发明内容
为解决上述问题,本发明提供一种基于复杂网络社团的软件漏洞检测方法,结合社团划分算法和nRank节点排序算法,将对复杂网络图中漏洞检测的问题转换为对整个复杂网络图内社团中漏洞检测的问题,能够有效地提高算法准确度和时效。
一种基于复杂网络社团的软件漏洞检测方法,包括以下步骤:
S1:将软件***抽象为复杂网络图;
S2:对所述复杂网络图进行预处理,得到重构网络图,其中,所述预处理为:判断复杂网络图中任意两个节点之间是否存在两条以上的连接边,若存在,则随机保留一条连接边,打断剩余的连接边,并在断边形成的两个断点处添加一个节点;
S3:获取重构网络图中各节点的平均中心性,然后选取平均中心性至少排在前15%的节点作为候选节点,得到候选节点集;
S4:判断候选节点集中互为邻居的两个候选节点之间的相似度是否大于设定值,若大于,则剔除平均中心性较小的节点,并将平均中心性较大的节点作为中心节点,得到中心节点集,其中,每个候选节点只进行一次判断;
S5:分别将各中心节点作为当前中心节点执行社团划分操作,得到各中心节点对应的备选社团,其中,所述社团划分操作为:
S51:获取当前中心节点各邻居节点的局部模块优度增量ΔLC;
S52:依次判断各邻居节点的局部模块优度增量ΔLC是否大于设定阈值,若大于,则该邻居节点属于其对应的中心节点所在的备选社团;
S6:判断重构网络中是否存在未被划分到任何备选社团的节点或者同时被划分到多个备选社团的节点,其中,若存在未被划分到任何备选社团的节点,则将该节点划分到其局部模块优度增量ΔLC最大值所对应的中心节点所在的备选社团;若存在同时被划分到多个备选社团的节点,则将该节点划分到其局部模块优度增量ΔLC最大值所对应的中心节点所在的备选社团,同时将该节点从其他备选社团中删除,得到最终的社团;
S7:采用nRank排序算法获取各中心节点的排名值,然后按照排名值的高低将各社团进行排序;
S8:将各社团按序依次与重构网络图进行对比,判断是否存在与所述重构网络图的局部存在相似不同构关系的社团,若存在,则该社团对应的代码存在漏洞,并停止后续社团与重构网络图的对比,若不存在,则该重构网络图对应的软件***不存在漏洞。
进一步地,所述将软件***抽象为复杂网络图的方法为:
将软件***按照功能划分为两个以上的功能模块,然后将功能模块内的各行代码分别作为一个节点,各行代码之间存在的跳转关系作为一条连接边,从而将功能模块抽象为代数构件,其中,若两个功能模块之间为调用关系、包含关系或者嵌套关系,则在两个功能模块之间存在跳转关系的两行代码对应的节点之间设置一条连接边,从而将软件***抽象为复杂网络图。
进一步地,所述重构网络图中各节点的平均中心性的获取方法为:
其中,Ci表示第i个节点的平均中心性,i=1,2,...,N,其中,N为重构网络中所有的节点数量,j=1,2,3,wij表示第i个节点的第j个指标的权重,且指标包括度中心性、介数中心性以及接近中心性,rij表示第i个节点的第j个指标的经过归一化后的标准值。
进一步地,互为邻居的两个候选节点之间的相似度的计算方法为:
Sxy=|Vx∩Vy|/|Vx∪Vy|
其中,Sxy表示候选节点x与候选节点y之间的相似度,Vx表示候选节点x的所有邻居节点所构成的集合,Vy表示候选节点y的所有邻居节点所构成的集合,|Vx∩Vy|表示候选节点x和候选节点y共有邻居节点的数目,|Vx∪Vy|表示候选节点x的邻居节点数目与候选节点y的邻居节点数目的和值再减去两个候选节点共有邻居节点的数目。
进一步地,所述邻居节点的局部模块优度增量ΔLC的计算方法为:
ΔLC=Ein+E′in/E′out+Eout-Ein/Eout
其中,Ein为中心节点集的内部边的数量,内部边为两个均属于中心节点集的节点之间的连接边,E′in为该邻居节点加入中心节点集对应的网络后,中心节点集对应的网络所增加的内部边的数量,Eout为中心节点集的外部边的数量,外部边为两个不同时属于中心节点集的节点之间的连接边,E′out为该邻居节点加入中心节点集对应的网络后,中心节点集对应的网络所增加的外部边的数量。
进一步地,所述中心节点的排名值的计算方法为:
其中,Rk为第k个中心节点在nRank排序算法中的排名值,且k=1,2,...,K,K为中心节点的个数,LRk为第k个中心节点在LeaderRank算法中的排名值,Skl为第k个中心节点与其第l个邻居节点之间的相似度,且l=1,2,…,L,L为第k个中心节点的邻居节点的个数,LRl为第l个邻居节点在LeaderRank算法中的排名值,为第k个中心节点与其第l个邻居节点所指向的相同节点的数目。
进一步地,第k个中心节点与其第l个邻居节点之间的相似度Skl的计算方法为:
进一步地,中心节点与其邻居节点在LeaderRank算法中的排名值的计算方法为:分别将中心节点与其邻居节作为当前节点代入如下公式进行迭代,直到达到设定迭代次数或者相邻两次迭代得到的排名值之间的差值小于设定值,从而得到当前节点在LeaderRank算法中的排名值:
LRt(0)=1/N
LRt=LRt_w+LRg/N
其中,LRt(0)为当前节点t的初始排名值,N为重构网络中所有的节点数量,p表示迭代次数,p=1,2,...P,且P为设定迭代次数,LRt(p)为当前节点t第p次迭代时的排名值,LRi(p-1)为第p-1次迭代时重构网络中各节点i的排名值,ait为可调常数,其中,若节点i指向当前节点t,aqt的取值为节点i的出度,若节点i不指向当前节点t,ait的取值为零,LRt_w为迭代终止时的排名值,其中,若迭代达到设定迭代次数,则LRt_w的取值为LRt(P),若相邻两次迭代得到的排名值之间的差值小于设定值,则LRt_w的取值为LRt(p),LRg为迭代终止时引入的辅助节点在LeaderRank节点排序算法中的排名值,LRt为当前节点t在LeaderRank算法中最终得到的排名值。
有益效果:
本发明提供一种基于复杂网络社团的软件漏洞检测方法,首先将软件***抽象为复杂网络图,再对复杂网络图进行预处理得到重构网络图,然后采用社团划分算法,将重构网络图转换为若干个社团,既保存了各个社团中的中心节点构成的中心节点集,又保存了整个复杂网络图中的社团集;同时,由于中心节点的重要程度可以衡量一个社团在整个复杂网络图中的重要程度,因此,本发明基于nRank节点排序算法,对中心节点集进行排序,从而实现对整个复杂网络图中的若干个社团进行排序;最后,本发明将得到的按序排列的社团与预处理后的重构网络图进行图匹配,从而找到软件***中可能潜在的漏洞;由此可见,本发明针对复杂网络图数据集中的数据冗余问题,从社团的角度来检测漏洞,将社团划分算法、nRank节点排序算法与基于复杂网络社团的软件漏洞检测方法相结合,从而有效地提高算法准确度和时效。
附图说明
图1为本发明提供的基于复杂网络图社团的软件漏洞检测的方法的流程图;
图2为本发明提供的寻找中心节点集的算法流程;
图3为本发明提供的社团划分算法流程图;
图4为本发明提供的nRank节点排序算法的流程图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
目前,研究人员们已经提出了不少检测漏洞的方法,但软件漏洞检测理论仍然不够成熟,而且这些方法对于不断增长的软件***在复杂度的问题上并不能得以良好的解决,其运行的效率较低。针对这种情况,研究人员们提出了利用图论来解决软件***中潜在的漏洞的想法,将软件***抽象为复杂网络图,将在软件***中检测漏洞的问题转换为在复杂网络在检测漏洞的问题。基于复杂网络图,针对漏洞的检测主要有两种检测方法,分别是静态检测方法和动态检测方法。静态检测方法是从语法或语义层面来分析程序源代码,动态检测方法是获取并分析可执行代码在运行过程中所产生的动态信息。如图1所示,本发明基于静态检测方法和图挖掘技术,针对条件判断被忽略的漏洞,也即***调用某一方法时,未判断该方法内的参数是否有效,当该参数被攻击者利用时产生的漏洞,提出了一种基于复杂网络图社团的软件漏洞检测的方法,具体包括以下步骤:
S1:将软件***抽象为复杂网络图,具体为:
将软件***按照功能划分为两个以上的功能模块,然后将功能模块内的各行代码分别作为一个节点,各行代码之间存在的跳转关系作为一条连接边,从而将功能模块抽象为代数构件,其中,若两个功能模块之间为调用关系、包含关系或者嵌套关系,则在两个功能模块之间存在跳转关系的两行代码对应的节点之间设置一条连接边,从而将软件***抽象为复杂网络图。
需要说明的是,调用关系的定义为:如果构件PM1在运算过程中,需要通过构件PM2进行下一步运算,那么就说构件PM1与构件PM2之间存在调用关系;包含关系的定义为:如果构件PM1运算完成后,它的输出数据是构件PM2的输入数据,那么就说构件PM1与构件PM2之间存在包含关系;嵌套关系的定位:如果构件PM3在运算过程中,既需要构件PM1的运算结果,又需要构件PM2的运算结果,那么就说构件PM1与构件PM2之间存在嵌套关系。
S2:对所述复杂网络图进行预处理,得到重构网络图,其中,所述预处理为:判断复杂网络图中任意两个节点之间是否存在两条以上的连接边,若存在,则随机保留一条连接边,打断剩余的连接边,并在断边形成的两个断点处添加一个节点。
S3:获取重构网络图中各节点的平均中心性,然后选取平均中心性至少排在前15%的节点作为候选节点,得到候选节点集。
如图2所示,针对复杂网络图中是否存在潜在的漏洞这一问题,基于社团是复杂网络中的一种特性结构的思想,将复杂网络图中是否存在潜在的漏洞的问题转换为图中的若干个社团是否存在潜在的漏洞的问题。本专利提出了社团划分算法,可以将复杂网络图转化为若干个社团。主要分为两步,第一步,寻找中心节点集,第二步,基于局部优化思想,通过中心节点遍历划分社团。而对社团结构的研究,可以利用社团内的中心节点的重要程度来衡量一个社团在整个复杂网络图中的重要程度,这里引入了三个节点中心性评价指标——度中心性、介绍中心性、接近中心性,并提出了节点的平均中心性,来解决由于单一使用三个节点中心性评价指标带来的结果偏差。
因此,本发明将复杂网络图中的每一个节点的各个中心性指标作为该节点的权重,并将每一个节点都看作一个方案,得到重构网络图中各节点的平均中心性的获取方法如下:
其中,Ci表示第i个节点的平均中心性,i=1,2,...,N,其中,N为重构网络中所有的节点数量,j=1,2,3,wij表示第i个节点的第j个指标的权重,且指标包括度中心性、介数中心性以及接近中心性,rij表示第i个节点的第j个指标的经过归一化后的标准值。
S4:判断候选节点集中互为邻居的两个候选节点之间的相似度是否大于设定值,若大于,则剔除平均中心性较小的节点,并将平均中心性较大的节点作为中心节点,得到中心节点集,其中,每个候选节点只进行一次判断。
需要说明的是,对复杂网络中的任意一个节点而言,如果其任意一个相邻节点的度都比这个节点的度小或者相等,那么就称这个节点是中心节点;同时,在复杂网络中与中心节点有边连接的周围节点为邻居节点。
因此,基于社团的结构特性,本发明要寻找社团中的中心节点,就可以通过对节点之间的相似性进行计算,如果两个节点之间的相似度很高,那么说明这两个节点很大几率应该在同一个社团中,而不同社团间的中心节点是具有一定的间隔性的,所以一旦计算出两个节点之间的相似度很高,就将其中一个节点直接从原始集合中删掉;节点的相似度计算表达式如下:
Sxy=|Vx∩Vy|/|Vx∪Vy|
其中,Sxy表示候选节点x与候选节点y之间的相似度,Vx表示候选节点x的所有邻居节点所构成的集合,Vy表示候选节点y的所有邻居节点所构成的集合,如果集合Vy中的节点数量|Vy|等于1,也就意味着候选节点y仅有候选节点x这一个邻居节点,此时,定义相似度Sxy为1,如果|Vy|不等于1,也就意味着候选节点x只是候选节点y的邻居节点集中的一个邻居节点,则|Vx∩Vy|表示候选节点x和候选节点y共有邻居节点的数目,|Vx∪Vy|表示候选节点x的邻居节点数目与候选节点y的邻居节点数目的和值再减去两个候选节点共有邻居节点的数目,也即候选节点x的邻居节点数目减去候选节点x和候选节点y之间存在关系的边的数目。
由此可见,步骤S3和S4首先根据现有方法计算出节点的度中心性、介数中心性和接近中心性,再根据三大中心性评价指标,计算出节点的平均中心性,然后根据节点的平均中心性的大小进行排序,由于平均中心性越大,说明该节点在社团中越重要,所以,这里按照从大到小的顺序来排序。然后选取前15%的节点生成候选节点集合,每次都选择候选节点集合里不重复的两个节点,计算两个节点之间的相似度,如果两个节点间的相似度很大,就将两个节点中平均中心性较小的那个节点删掉,重复这个操作,直到候选节点集中不再存在可删除节点,并将这样的节点集作为社团的中心节点集合。
S5:分别将各中心节点作为当前中心节点执行社团划分操作,得到各中心节点对应的备选社团,其中,所述社团划分操作为:
S51:获取当前中心节点各邻居节点的局部模块优度增量ΔLC;
S52:依次判断各邻居节点的局部模块优度增量ΔLC是否大于设定阈值,若大于,则该邻居节点属于其对应的中心节点所在的备选社团。
由此可见,本发明获得的中心节点集作为输入数据,引入了节点的局部模块优度增量ΔLC这一衡量指标,其表达式如下所示:
ΔLC=Ein+E′in/E′out+Eout-Ein/Eout
其中,Ein为中心节点集的内部边的数量,内部边为两个均属于中心节点集的节点之间的连接边,E′in为该邻居节点加入中心节点集对应的网络后,中心节点集对应的网络所增加的内部边的数量,Eout为中心节点集的外部边的数量,外部边为两个不同时属于中心节点集的节点之间的连接边,换言之,E′out为该邻居节点加入中心节点集对应的网络后,中心节点集对应的网络所增加的外部边的数量。
具体的,本发明对社团中的每一个中心节点都采取基于局部优化的思想来进行社团划分,这里以某一个中心节点为例,来挖掘以该节点为中心节点的社团,算法流程图如图3所示。给定一个没有元素的集合,将得到的中心节点集中的任意一个中心节点取出,将其放入该集合中,使得该集合成为包含一个中心节点的备选社团,然后计算该中心节点的邻居节点集,具体做法是,计算该中心节点周围的各个邻居节点的ΔLC局部模块优度增量,如果一个邻居节点的ΔLC局部模块优度增量大于所设定的阈值,那么就将该邻居节点加入中心节点所在的备选社团中,如果该邻居节点的ΔLC局部模块优度增量小于所设定的阈值,那么就跳过该邻居节点,继续从该中心节点的邻居节点集中选取下一个邻居节点,直到没有比设定的阈值大的邻居节点存在为止。其中,为了避免邻居节点重复使用,这里给出两种方案,一种是每次在邻居节点集中随机取其中一个邻居节点,使用完该邻居节点后要对其进行标记;另一种是将邻居节点集直接进行排序,这里按节点序号id从小到大排序,然后按照顺序依次取邻居节点,来扩展中心节点所在的备选社团。
S6:判断重构网络中是否存在未被划分到任何备选社团的节点或者同时被划分到多个备选社团的节点,其中,若存在未被划分到任何备选社团的节点,则将该节点划分到其局部模块优度增量ΔLC最大值所对应的中心节点所在的备选社团;若存在同时被划分到多个备选社团的节点,则将该节点划分到其局部模块优度增量ΔLC最大值所对应的中心节点所在的备选社团,同时将该节点从其他备选社团中删除,得到最终的社团。
也就是说,针对中心节点集,不断重复步骤S5,直到中心节点集中最后一个中心节点也处理完毕,得到的若干个备选社团还不能直接作为最终社团,还需要对两类特殊节点进行处理,一类是未被划分到任何一个备选社团中的邻居节点,这类节点直接将其归纳到该节点的ΔLC值最大时对应中心节点所在的备选社团;另一类是被划分到两个或两个以上备选社团中的邻居节点,针对这一类节点,每次都将当前的ΔLC值与上一次保留的ΔLC值进行比较,如果当前的ΔLC值比上一次保留的ΔLC值大,就将当前的ΔLC值赋值给上一次保留的ΔLC值,并将该节点从之前对应的中心节点所在的备选社团中删除,加入到当前中心节点所在的备选社团中;反之,上一次保留的ΔLC值不变,邻居节点也不加入当前中心节点所在的备选社团中,继续往下执行,直到所有节点都在对应的中心节点所在的备选社团中,则将此时形成的若干个备选社团作为若干个最终的社团,并作为下一步的输入数据。
需要说明的是,各社团组成重构网络图的规则子图集,且子图同构的定义为:如果一个图M与图G的子图同构,则可称M为G的子图,该子图可以通过在图G的子图添加或删除边来获得。
S7:采用nRank排序算法获取各中心节点的排名值,然后按照排名值的高低将各社团进行排序。
一般情况下,对于整个复杂网络而言,漏洞如果出现在更重要的社团中,那么很大可能会更容易影响到这个复杂网络的功能以及性能;因此,针对复杂网络图中的若干个社团是否存在潜在的漏洞这一问题,需要对社团进行排序,根据社团内的中心节点的重要程度可以衡量这个社团在复杂网络中的重要性这一思想,本发明提出了nRank节点排序算法来对社团内的中心节点进行排序,这里引入了节点相似度这一指标,通过两个节点的相似度越大,来反映出节点对社团的影响程度越大,从而实现对社团的排名。
如图4所示,nRank节点排序算法的计算步骤如下:
S71:使用LeaderRank节点排序算法,求得中心节点与其邻居节点的LRt值,具体为:
分别将中心节点与其邻居节作为当前节点代入如下公式进行迭代,直到达到设定迭代次数或者相邻两次迭代得到的排名值之间的差值小于设定值,从而得到当前节点在LeaderRank算法中的排名值:
LRt(0)=1/N
LRt=LRt_w+LRg/N
其中,LRt(0)为当前节点t的初始排名值,N为重构网络中所有的节点数量,p表示迭代次数,p=1,2,...P,且P为设定迭代次数,LRt(p)为当前节点t第p次迭代时的排名值,LRi(p-1)为第p-1次迭代时重构网络中各节点i的排名值,ait为可调常数,其中,若节点i指向当前节点t,aqt的取值为节点i的出度,若节点i不指向当前节点t,ait的取值为零,LRt_w为迭代终止时的排名值,其中,若迭代达到设定迭代次数,则LRt_w的取值为LRt(P),若相邻两次迭代得到的排名值之间的差值小于设定值,则LRt_w的取值为LRt(p),LRg为迭代终止时引入的辅助节点在LeaderRank节点排序算法中的排名值,LRt为当前节点t在LeaderRank算法中最终得到的排名值。
需要说明的是,辅助节点是在LeaderRank算法中,为了解决了PageRank算法中节点排序和概率跳转的问题而引入的。
S72:引入了节点的相似度这一概念,用来描述nRank节点排序算法的核心思想,通过相似度这一概念,来衡量节点在复杂网络中的重要程度。注意,这里计算节点对之间的相似度时,不包括所研究的两个节点本身。相似度的计算表示式如下:
S73:通过步骤S72,可以将两个节点的任何一个共同的连接节点对其影响的相似度计算出来,这里,将所有的节点对的相似度进行一次处理,求得所有中心节点的排名值,其计算表达式如下:
其中,Rk为第k个中心节点在nRank排序算法中的排名值,且k=1,2,...,K,K为中心节点的个数,LRk为第k个中心节点在LeaderRank算法中的排名值,Skl为第k个中心节点与其第l个邻居节点之间的相似度,且l=1,2,…,L,L为第k个中心节点的邻居节点的个数,LRl为第l个邻居节点在LeaderRank算法中的排名值。
S74:一直重复以上步骤,直到重构网络图中所有节点都计算出节点对的相似度以及中心节点的排名值Rk为止,然后根据中心节点的排名值Rk的大小来对社团进行排序。
由此可见,本发明将得到的整个复杂网络中的社团集合和各个社团内的中心节点集合作为输入数据,按照nRank节点排序算法的四个步骤去计算,首先根据LeadRank节点排序算法,计算出每个中心节点的LRt值,再去计算中心节点对间的相似度,由于不同社团中的节点几乎不存在共同连接节点,所以,这里需要进行处理,如果两个节点所在的社团存在共同的连接邻居社团,其中,若存在一个社团内的某个节点与另一个社团内的某个节点互为邻居节点,则这两个社团互为邻居社团,那么,就将这个邻居社团的中心节点作为两个节点的共同邻居节点,最后,计算每个中心节点的排名值Rk,并对中心节点集内的中心节点,依据排名值Rk进行排序,节点从大到小,然后转换为整个重构网络图中各个社团之间的排序。
S8:将各社团按序依次与重构网络图进行对比,判断是否存在与所述重构网络图的局部存在相似不同构关系的社团,若存在,则该社团对应的代码存在漏洞,并停止后续社团与重构网络图的对比,若不存在,则该重构网络图对应的软件***不存在漏洞。
需要说明的是,图同构的定义为:如果图G1和图G2的顶点和边数量相同,且边(具有方向性,即有向图)的连接性相同,这两个图是同构的;图相似但不同构的定义为:如果图G1和图G2中,顶点和边数量相同,且边的连接性也相同,但图G1中存在某个节点的属性或类别与图G2中该位置上的节点属性或类别不同。
由此可见,本发明的目的是基于复杂网路图中社团结构特性,结合静态检测技术以及局部挖掘的思想,将对复杂网络图中漏洞检测的问题转换为对整个复杂网络图内社团中漏洞检测的问题。通过社团划分算法和nRank节点排序算法,来提高一般情况下算法的效率。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当然可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (8)
1.一种基于复杂网络社团的软件漏洞检测方法,其特征在于,包括以下步骤:
S1:将软件***抽象为复杂网络图;
S2:对所述复杂网络图进行预处理,得到重构网络图,其中,所述预处理为:判断复杂网络图中任意两个节点之间是否存在两条以上的连接边,若存在,则随机保留一条连接边,打断剩余的连接边,并在断边形成的两个断点处添加一个节点;
S3:获取重构网络图中各节点的平均中心性,然后选取平均中心性至少排在前15%的节点作为候选节点,得到候选节点集;
S4:判断候选节点集中互为邻居的两个候选节点之间的相似度是否大于设定值,若大于,则剔除平均中心性较小的节点,并将平均中心性较大的节点作为中心节点,得到中心节点集,其中,每个候选节点只进行一次判断;
S5:分别将各中心节点作为当前中心节点执行社团划分操作,得到各中心节点对应的备选社团,其中,所述社团划分操作为:
S51:获取当前中心节点各邻居节点的局部模块优度增量ΔLC;
S52:依次判断各邻居节点的局部模块优度增量ΔLC是否大于设定阈值,若大于,则该邻居节点属于其对应的中心节点所在的备选社团;
S6:判断重构网络中是否存在未被划分到任何备选社团的节点或者同时被划分到多个备选社团的节点,其中,若存在未被划分到任何备选社团的节点,则将该节点划分到其局部模块优度增量ΔLC最大值所对应的中心节点所在的备选社团;若存在同时被划分到多个备选社团的节点,则将该节点划分到其局部模块优度增量ΔLC最大值所对应的中心节点所在的备选社团,同时将该节点从其他备选社团中删除,得到最终的社团;
S7:采用nRank排序算法获取各中心节点的排名值,然后按照排名值的高低将各社团进行排序;
S8:将各社团按序依次与重构网络图进行对比,判断是否存在与所述重构网络图的局部存在相似不同构关系的社团,若存在,则该社团对应的代码存在漏洞,并停止后续社团与重构网络图的对比,若不存在,则该重构网络图对应的软件***不存在漏洞。
2.如权利要求1所述的一种基于复杂网络社团的软件漏洞检测方法,其特征在于,所述将软件***抽象为复杂网络图的方法为:
将软件***按照功能划分为两个以上的功能模块,然后将功能模块内的各行代码分别作为一个节点,各行代码之间存在的跳转关系作为一条连接边,从而将功能模块抽象为代数构件,其中,若两个功能模块之间为调用关系、包含关系或者嵌套关系,则在两个功能模块之间存在跳转关系的两行代码对应的节点之间设置一条连接边,从而将软件***抽象为复杂网络图。
4.如权利要求1所述的一种基于复杂网络社团的软件漏洞检测方法,其特征在于,互为邻居的两个候选节点之间的相似度的计算方法为:
Sxy=|Vx∩Vy|/|Vx∪Vy|
其中,Sxy表示候选节点x与候选节点y之间的相似度,Vx表示候选节点x的所有邻居节点所构成的集合,Vy表示候选节点y的所有邻居节点所构成的集合,|Vx∩Vy|表示候选节点x和候选节点y共有邻居节点的数目,|Vx∪Vy|表示候选节点x的邻居节点数目与候选节点y的邻居节点数目的和值再减去两个候选节点共有邻居节点的数目。
5.如权利要求1所述的一种基于复杂网络社团的软件漏洞检测方法,其特征在于,所述邻居节点的局部模块优度增量ΔLC的计算方法为:
ΔLC=Ein+E′in/E′out+Eout-Ein/Eout
其中,Ein为中心节点集的内部边的数量,内部边为两个均属于中心节点集的节点之间的连接边,E′in为该邻居节点加入中心节点集对应的网络后,中心节点集对应的网络所增加的内部边的数量,Eout为中心节点集的外部边的数量,外部边为两个不同时属于中心节点集的节点之间的连接边,E′out为该邻居节点加入中心节点集对应的网络后,中心节点集对应的网络所增加的外部边的数量。
8.如权利要求6所述的一种基于复杂网络社团的软件漏洞检测方法,其特征在于,中心节点与其邻居节点在LeaderRank算法中的排名值的计算方法为:分别将中心节点与其邻居节作为当前节点代入如下公式进行迭代,直到达到设定迭代次数或者相邻两次迭代得到的排名值之间的差值小于设定值,从而得到当前节点在LeaderRank算法中的排名值:
LRt(0)=1/N
LRt=LRt_w+LRg/N
其中,LRt(0)为当前节点t的初始排名值,N为重构网络中所有的节点数量,p表示迭代次数,p=1,2,...P,且P为设定迭代次数,LRt(p)为当前节点t第p次迭代时的排名值,LRi(p-1)为第p-1次迭代时重构网络中各节点i的排名值,ait为可调常数,其中,若节点i指向当前节点t,at的取值为节点i的出度,若节点i不指向当前节点t,ait的取值为零,LRt_w为迭代终止时的排名值,其中,若迭代达到设定迭代次数,则LRt_w的取值为LRt(P),若相邻两次迭代得到的排名值之间的差值小于设定值,则LRt_w的取值为LRt(p),LRg为迭代终止时引入的辅助节点在LeaderRank节点排序算法中的排名值,LRt为当前节点t在LeaderRank算法中最终得到的排名值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010585822.6A CN111767547B (zh) | 2020-06-24 | 2020-06-24 | 一种基于复杂网络社团的软件漏洞检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010585822.6A CN111767547B (zh) | 2020-06-24 | 2020-06-24 | 一种基于复杂网络社团的软件漏洞检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111767547A CN111767547A (zh) | 2020-10-13 |
CN111767547B true CN111767547B (zh) | 2022-08-19 |
Family
ID=72722393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010585822.6A Active CN111767547B (zh) | 2020-06-24 | 2020-06-24 | 一种基于复杂网络社团的软件漏洞检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111767547B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110598417B (zh) * | 2019-09-05 | 2021-02-12 | 北京理工大学 | 一种基于图挖掘的软件漏洞检测方法 |
CN112328505B (zh) * | 2021-01-04 | 2021-04-02 | 中国人民解放军国防科技大学 | 一种用于提升模糊测试的覆盖率的方法和*** |
CN112989374B (zh) * | 2021-03-09 | 2021-11-26 | 闪捷信息科技有限公司 | 基于复杂网络分析的数据安全风险识别方法及装置 |
CN116032727B (zh) * | 2021-10-25 | 2024-04-09 | 中国科学院沈阳自动化研究所 | 一种基于区域协作的电力物联网感知层自修复方法 |
CN114090835B (zh) * | 2021-11-24 | 2024-07-23 | 山东大学 | 一种基于属性图信息的社团检测方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9454659B1 (en) * | 2014-08-15 | 2016-09-27 | Securisea, Inc. | Software vulnerabilities detection system and methods |
CN107665172A (zh) * | 2017-10-20 | 2018-02-06 | 北京理工大学 | 一种基于复杂加权软件网络的软件缺陷预测方法 |
CN110598417A (zh) * | 2019-09-05 | 2019-12-20 | 北京理工大学 | 一种基于图挖掘的软件漏洞检测方法 |
-
2020
- 2020-06-24 CN CN202010585822.6A patent/CN111767547B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9454659B1 (en) * | 2014-08-15 | 2016-09-27 | Securisea, Inc. | Software vulnerabilities detection system and methods |
CN107665172A (zh) * | 2017-10-20 | 2018-02-06 | 北京理工大学 | 一种基于复杂加权软件网络的软件缺陷预测方法 |
CN110598417A (zh) * | 2019-09-05 | 2019-12-20 | 北京理工大学 | 一种基于图挖掘的软件漏洞检测方法 |
Non-Patent Citations (1)
Title |
---|
复杂软件群体网络社团中关键节点挖掘算法;李维娜等;《小型微型计算机***》;20180915(第09期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111767547A (zh) | 2020-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111767547B (zh) | 一种基于复杂网络社团的软件漏洞检测方法 | |
CN109426722B (zh) | Sql注入缺陷检测方法、***、设备及存储介质 | |
US11099842B2 (en) | Source code similarity detection using digital fingerprints | |
US8239404B2 (en) | Identifying entries and exits of strongly connected components | |
CN107229563B (zh) | 一种跨架构的二进制程序漏洞函数关联方法 | |
CN114095273A (zh) | 基于深度学习的互联网漏洞挖掘方法及大数据挖掘*** | |
US8589888B2 (en) | Demand-driven analysis of pointers for software program analysis and debugging | |
CN113139192B (zh) | 基于知识图谱的第三方库安全风险分析方法及*** | |
CN106682514B (zh) | 基于子图挖掘的***调用序列特征模式集生成方法 | |
CN112364352B (zh) | 可解释性的软件漏洞检测与推荐方法及*** | |
CN111045670B (zh) | 一种二进制代码与源代码间复用关系的识别方法与装置 | |
Ashraf et al. | WeFreS: weighted frequent subgraph mining in a single large graph | |
CN116560984A (zh) | 一种基于调用依赖图的测试用例聚类分组方法 | |
CN117725592A (zh) | 一种基于有向图注意力网络的智能合约漏洞检测方法 | |
CN116663018A (zh) | 一种基于代码可执行路径的漏洞检测方法及装置 | |
CN116383832A (zh) | 一种基于图神经网络的智能合约漏洞检测方法 | |
CN115277124A (zh) | 基于***溯源图搜索匹配攻击模式的在线***及服务器 | |
CN115454473A (zh) | 基于深度学习漏洞决策的数据处理方法及信息安全*** | |
Ma et al. | Parallel exact inference on multicore using mapreduce | |
CN118092874B (zh) | 一种基于图集扩展的api编排方法及装置 | |
CN114595148B (zh) | 一种基于数据流传播分析的Java空指针引用检测方法及*** | |
CN113778381B (zh) | 一种pptl规范挖掘***和方法 | |
CN117909988B (zh) | 基于语义信息引导模糊测试的智能合约漏洞检测方法 | |
Girgis et al. | An approach for enhancing regression testing using genetic algorithm and data flow analysis | |
CN109067696B (zh) | 基于图相似度分析的webshell检测方法及*** |
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 |