CN108140091B - 漏洞发现装置、漏洞发现方法以及存储介质 - Google Patents

漏洞发现装置、漏洞发现方法以及存储介质 Download PDF

Info

Publication number
CN108140091B
CN108140091B CN201680057673.8A CN201680057673A CN108140091B CN 108140091 B CN108140091 B CN 108140091B CN 201680057673 A CN201680057673 A CN 201680057673A CN 108140091 B CN108140091 B CN 108140091B
Authority
CN
China
Prior art keywords
program code
value
character string
similarity
bug
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
CN201680057673.8A
Other languages
English (en)
Other versions
CN108140091A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Publication of CN108140091A publication Critical patent/CN108140091A/zh
Application granted granted Critical
Publication of CN108140091B publication Critical patent/CN108140091B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

漏洞发现装置(10)具有:漏洞部位提取部(13),其提取与软件的未修正的漏洞部位对应的第1程序代码;标准化处理部(14),其对提取出的第1程序代码和作为漏洞部位的检查对象的软件的第2程序代码中包含的参数中的、根据编译环境而发生变化的参数进行标准化;相似度计算部(15),其将标准化后的第2程序代码的任意部位作为比较对象,计算与第1程序代码的相似度;以及判定部(16),其针对计算的相似度超过规定阈值的第2程序代码的部位,参照漏洞关联信息来判定该第2程序代码的部位是否是未知的漏洞部位。

Description

漏洞发现装置、漏洞发现方法以及存储介质
技术领域
本发明涉及漏洞发现装置、漏洞发现方法以及存储了漏洞发现程序的存储介质。
背景技术
作为服务器攻击和感染恶意软件的根本原因之一,可列举软件中存在的漏洞。攻击者通过利用漏洞的攻击代码或恶意软件对计算机进行具有恶意的行为。为了将这样的攻击防患于未然,比攻击者更早发现并修正漏洞且不使漏洞被用作攻击的立足点的对策很重要。
根据这样的状况,正在研究检查软件并发现软件中存在的漏洞的方法。作为发现软件中存在的漏洞的方法之一,有使用了代码克隆的漏洞发现方法。
代码克隆是软件中存在的类似或者一致的代码。该代码克隆是由于软件开发者在软件开发中为了实现特定功能的程度而复制和粘贴具有类似功能的其它程序的源代码的行为而产生的。这里,在复制源的源代码中发现了漏洞的情况下,仅修正复制源的源代码是不够的,还必须同样修正复制目标的源代码。然而,即使在复制源中发现了漏洞,如果开发者没有全部掌握所发现的漏洞部分的代码克隆,则难以进行由于代码克隆而产生的漏洞的修正。基于代码克隆的漏洞发现方法是如下方法:通过在检查对象的软件中发现被发现了这些漏洞的部分的代码克隆,在检查对象软件中发现未知的漏洞。
作为使用了代码克隆的漏洞发现方法,具有利用了软件的源代码的方法(参照非专利文献1、非专利文献2)。在该方法中,通过从过去被发现了漏洞的软件中提取漏洞部位的源代码,并对检查对象软件的源代码进行检查,发现检查对象软件所包含的漏洞部位的代码克隆。
现有技术文献
专利文献
专利文献1:日本特开2009-193161号公报
非专利文献
非专利文献1:J.Jang,A.Agrawal,and D.Brumley,“ReDeBug:Finding UnpatchedCode Clones in Entire OS Distributions”,In IEEE Symposium on Security andPrivacy,2012.
非专利文献2:Hongzhe Li,Hyuckmin Kwon,Jonghoon Kwon,and Heejo Lee,“AScalable Approach for Vulnerability Discovery Based on Security Patches”,Application and Techniques in Information Security,2014.
非专利文献3:Andreas Saebjoernsen,Jeremiah Willcock,Thomas Panas,Daniel Quinlan,and Zhendong Su,“Detecting Code Clones in Binary Executables”,In Proceedings of ISSTA'09,2009.
非专利文献4:SB.Needleman,CD.Wunsch,“A General Method Applicable tothe Search for Similarities in the Amino Acid Sequence of Two Proteins”,Journal of Molecular Biology vol.48,p443-453,1970.
非专利文献5:Gotoh Osamu,“An Improved Algorithm for MatchingBiological Sequences”,Journal of Molecular Biology.162,p705-708,1982.
发明内容
发明要解决的课题
但是,不存在将软件的程序代码作为检查对象并通过代码克隆发现漏洞的技术。换而言之,软件开发者为了通过代码克隆发现软件的漏洞,需要知道检查对象软件的源代码。因此,对于难以获取或利用源代码的软件(例如,私有软件、设定为独占排他性的软件),难以发现未知的漏洞。
因此,本发明的课题在于解决上述问题,即使在不具有检查对象软件的源代码的情况下,也发现未知的漏洞。
用于解决问题的手段
为了解决上述课题,本发明的漏洞发现装置具有:提取部,其提取与软件的未修正的漏洞部位相当的第1程序代码;标准化处理部,其对由所述提取部提取出的第1程序代码和作为漏洞部位检查对象的软件的第2程序代码中所包含的参数中的、根据编译环境而发生变化的参数进行标准化;相似度计算部,其将所述标准化后的第2程序代码的任意部位作为比较对象,计算与所述第1程序代码的相似度即第1相似度;判定部,其对于计算出的所述第1相似度超过规定阈值的第2程序代码的部位,参照漏洞关联信息来判定该第2程序代码的部位是否是未知的漏洞部位;以及输出部,其输出被判定为所述未知的漏洞部位的第2程序代码的部位。
发明效果
根据本发明,即使在不具有检查对象软件的源代码的情况下,也能够发现未知的漏洞。
附图说明
图1是示出漏洞发现装置的结构的框图。
图2是用于说明标准化处理部的处理的图。
图3是用于说明相似度计算部的处理的图。
图4是示出相似度计算中使用的矩阵X的一例的图。
图5是示出相似度计算中使用的矩阵Y的一例的图。
图6是示出相似度计算中使用的矩阵Z的一例的图。
图7是示出判定部的处理过程的流程图。
图8是示出使用计算机来具体实现基于漏洞发现程序的信息处理的图。
具体实施方式
以下,参照附图说明本发明的实施方式。本发明不限定于以下说明的实施方式。
首先,使用图1来说明漏洞发现装置10的结构。漏洞发现装置10使用软件的代码克隆来发现作为检查对象的软件(检查对象软件)的漏洞部位。例如,漏洞发现装置10使用具有未修正的漏洞的(即未适用补丁的)软件的代码克隆,从检查对象软件的程序代码中发现漏洞部位。而且,漏洞发现装置10对该漏洞部位与已应用补丁的程序代码进行比较,如果与已应用补丁的程序代码不相似,则输出该漏洞部位作为未知的漏洞部位候选。
该漏洞发现装置10具有漏洞关联DB 11、反汇编部12、漏洞部位提取部13、标准化处理部14、相似度计算部15、判定部16和输出部17。
漏洞关联DB 11存储漏洞关联信息。该漏洞关联信息例如是攻击验证码、公共漏洞识别符(CVE:Common Vulnerabilities and Exposures)、与漏洞相关的安全补丁、已应用补丁(已修正)的程序代码等。
反汇编部12进行软件的反汇编。例如,反汇编部12对所输入的检查对象软件、具有未修正的漏洞的软件进行反汇编。
漏洞部位提取部13从软件的反汇编结果中提取漏洞部位的程序代码。例如,在从反汇编部12接收到具有未修正的漏洞的软件的反汇编结果时,漏洞部位提取部13参照漏洞关联DB 11的漏洞关联信息,从该反汇编结果中提取漏洞部位的程序代码。
列举具体例来说,在利用漏洞关联信息中的攻击验证码的情况下,漏洞部位提取部13对具有未修正的漏洞部位的软件的反汇编结果执行攻击验证码,提取作为攻击的起点的部分作为漏洞部位的程序代码。或者,在利用漏洞关联信息中的公共漏洞识别符的情况下,漏洞部位提取部13参照CVEDB(Common Vulnerabilities and Exposures Data Base:公共漏洞与披露数据库),从具有未修正的漏洞部位的软件的反汇编结果中提取根据该软件的信息而确定的部分作为漏洞部位的程序代码。
标准化处理部14进行程序代码的标准化处理。该标准化处理是指对通过反汇编得到的程序代码中的、根据编译环境而发生变化的部位(例如,寄存器的种类、访问目标的存储器地址的值、立即值等可变参数)进行抽象化的处理。
例如,标准化处理部14从漏洞部位提取部13取得未修正的漏洞部位的程序代码,并且,从反汇编部12取得检查对象软件的反汇编结果(检查对象软件的程序代码)。而且,标准化处理部14进行该未修正的漏洞部位的程序代码和检查对象软件的程序代码的标准化处理。
列举具体例来说,如图2那样,标准化处理部14将根据编译环境而发生变化的部位转换为仅表示其属性的字符串。例如,标准化处理部14通过将程序代码中的“0x10”、“00402198”、“0040189C”、“ebx,ebx”各值分别转换为“VAL”、“MEM”、“MEM”、“REG,REG”各字符串而对其进行抽象化。由此,标准化处理部14能够进行不被检查对象软件所编译的环境所左右的正确的相似度计算。另外,在标准化处理中也可以使用作为从机器语言指令中去除了操作数部分之后的信息的缩约指令。
相似度计算部15将标准化后的检查对象软件的程序代码的任意部位作为比较对象,计算与标准化后的未修正的漏洞部位的程序代码的相似度。
例如图3所示,相似度计算部15针对标准化后的检查对象软件的程序代码(B)的任意部位,计算与标准化后的未修正的漏洞部位的程序代码(A)全体的相似度。例如,相似度计算部15针对标准化后的检查对象软件的程序代码(B)中的标号302所示的部位,将与标准化后的未修正的漏洞部位的程序代码(A)全体的相似度计算为77%。之后叙述该相似度计算部15的详细内容。
判定部16针对由相似度计算部15计算出的相似度超过规定阈值的标准化后的检查对象软件的程序代码的部位(例如,图3的标号301所示的部位),参照漏洞关联DB 11来判定该部位是否是未知的漏洞部位。之后叙述判定部16的详细内容。
输出部17将由判定部16判定为未知的漏洞部位的部位作为未知的漏洞部位候选而输出。
(相似度计算部)
接着,参照图3,说明相似度计算部15进行的处理的详细内容。这里,在设标准化后的未修正的漏洞部位的程序代码为A、标准化后的检查对象软件的程序代码为B时,通过基于得分的相似度的计算,确定在B中与A相似的部位。
这里,设A的长度为|A|=M、B的长度为|B|=N,并设A=a1 M=a1,a2,a3,……,aM,B=b1 N=b1,b2,b3,……,bN。得分能够通过对应于字符串的插入或者删除部分中的位置而将区分扣分点的被称作空位仿射(Affine gap)的方法(参照非专利文献5)应用于基于动态编程的相似字符串检索算法即Needleman-Wunsch(参照非专利文献4)并进一步变更得分计算部分而计算出。而且,在设A、B间的得分为F(A,B)时,相似度计算部15通过求出F(A,B)/F(A,A),能够计算A、B间的相似度。
对用于得分计算的具体处理内容进行说明。首先,相似度计算部15在A、B间,用下述的式(1)~式(3)计算3个得分矩阵X={xij|0≤i≤M,0≤j≤N}、得分矩阵Y={yij|0≤i≤M,0≤j≤N}、得分矩阵Z={zij|0≤i≤M,0≤j≤N}的各要素。另外,该得分矩阵X是管理A、B间的match(匹配)、mismatch(不匹配)得分的矩阵。此外,得分矩阵Y是管理B中的插入的空位(gap)得分的矩阵。并且,得分矩阵Z是管理A中的删除的空位(gap)得分的矩阵。
【数1】
Figure GDA0001616473760000061
Figure GDA0001616473760000062
【数2】
Figure GDA0001616473760000063
【数3】
Figure GDA0001616473760000064
另外,式(1)中的match(字符串彼此一致)、mismatch(字符串彼此不一致)的得分可以任意设定,但优选成为match(第1值)>mismatch(第2值)且|match|和|mismatch|尽可能不相隔过远的值。此外,设式(2)和式(3)中的o(open gap)为空位(字符串的插入或者删除)的开始得分,设e(extended gap)为空位的持续得分。o(第3值)和e(第4值)的得分可以设定任意的值,但优选成为e>mismatch、e>o、o<mismatch、e<0且(mismatch×2)<(e+o)的值。之后叙述该理由。
例如图3所示,相似度计算部15使用match=+2、mismatch=-2、o(open gap)=-3、e(extended gap)=-0.5作为match、mismatch、o(open gap)、e(extended gap)各自的设定得分。
即,相似度计算部15设B的字符串中的、与A的字符串相同的字符串的部位的得分为“match=+2”、B的字符串中的、与A的字符串不同的字符串的部位的得分为“mismatch=-2”。
此外,在具有针对B插入有与A不同的字符串的区间、或者针对B部分地删除了A的字符串的区间(产生了空位的区间)的情况下,相似度计算部15对该区间的开始点的字符串设得分为“o=-3”、对该区间的持续点的字符串设得分为“e=-0.5”。
例如,在相似度计算部15将图3所示的B的标号302所示的部位与A全体进行比较时,标号301所示的部位排列有与A相同的字符串,但标号302所示的区间被插入有与A不同的字符串。因此,相似度计算部15在计算得分时,对于B的标号301所示的部位中的、除了标号302所示的区间的字符串以外的字符串,分别加上“2”(match=+2)。另一方面,相似度计算部15对于标号302所示的区间的开始点(标号303所示的字符串),减去“3”(o=-3),对于区间的持续点(标号304所示的字符串),分别减去“0.5”(e=-0.5)。
另外,这里省略说明,但如果在B的标号302所示的部位具有与A的字符串不同的字符串,则相似度计算部15对于该字符串,分别减去“2”(mismatch=-2),在具有针对B部分地删除了A的字符串的区间的情况下,相似度计算部15对于该区间的开始点的字符串,减去“3”(o=-3),对于该区间的持续点的字符串,分别减去“0.5”(e=-0.5)。
此外,在上述得分计算中,通过如o=-3、e=-0.5那样使用如成为e>o且(mismatch×2)<(e+o)的值,在B中存在插入或者删除了A的一部分的区间(产生空位的区间)的情况下,能够进行反映了该插入或者删除的得分计算。
例如,在相似度计算部15对于图3的标号302所示的区间的字符串全部设为mismatch,分别进行得分计算为“-2”时,该区间的得分会成为“-2×5=-10”,但通过如上述o=-3、e=-0.5那样使用如成为(mismatch×2)<(e+o)的值,该区间的得分成为“-3+(-0.5)×4=-5”。
并且,相似度计算部15通过针对o、e如上述o=-3、e=-0.5那样使用如成为e>o的值,能够使得不会由于B中的产生了空位的区间的长度而在得分的值中产生较大的差。例如,在B中的产生了空位的区间的长度为“2”的情况下,得分成为“-3+(-0.5)=-3.5”。另一方面,在B中的产生了空位的区间的长度为“5”的情况下,得分成为“-3+(-0.5)×4=-5”。因此,在B中的产生了空位的区间为“2”的情况和为“5”的情况下,各自得分的差能够设为“1.5”左右。
相似度计算部15利用使用上述方法而计算出的3个得分矩阵,根据用以下的式(4)获得的最大得分点jmax,计算F(A,B)/F(A,A)。
【数4】
Figure GDA0001616473760000071
例如,在相似度计算部15将图3所例示的A、B作为对象,使用上述式(1)~式(3)来计算得分矩阵(矩阵)X,Y,Z时,其计算结果分别如图4~图6所示。这里,在相似度计算部15根据式(4)来计算最大得分点jmax时,成为“18.5”(参照图4所示的矩阵X的jmax)。即,F(A,B)=jmax=18.5。此外,成为F(A,A)=match×|A|=24。因此,相似度计算部15针对图3的B的标号301所示的部位,将与A全体的相似度计算为F(A,B)/F(A,A)=18.5/24≒相似度77%。
另外,相似度计算部15为了从B中进一步搜索A的相似部位,将从B中排除了在前次的相似度计算中成为了最大得分点jmax(例如,18.5)的区间以外的部分作为对象,执行与上述相同的处理,计算最大得分点jmax,从而计算F(A,B)/F(A,A)。由此,相似度计算部15能够针对B的任意部位计算与A的相似度。另外,计算结果预先存储到漏洞发现装置10的存储部(省略图示)的规定区域中,在判定部16的判定处理时被读出。
(判定部)
接着,使用图7详细地说明判定部16进行的处理。判定部16首先将由相似度计算部15计算出的、与标准化后的未修正的漏洞部位的程序代码(以下,简称作未修正的漏洞部位的程序代码)的相似度超过规定阈值的标准化后的检查对象程序代码(以下,简称作检查对象程序代码)的部位视作漏洞的代码克隆部分,判定该部位是否是未知的漏洞部位。
具体而言,首先,判定部16从存储部(省略图示)中读出相似度计算部15的检查对象程序代码的各部位的相似度的计算结果,针对检查对象程序代码的各部位判定与未修正的漏洞部位的程序代码的相似度(Sim1)是否超过规定阈值(S1)。这里,如果在检查对象程序代码中存在与未修正的漏洞部位的程序代码的相似度(Sim1)超过规定阈值的部位(S1中为“是”),则判定部16针对该部位,计算与已修正的漏洞部位的程序代码的相似度(Sim2)(S2)。这里的相似度的计算例如通过与基于上述相似度计算部15的相似度计算相同的方法进行即可,此外,已修正的漏洞部位的程序代码例如参照漏洞关联DB 11内的漏洞关联信息所包含的已应用补丁的程序代码的信息。另一方面,在判定为检查对象程序代码中不存在与未修正的漏洞部位的程序代码的相似度(Sim1)超过规定阈值的部位的情况下(S1中为“否”),判定部16结束处理。
在S2之后,判定部16针对该部位,对在S2中计算出的与已修正的漏洞部位的程序代码的相似度(Sim2)和与未修正的漏洞部位的程序代码的相似度(Sim1)进行比较,在判定部16判定为Sim2>Sim1的情况下(S3中为“是”),结束处理。即,在与未修正的漏洞部位的程序代码相比,该部位与已修正的漏洞部位的程序代码更相似的情况下,判定部16结束处理。另一方面,在判定为Sim2≤Sim1的情况下(S3中为“否”),判定部16将该部位判定为未知的漏洞部位候选(S4)。即,在该部位的与未修正的漏洞部位的程序代码的相似度(Sim1)为在S2中计算出的与已修正的漏洞部位的程序代码的相似度(Sim2)以上的情况下,判定部16将该部位判定为未知的漏洞部位候选。换言之,判定部16判断为被判定为Sim为Sim1以上的部位是已知的漏洞部位的可能性较高,从未知的漏洞部位候选中排除。
另外,能够通过以下方式求出该部位是检查对象程序代码中的哪个部位:以由相似度计算部15计算出的最大得分点jmax为起点,按照与直到计算jmax的各矩阵(得分矩阵X、Y、Z)的计算式中的要素选择顺序相反的顺序,回溯至i=1。将该操作称作回溯。在回溯中,回溯计算出当前关注的要素的前1个要素,即(i-1,j-1)、(i-1,j)、(i,j-1)中的任意方。具体而言,为了进行回溯,在相似度计算部15计算3个得分矩阵X、Y、Z时,另行生成保持了与各得分矩阵对应的选择顺序的下述式(5)所示的指针矩阵P、Q、R,并存储到存储部(省略图示)中。另外,作为指针,保持着当前要素的计算所使用的要素的矩阵的种类和要素的部位。
【数5】
Figure GDA0001616473760000091
其中,
Figure GDA0001616473760000092
(i-1,j-1)
↑:(i·1,j)
←:(i,j-1)
:(i,j)
相似度计算部15通过下述的式(6)~式(8)计算3个指针矩阵的各要素。
【数6】
Figure GDA0001616473760000093
【数7】
Figure GDA0001616473760000094
【数8】
Figure GDA0001616473760000101
根据以上所说明的漏洞发现装置10,能够使用代码克隆来从检查对象程序代码中发现未知的漏洞部位的候选。
此外,在上述实施方式中叙述的漏洞发现装置10能够通过将执行上述处理的漏洞发现程序安装于期望的信息处理装置(计算机)来安装。例如,通过使信息处理装置执行作为封装软件或在线软件被提供的上述漏洞发现程序,能够使信息处理装置作为漏洞发现装置10发挥功能。在这里所指的信息处理装置中包含桌面型或者笔记本型的个人计算机。此外,除此以外,在信息处理装置的范畴中还包含智能手机、便携电话或PHS(PersonalHandyphone System:个人手持式电话系统)等移动通信终端、以及PDA(Personal DigitalAssistants:个人数字助理)等平板终端等。此外,可以将漏洞发现装置10作为Web服务器或云端安装。
(程序)
图8是示出执行漏洞发现程序的计算机的图。如图8所示,计算机1000例如具有存储器1010、CPU(Central Processing Unit:中央处理器)1020、硬盘驱动器接口1030、盘驱动器接口1040、串行端口接口1050、视频适配器1060以及网络接口1070。这些各部件通过总线1080连接。
存储器1010包含ROM(Read Only Memory:只读存储器)1011和RAM(Random AccessMemory:随机存取存储器)1012。ROM 1011存储例如BIOS(Basic Input Output System:基本输入输出系统)等引导程序。硬盘驱动器接口1030与硬盘驱动器1090连接。盘驱动器接口1040与盘驱动器1100连接。例如,磁盘或光盘等可拆装的存储介质被插入盘驱动器1100中。串行端口接口1050上例如连接了鼠标1110、键盘1120。视频适配器1060例如连接了显示器1130。
这里,如图8所示,硬盘驱动器1090例如存储OS 1091、应用程序1092、程序模块1093和程序数据1094。在上述实施方式中所说明的各信息、数据例如被存储在硬盘驱动器1090或存储器1010中。
此外,漏洞发现程序作为记述了由计算机1000所执行的指令的程序模块1093,例如被存储在硬盘驱动器1090中。具体而言,记述了在上述实施方式中所说明的漏洞发现装置10执行的各处理的程序模块1093被存储在硬盘驱动器1090中。
此外,基于漏洞发现程序的信息处理中使用的数据作为程序数据例如被存储在硬盘驱动器1090中。而且,CPU 1020根据需要在RAM 1012中读出硬盘驱动器1090中存储的程序模块1093和程序数据1094,执行上述各种过程。
此外,漏洞发现程序所涉及的程序模块1093和程序数据1094不限于存储在硬盘驱动器1090中的情况,例如,可以存储在可拆装的存储介质中,经由盘驱动器1100等由CPU1020读取。或者,漏洞发现程序所涉及的程序模块1093和程序数据1094也可以存储在经由LAN(Local Area Network)或WAN(Wide Area Network)等网络连接的其它计算机中,经由网络接口1070由CPU 1020读取。
标号说明
10:漏洞发现装置;11:漏洞关联DB;12:反汇编部;13:漏洞部位提取部;14:标准化处理部;15:相似度计算部;16:判定部;17:输出部。

Claims (5)

1.一种漏洞发现装置,其特征在于,所述漏洞发现装置具有:
提取部,其提取与软件的未修正的漏洞部位相当的第1程序代码;
标准化处理部,其将由所述提取部提取出的第1程序代码和作为漏洞部位检查对象的软件的第2程序代码中所包含的参数中的、根据编译环境而发生变化的参数的值转换为表示所述值的属性的字符串;
相似度计算部,其将所述转换后的第2程序代码的任意部位作为比较对象,计算与所述第1程序代码的相似度即第1相似度;
判定部,其对于计算出的所述第1相似度超过规定阈值的第2程序代码的部位,参照漏洞关联信息来判定该第2程序代码的部位是否是未知的漏洞部位;以及
输出部,其输出被判定为所述未知的漏洞部位的第2程序代码的部位,
所述相似度计算部在计算所述第1相似度时,对于所述转换后的第2程序代码中的与所述第1程序代码的字符串相同的字符串的部位,加上第1值,对于与所述第1程序代码的字符串不同的字符串的部位,加上小于所述第1值的第2值,在所述转换后的第2程序代码中存在插入有与所述第1程序代码不同的字符串的区间或者部分地删除了所述第1程序代码的字符串的区间的情况下,对于所述区间的开始点的字符串,加上小于所述第2值的第3值,对于该区间的持续点的字符串,加上大于所述第3值且小于0的第4值。
2.根据权利要求1所述的漏洞发现装置,其特征在于,
所述相似度计算部对所述第3值和所述第4值设定使得所述第3值和所述第4值的合计值大于所述第2值的2倍值的值。
3.根据权利要求1所述的漏洞发现装置,其特征在于,
所述判定部针对所述第1相似度超过规定阈值的第2程序代码的部位,计算该部位的与所述漏洞关联信息中所登记的已修正的漏洞部位的程序代码的相似度即第2相似度,在计算出的所述第2相似度为所述第1相似度以上的情况下,将该第2程序代码的部位从未知的漏洞部位中排除。
4.一种漏洞发现方法,其特征在于,所述漏洞发现方法包括以下步骤:
提取与软件的未修正的漏洞部位相当的第1程序代码;
将提取出的第1程序代码和作为漏洞部位检查对象的软件的第2程序代码中所包含的参数中的、根据编译环境而发生变化的参数的值转换为表示所述值的属性的字符串;
将所述转换后的第2程序代码的任意部位作为比较对象,计算与所述第1程序代码的相似度即第1相似度;
对于计算出的所述第1相似度超过规定阈值的第2程序代码的部位,参照漏洞关联信息来判定该第2程序代码的部位是否是未知的漏洞部位;以及
输出被判定为所述未知的漏洞部位的第2程序代码的部位,
在计算所述第1相似度时,对于所述转换后的第2程序代码中的与所述第1程序代码的字符串相同的字符串的部位,加上第1值,对于与所述第1程序代码的字符串不同的字符串的部位,加上小于所述第1值的第2值,在所述转换后的第2程序代码中存在插入有与所述第1程序代码不同的字符串的区间或者部分地删除了所述第1程序代码的字符串的区间的情况下,对于所述区间的开始点的字符串,加上小于所述第2值的第3值,对于该区间的持续点的字符串,加上大于所述第3值且小于0的第4值。
5.一种计算机可读的存储介质,其存储了漏洞发现程序,其中,该漏洞发现程序用于使计算机执行以下步骤:
提取与软件的未修正的漏洞部位相当的第1程序代码;
将提取出的第1程序代码和作为漏洞部位检查对象的软件的第2程序代码中所包含的参数中的、根据编译环境而发生变化的参数的值转换为表示所述值的属性的字符串;
将所述转换后的第2程序代码的任意部位作为比较对象,计算与所述第1程序代码的相似度即第1相似度;
对于计算出的所述第1相似度超过规定阈值的第2程序代码的部位,参照漏洞关联信息来判定该第2程序代码的部位是否是未知的漏洞部位;以及
输出被判定为所述未知的漏洞部位的第2程序代码的部位,
在计算所述第1相似度时,对于所述转换后的第2程序代码中的与所述第1程序代码的字符串相同的字符串的部位,加上第1值,对于与所述第1程序代码的字符串不同的字符串的部位,加上小于所述第1值的第2值,在所述转换后的第2程序代码中存在插入有与所述第1程序代码不同的字符串的区间或者部分地删除了所述第1程序代码的字符串的区间的情况下,对于所述区间的开始点的字符串,加上小于所述第2值的第3值,对于该区间的持续点的字符串,加上大于所述第3值且小于0的第4值。
CN201680057673.8A 2015-10-09 2016-09-20 漏洞发现装置、漏洞发现方法以及存储介质 Active CN108140091B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2015201165 2015-10-09
JP2015-201165 2015-10-09
PCT/JP2016/077738 WO2017061270A1 (ja) 2015-10-09 2016-09-20 脆弱性発見装置、脆弱性発見方法、および、脆弱性発見プログラム

Publications (2)

Publication Number Publication Date
CN108140091A CN108140091A (zh) 2018-06-08
CN108140091B true CN108140091B (zh) 2021-12-31

Family

ID=58487541

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680057673.8A Active CN108140091B (zh) 2015-10-09 2016-09-20 漏洞发现装置、漏洞发现方法以及存储介质

Country Status (5)

Country Link
US (1) US10747887B2 (zh)
EP (1) EP3330879B1 (zh)
JP (1) JP6503084B2 (zh)
CN (1) CN108140091B (zh)
WO (1) WO2017061270A1 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018230194A1 (ja) * 2017-06-14 2018-12-20 日本電信電話株式会社 特定支援装置、特定支援方法及び特定支援プログラム
US10592677B2 (en) * 2018-05-30 2020-03-17 Paypal, Inc. Systems and methods for patching vulnerabilities
KR102505127B1 (ko) * 2018-05-30 2023-03-02 삼성전자주식회사 소프트웨어 취약점을 검출하는 전자 장치 및 그 동작 방법
JP7075011B2 (ja) * 2018-07-19 2022-05-25 富士通株式会社 情報処理装置、パッチ適用確認システム、パッチ適用確認方法、およびパッチ適用確認プログラム
CN109344622A (zh) * 2018-09-26 2019-02-15 杭州迪普科技股份有限公司 漏洞攻击的入侵检测方法及相关设备
US11106791B2 (en) 2018-10-01 2021-08-31 Blackberry Limited Determining security risks in binary software code based on network addresses
US11347850B2 (en) 2018-10-01 2022-05-31 Blackberry Limited Analyzing binary software code
US10984102B2 (en) * 2018-10-01 2021-04-20 Blackberry Limited Determining security risks in binary software code
CN110766402B (zh) * 2019-06-27 2021-09-03 深圳市润鹏华通创新科技有限公司 交易顺序依赖漏洞检测方法、系统、电子装置及存储介质
US11514171B2 (en) * 2019-10-29 2022-11-29 Dell Products L.P. Code vulnerability detection and remediation
WO2021130943A1 (ja) * 2019-12-25 2021-07-01 日本電気株式会社 リスク分析結果表示装置、方法、及びコンピュータ可読媒体
WO2021156966A1 (ja) * 2020-02-05 2021-08-12 日本電気株式会社 分析システム、方法およびプログラム
US12093396B2 (en) * 2020-07-16 2024-09-17 Bank Of America Corporation System and method for associating a common vulnerability and exposures (CVE) with a computing device and applying a security patch
CN111866023A (zh) * 2020-08-04 2020-10-30 深圳供电局有限公司 一种异常用户行为审计方法和装置
CN112651028B (zh) * 2021-01-05 2022-09-30 西安工业大学 基于上下文语义和补丁验证的漏洞代码克隆检测方法
CN114785574B (zh) * 2022-04-07 2023-09-29 国网浙江省电力有限公司宁波供电公司 一种基于ai辅助的远程漏洞精确验证方法
CN118260764A (zh) * 2024-03-25 2024-06-28 中国人民解放军61660部队 一种联合实体抽取的漏洞归一化深度学习方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107229563A (zh) * 2016-03-25 2017-10-03 中国科学院信息工程研究所 一种跨架构的二进制程序漏洞函数关联方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282698B1 (en) 1998-02-09 2001-08-28 Lucent Technologies Inc. Detecting similarities in Java sources from bytecodes
US7284273B1 (en) * 2003-05-29 2007-10-16 Symantec Corporation Fuzzy scanning system and method
JP5009186B2 (ja) 2008-02-12 2012-08-22 日本電信電話株式会社 逆アセンブル方法および逆アセンブル装置
JP5301411B2 (ja) 2009-10-16 2013-09-25 日本電信電話株式会社 類似性算出装置、類似性算出方法、類似性算出プログラム、及び類似性解析装置
US8819856B1 (en) * 2012-08-06 2014-08-26 Google Inc. Detecting and preventing noncompliant use of source code
TWI515598B (zh) * 2013-08-23 2016-01-01 國立交通大學 產生純化惡意程式的方法、偵測惡意程式之方法及其系統
JP6088713B2 (ja) 2014-08-20 2017-03-01 日本電信電話株式会社 脆弱性発見装置、脆弱性発見方法、及び脆弱性発見プログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107229563A (zh) * 2016-03-25 2017-10-03 中国科学院信息工程研究所 一种跨架构的二进制程序漏洞函数关联方法

Also Published As

Publication number Publication date
WO2017061270A1 (ja) 2017-04-13
EP3330879B1 (en) 2019-12-18
JP6503084B2 (ja) 2019-04-17
EP3330879A1 (en) 2018-06-06
CN108140091A (zh) 2018-06-08
US20180225460A1 (en) 2018-08-09
EP3330879A4 (en) 2019-04-03
JPWO2017061270A1 (ja) 2018-02-22
US10747887B2 (en) 2020-08-18

Similar Documents

Publication Publication Date Title
CN108140091B (zh) 漏洞发现装置、漏洞发现方法以及存储介质
US10534914B2 (en) Vulnerability finding device, vulnerability finding method, and vulnerability finding program
US10339315B2 (en) Apparatus and method for detecting malicious mobile app
US10200391B2 (en) Detection of malware in derived pattern space
KR101568224B1 (ko) 소프트웨어 취약점 분석방법 및 분석장치
US20180089430A1 (en) Computer security profiling
RU2722692C1 (ru) Способ и система выявления вредоносных файлов в неизолированной среде
WO2018066516A1 (ja) 攻撃コード検知装置、攻撃コード検知方法及び攻撃コード検知プログラム
US20220237300A1 (en) Firmware component identification and vulnerability assessment
US20170169215A1 (en) Identification of mislabeled samples via phantom nodes in label propagation
KR20210098297A (ko) 바이너리 코드 클론 기반 소프트웨어 취약점 탐지를 위한 컴퓨터 프로그램
US11403388B2 (en) Assignment device, assignment method, and assignment program
US20180218154A1 (en) Analysis device, analysis method, and analysis program
US20220292201A1 (en) Backdoor inspection apparatus, backdoor inspection method, and non-transitory computer readable medium
Hu et al. Robust app clone detection based on similarity of ui structure
US11366902B2 (en) System and method of detecting malicious files based on file fragments
US11550910B2 (en) Creating generic rules in a high dimensional sparse feature space using negative feedback
US20190005238A1 (en) Normalizing entry point instructions in executable program files
US20200242002A1 (en) Call stack acquisition device, call stack acquisition method and call stack acquisition program
US12067152B2 (en) Verification device, verification system, verification method, and verification program
AU2021427822B2 (en) Information processing device, information processing method, and information processing program
US20240214417A1 (en) Analysis device, analysis method, and analysis system
JP2023121566A (ja) 検知装置、検知方法および検知プログラム
CN115373692A (zh) 软件同源性判断方法、装置、设备及存储介质
于颖超 et al. Binary Code Similarity Analysis and Its Applications on Embedded Device Firmware Vulnerability Search

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