CN109635569B - 一种漏洞检测方法及装置 - Google Patents

一种漏洞检测方法及装置 Download PDF

Info

Publication number
CN109635569B
CN109635569B CN201811502517.5A CN201811502517A CN109635569B CN 109635569 B CN109635569 B CN 109635569B CN 201811502517 A CN201811502517 A CN 201811502517A CN 109635569 B CN109635569 B CN 109635569B
Authority
CN
China
Prior art keywords
abstract syntax
syntax tree
program
vulnerability
detected
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
CN201811502517.5A
Other languages
English (en)
Other versions
CN109635569A (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.)
State Grid Corp of China SGCC
State Grid Information and Telecommunication Co Ltd
Original Assignee
State Grid Corp of China SGCC
State Grid Information and Telecommunication 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 State Grid Corp of China SGCC, State Grid Information and Telecommunication Co Ltd filed Critical State Grid Corp of China SGCC
Priority to CN201811502517.5A priority Critical patent/CN109635569B/zh
Publication of CN109635569A publication Critical patent/CN109635569A/zh
Application granted granted Critical
Publication of CN109635569B publication Critical patent/CN109635569B/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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis

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)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供了一种漏洞检测方法及装置,该方法分别构建待检测程序源码以及漏洞片段的抽象语法树,确定两个抽象语法树之间的相似度以确定待检测程序源码中是否存在漏洞。由于抽象语法树能够表征程序代码的细节以及结构信息,如变量、函数、关键词、操作之间的语法结构关系,因此利用抽象语法树表征待检测程序源码以及漏洞片段能够完整的表征待检测程序源码的语法结构关系以及漏洞片段的语法结构关系,避免了由于字符串仅能表征语法序列而不能表征语法结构关系导致语法信息缺失,进而导致相似度计算的结果准确性低,漏洞检测结果准确性低的问题产生。

Description

一种漏洞检测方法及装置
技术领域
本发明属于计算机安全技术领域,尤其涉及一种漏洞检测方法及装置。
背景技术
随着计算机技术的发展,计算机***软件数量剧增,而在测试阶段无法对每个***软件充分进行安全性测试以检测到***漏洞,导致计算机***存在安全隐患。同时,攻击者正尝试利用计算机***程序代码的漏洞执行恶意操作,对计算机***造成危害。
为了维护互联网及计算机***的安全,需要对计算机***进行漏洞检测。
现有技术提供的漏洞检测方法为采用字符串表征待检测程序源码,并与规则库中存储的漏洞片段进行字符串匹配,通过字符串匹配确定待检测程序源码中存在与漏洞片段相似度达到阈值的程序片段,则确定待检测程序源码中存在漏洞片段。但是,通过字符串匹配确定待检测程序源码中是否存在漏洞片段的检测结果准确性低。
发明内容
有鉴于此,本发明的目的在于提供一种漏洞检测方法及装置,以解决现有通过字符串匹配的方法检测待检测程序源码中是否存在漏洞的检测结果准确性低的问题。
技术方案如下:
本发明提供一种漏洞检测方法,包括:
构建待检测程序源码的抽象语法树以及预置规则库中存储的每个漏洞片段的抽象语法树;
针对预置规则库中存储的每个漏洞片段,确定待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度;
判断待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度是否大于阈值;
若待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度大于阈值,则确定待检测程序源码中存在漏洞。
优选地,所述确定待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度包括:
获取待检测程序源码的抽象语法树的节点数量以及该漏洞片段的抽象语法树的节点数量;
判断待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量之差是否大于预设个数;
若判断待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量之差大于预设个数,则获取该漏洞片段的抽象语法树中的根节点;
针对该漏洞片段的抽象语法树中的每个根节点,分别在待检测程序源码的抽象语法树中查找与该漏洞片段的抽象语法树中该根节点匹配的根节点;
在待检测程序源码的抽象语法树中查找到匹配根节点后,逐级比较该匹配根节点下的每个子节点与该漏洞片段的抽象语法树中对应的根节点下的子节点,得到比较结果;
根据比较结果,确定待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度。
优选地,还包括:
若判断待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量之差大于预设个数,则分解待检测程序源码的抽象语法树以及该漏洞片段的抽象语法树,分别得到每个抽象语法树中包括的路径;
针对每个抽象语法树中分解得到的每条路径,分别根据每条路径上节点的语法信息计算该路径的哈希值;
根据每个抽象语法树中分解得到的所有路径的哈希值,计算待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度。
优选地,采用如下方法构建抽象语法树:
获取待构建程序中包括的文件;其中,所述待构建程序为待检测程序源码或预置规则库中存储的漏洞片段;
分别解析每个所述文件;
从每个所述文件的解析结果中获取函数信息;
根据函数信息提取函数片段,并将函数片段存储至函数文件中;
对所述函数文件进行解析后,根据对所述函数文件的解析结果构建该函数文件的抽象语法树,直至完成对所述待构建程序中包括的所有函数文件的抽象语法树的构建,得到所述待构建程序的抽象语法树。
优选地,还包括:
对得到的所述待构建程序的抽象语法树进行裁剪。
本发明还提供了一种漏洞检测装置,包括:
构建单元,用于构建待检测程序源码的抽象语法树以及预置规则库中存储的每个漏洞片段的抽象语法树;
相似度确定单元,用于针对预置规则库中存储的每个漏洞片段,确定待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度;
判断单元,用于判断待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度是否大于阈值;
漏洞确定单元,用于在所述判断单元确定待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度大于阈值,则确定待检测程序源码中存在漏洞。
优选地,所述相似度确定单元包括:
第一获取子单元,用于获取待检测程序源码的抽象语法树的节点数量以及该漏洞片段的抽象语法树的节点数量;
判断子单元,用于判断待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量之差是否大于预设个数;
第二获取子单元,用于若判断待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量之差大于预设个数,则获取该漏洞片段的抽象语法树中的根节点;
查找子单元,用于针对该漏洞片段的抽象语法树中的每个根节点,分别在待检测程序源码的抽象语法树中查找与该漏洞片段的抽象语法树中该根节点匹配的根节点;
比较子单元,用于在待检测程序源码的抽象语法树中查找到匹配根节点后,逐级比较该匹配根节点下的每个子节点与该漏洞片段的抽象语法树中对应的根节点下的子节点,得到比较结果;
确定子单元,用于根据比较结果,确定待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度。
优选地,所述相似度确定单元还包括:
分解子单元,用于若判断待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量之差大于预设个数,则分解待检测程序源码的抽象语法树以及该漏洞片段的抽象语法树,分别得到每个抽象语法树中包括的路径;
计算子单元,用于针对每个抽象语法树中分解得到的每条路径,分别根据每条路径上节点的语法信息计算该路径的哈希值;并根据每个抽象语法树中分解得到的所有路径的哈希值,计算待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度。
优选地,所述构建单元包括:
第三获取子单元,用于获取待构建程序中包括的文件;其中,所述待构建程序为待检测程序源码或预置规则库中存储的漏洞片段;
解析子单元,用于分别解析每个所述文件;
第四获取子单元,用于从每个所述文件的解析结果中获取函数信息;
存储子单元,用于根据函数信息提取函数片段,并将函数片段存储至函数文件中;
构建子单元,用于对所述函数文件进行解析后,根据对所述函数文件的解析结果构建该函数文件的抽象语法树,直至完成对所述待构建程序中包括的所有函数文件的抽象语法树的构建,得到所述待构建程序的抽象语法树。
优选地,还包括:
裁剪子单元,用于对得到的所述待构建程序的抽象语法树进行裁剪
与现有技术相比,本发明提供的上述技术方案具有如下优点:
从上述技术方案可知,本申请中分别构建待检测程序源码以及漏洞片段的抽象语法树,确定两个抽象语法树之间的相似度以确定待检测程序源码中是否存在漏洞。由于抽象语法树能够表征程序代码的细节以及结构信息,如变量、函数、关键词、操作之间的语法结构关系,因此利用抽象语法树表征待检测程序源码以及漏洞片段能够完整的表征待检测程序源码的语法结构关系以及漏洞片段的语法结构关系,避免了由于字符串仅能表征语法序列而不能表征语法结构关系导致语法信息缺失,进而导致相似度计算的结果准确性低,漏洞检测结果准确性低的问题产生。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种漏洞检测方法的流程图;
图2是本发明实施例提供的待构建程序的示意图;
图3是本发明实施例构建出的抽象语法树的示意图;
图4是本发明实施例提供的另一种漏洞检测方法的流程图;
图5是本发明实施例提供的一种漏洞检测装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术提供的漏洞检测方法为采用字符串表征待检测程序源码,并采用字符串表征规则库中存储的漏洞片段,采用字符串匹配方法确定表征待检测程序源码的字符串中是否存在与表征漏洞片段的字符串相匹配的字符串,若确定表征待检测程序源码的字符串中存在与表征漏洞片段的字符串相匹配的字符串,则确定待检测程序源码中存在漏洞片段。
由于待检测程序源码、漏洞片段中不仅包括程序代码序列,而且包括变量、函数、关键词、操作之间的语法关系。但是用字符串分别表征待检测程序源码以及漏洞片段,仅能够表征待检测程序源码中的程序代码序列以及漏洞片段中的程序代码序列,而不能表征出变量、函数、关键词、操作之间的语法关系。导致待检测程序源码以及漏洞片段的语法信息缺失,进而后续字符串匹配时的匹配结果不能准确反映出待检测程序源码以及漏洞片段之间的匹配度,从而存在漏洞检测的检测结果准确性低的问题。
针对此,本发明提供了一种漏洞检测方法,采用静态检测技术实现对程序源码中是否存在漏洞的检测。静态检测技术指的是将预先研究得到的漏洞片段存储至规则库中,并将待检测程序源码与规则库中漏洞片段依次匹配,若待检测程序源码中存在与规则库中漏洞片段匹配的可疑程序片段、过程或函数,则确定待检测程序源码中存在漏洞;否则,确定待检测程序源码中不存在漏洞。其中,静态检测技术具有良好的易用性和高可扩展性。
本实施例公开了一种漏洞检测方法,参见图1,该实施例包括以下步骤:
S101、构建待检测程序源码的抽象语法树以及预置规则库中存储的每个漏洞片段的抽象语法树;
漏洞片段包括程序片段、过程或函数;通过研究发现漏洞后,将漏洞片段存储至预置规则库中,并且可以更新预置规则库中的存储的内容,使得不断完善发现的漏洞片段。进一步完善对待检测程序源码的漏洞检测。
确定待检测程序源码后,构建待检测程序源码的抽象语法树。并构建预置规则库中存储的各个漏洞片段的抽象语法树。
S102、针对预置规则库中存储的每个漏洞片段,确定待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度;
待检测程序源码包括大量的程序代码片段,每个程序代码片段的抽象语法树为待检测程序源码的抽象语法树的子树。通过比对待检测程序源码的抽象语法树的子树与该漏洞片段的抽象语法树是否匹配,以确定待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度。
S103、判断待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度是否大于阈值;
若待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度大于阈值,则执行步骤S104;
若待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度小于或等于阈值,则确定待检测程序源码中不存在漏洞。
若待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度大于阈值,则确定待检测程序源码的抽象语法树中存在与该漏洞片段的抽象语法树相匹配的子树,子树对应的程序代码片段即为漏洞片段。
若待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度小于或等于阈值,则确定待检测程序源码的抽象语法树中不存在与该漏洞片段的抽象语法树相匹配的子树,待检测程序源码中不存在与该漏洞片段相匹配的程序代码片段,即待检测程序源码中不存在该漏洞片段。
无论确定待检测程序源码中是否存在该漏洞片段,进而确定待检测程序源码中是否存在漏洞,只要完成对待检测程序源码中是否存在该漏洞片段的检测后,继续执行对待检测程序源码中是否存在下一个漏洞片段的检测。直至依据预置规则库中存储的所有漏洞片段完成对待检测程序源码的漏洞检测。
S104、确定待检测程序源码中存在漏洞。
本实施例中通过判断待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度是否大于阈值,确定待检测程序源码中是否存在漏洞。不仅可以确定待检测程序源码中是否存在漏洞,而且根据待检测程序源码的抽象语法树中与漏洞片段的抽象语法树相似度大于阈值的子树,可以定位在程序代码数量巨大的待检测程序源码中漏洞的位置。
从上述技术方案可知,本实施例中分别构建待检测程序源码以及漏洞片段的抽象语法树,确定两个抽象语法树之间的相似度以确定待检测程序源码中是否存在漏洞。由于抽象语法树能够表征程序代码的细节以及结构信息,如变量、函数、关键词、操作之间的语法结构关系,因此利用抽象语法树表征待检测程序源码以及漏洞片段能够完整的表征待检测程序源码的语法结构关系以及漏洞片段的语法结构关系,避免了由于字符串仅能表征语法序列而不能表征语法结构关系导致语法信息缺失,进而导致相似度计算的结果准确性低,漏洞检测结果准确性低的问题产生。
下面详细介绍本发明中构建抽象语法树的方法,包括以下步骤:
步骤一、获取待构建程序中包括的文件;
所述待构建程序为待检测程序源码或预置规则库中存储的漏洞片段;分别构建待检测程序源码的抽象语法树以及漏洞片段的抽象语法树。其中,构建待检测程序源码的抽象语法树的方法与构建漏洞片段的抽象语法树的方法相同。
步骤二、分别解析每个所述文件;
对获取到的每个文件,利用Clang astdump工具对该文件进行解析。
步骤三、从每个所述文件的解析结果中获取函数信息;
利用正则表达式从解析后的文件中提取函数信息,其中,函数信息包括函数名、函数起始行号和结束行号。
步骤四、根据函数信息提取函数片段,并将函数片段存储至函数文件中;
函数信息中,每个函数名分别对应一组函数起始行号和函数结束行号,表示该函数名对应的函数的程序代码的起始行号和结束行号。
针对每个函数名,根据对应的函数起始行号和函数结束行号,从文件的程序代码中提取函数程序片段,将提取到的该函数名的程序片段独立存储至该函数的函数文件中。
步骤五、对所述函数文件进行解析后,根据对所述函数文件的解析结果构建该函数文件的抽象语法树,直至完成对所述待构建程序中包括的所有函数文件的抽象语法树的构建,得到所述待构建程序的抽象语法树。
对每个函数文件,利用clang astdump工具进行解析,并利用libclang工具构建抽象语法树,直至完成对待构建程序中包括的所有函数文件的抽象语法树的构建,得到该待构建程序的抽象语法树。其中,待构建程序中可能包括多个文件,每个文件中可能包括多个函数,每个函数对应一个函数文件,通过对每个函数对应的函数文件构建抽象语法树,完成构建待构建程序的抽象语法树。
参见图2所示,为本发明中的待构建程序,如待检测程序源码;参见图3所示,为采用本发明的构建抽象语法树的方法构建出的抽象语法树的示意图。
采用抽象语法树表征待检测程序源码,相较于采用字符串表征待检测程序源码而言,抽象语法树能够表征该待检测程序源码的代码细节以及结构信息,如变量、函数、关键词、操作之间的语法关系。如图3所示,针对图2所示的几行程序代码构建的抽象语法树中节点数量多达50多个,导致对两个抽象语法树进行相似度计算时,存在计算量大的问题。
针对此,本发明中在构建出待检测程序源码的抽象语法树后,对得到的待构建程序的抽象语法树进行裁剪。具体为对抽象语法树中表示无用信息的节点进行裁剪,从而在不损失待检测程序源码的变量、函数、关键词、操作之间的语法关系的前提下,减小待检测程序源码的抽象语法树的节点数量。
表示无用信息的节点通常有以下几种类型:
(1)声明节点及子节点,如图2中的int n,int b的变量声明信息对应的节点;
(2)返回节点及子节点,如图2中的return 0对应的节点;
(3)控制块退出节点及子节点,如break对应的节点;
(4)程序跳转相关的节点及子节点,如goto对应的节点;
(5)程序容错相关的节点及子节点,如try,catch等对应的节点。
通过对抽象语法树中存在的上述几种类型的节点进行裁剪,不仅减小了抽象语法树中节点的数量,提高了对两个抽象语法树之间相似度计算的工作效率,且对抽象语法树中表征的待检测程序源码的信息并无影响,不影响对漏洞检测的检测结果的准确性。
采用上述构建抽象语法树的方法,本实施例中还提供了另一种漏洞检测方法,相较于图1所示的漏洞检测方法,本实施例中详细描述了确定待检测程序源码的抽象语法树与漏洞片段的抽象语法树之间的相似度的方法。
参见图4所示,该实施例包括以下步骤:
S401、构建待检测程序源码的抽象语法树以及预置规则库中存储的每个漏洞片段的抽象语法树;
本实施例中步骤S401的实现方式与上一实施例中步骤S101的实现方式类似,此处不再赘述。
下面详细描述确定待检测程序源码的抽象语法树与漏洞片段的抽象语法树之间的相似度的方法。
S402、针对预置规则库中存储的每个漏洞片段,获取待检测程序源码的抽象语法树的节点数量以及该漏洞片段的抽象语法树的节点数量;
抽象语法树是由节点以及节点之间的路径构成的,分别获取待检测程序源码的抽象语法树中包括的节点数量以及漏洞片段的抽象语法树中包括的节点数量。如图3所示的抽象语法树,获取到抽象语法树中包括的节点数量为47个。
S403、判断待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量之差是否大于预设个数;
若判断待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量之差大于预设个数,则执行步骤S404;
若判断待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量之差大于预设个数,则执行步骤S408;
计算待检测程序源码的抽象语法树的节点数量以及漏洞片段的抽象语法树的节点数量之间的差值,通常情况下,待检测程序源码的抽象语法树中的节点数量大于漏洞片段的抽象语法树中的节点数量。
计算得到两个抽象语法树中的节点数量的差值后,判断两个抽象语法树中的节点数量的差值是否大于预设个数。
若判断待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量之差大于预设个数,表示待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量差别较大,通过执行步骤S404-S407实现利用子树匹配的方法确定两个抽象语法树之间的相似度。
若判断待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量之差小于或等于预设个数,表示待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量差别不大,通过执行步骤S408-S410实现利用基于哈希值的模糊相似度计算方法确定两个抽象语法树之间的相似度。
S404、获取该漏洞片段的抽象语法树中的根节点;
抽象语法树中包括根节点,根节点包括下级子节点,下级子节点又可以包括下级子节点。通过节点之间的级联关系形成了抽象语法树。
S405、针对该漏洞片段的抽象语法树中的每个根节点,分别在待检测程序源码的抽象语法树中查找与该漏洞片段的抽象语法树中该根节点匹配的根节点;
在待检测程序源码的抽象语法树中查找与漏洞片段的抽象语法树中的根节点相匹配的根节点。
S406、在待检测程序源码的抽象语法树中查找到匹配根节点后,逐级比较该匹配根节点下的每个子节点与该漏洞片段的抽象语法树中对应的根节点下的子节点,得到比较结果;
在待检测程序源码的抽象语法树中查找到与漏洞片段的抽象语法树中根节点相匹配的根节点后,针对待检测程序源码的抽象语法树中匹配的根节点,逐级比较该匹配的根节点下的每个子节点是否分别与漏洞片段的抽象语法树中该匹配的根节点下的每个子节点相同。得到两个抽象语法树中子节点相同的个数。
S407、根据比较结果,确定待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度,并跳转执行步骤S411;
根据两个抽象语法树中子节点相同的个数,确定待检测程序源码的抽象语法树与漏洞片段的抽象语法树之间的相似度。如,两个抽象语法树中相匹配的根节点下的所有子节点分别都相同,则认为在待检测程序源码的抽象语法树中,该相匹配的根节点以及该相匹配的根节点包括的全部子节点构成的子树与漏洞片段的抽象语法树相匹配。确定待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度为1。
如两个抽象语法树中相匹配的根节点下的所有子节点中只有一半相同,则确定待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度为0.5;
如两个抽象语法树中相匹配的根节点下的所有子节点全部不同,则确定待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度为0。
实际应用中,在待检测程序源码的抽象语法树中与漏洞片段的抽象语法树的根节点相匹配的根节点下,不存在与漏洞片段的抽象语法树的根节点下子节点相同的子节点,则继续在待检测程序源码的抽象语法树中其他节点中继续比较,确定是否存在与漏洞片段的抽象语法树的根节点下子节点相同的节点,直至遍历完待检测程序源码的抽象语法树,得到比较结果。比较结果为两个抽象语法树中子节点相同的个数。
S408、分解待检测程序源码的抽象语法树以及该漏洞片段的抽象语法树,分别得到每个抽象语法树中包括的路径;
抽象语法树由多条节点之间的路径构成。其中,路径指的是从根节点开始能够确定目标子节点的路径。针对待检测程序源码的抽象语法树以及漏洞片段的抽象语法树,分别按照路径分解为多条路径。
S409、针对每个抽象语法树中分解得到的每条路径,分别根据每条路径上节点的语法信息计算该路径的哈希值;
对分解得到的每条路径,依据路径上节点的语法信息计算该路径的哈希值。将每个抽象语法树被分解成的多条路径的哈希值组合在一起,构成哈希值集合,以利用哈希值集合表征该抽象语法树。
S410、根据每个抽象语法树中分解得到的所有路径的哈希值,计算待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度;
计算两个抽象语法树的哈希值集合之间的相似度,以计算得到待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度。
一种实现方式为采用公式(1)计算两个抽象语法树的哈希值集合之间的相似度。
Figure BDA0001898537760000131
其中,Ta表示待检测程序源码的抽象语法树的哈希值集合;Tv表示漏洞片段的抽象语法树的哈希值集合;|Ta∩Tv|表示Ta与Tv这两个集合交集的模,即Ta表征的抽象语法树与Tv表征的抽象语法树中相同节点的数量。S表示待检测程序源码的抽象语法树的哈希值集合与漏洞片段的抽象语法树的哈希值集合之间的相似度。
S411、判断待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度是否大于阈值;
若待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度大于阈值,则执行步骤S412;
若待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度小于或等于阈值,则确定待检测程序源码中不存在漏洞。
通过上述步骤S404-S407或S408-S410确定的两个抽象语法树之间的相似度为0-1之间的自然数。
假设设置的阈值为0.6,那么,若待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度为0.7,则确定待检测程序源码中存在漏洞;若待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度为0.5,则确定待检测程序源码中不存在漏洞。
S412、确定待检测程序源码中存在漏洞。
在本实施例中,在确定待检测程序源码中存在漏洞,定位待检测程序源码中漏洞的位置,并通知管理员,以进行后续操作。
从上述技术方案可知,本实施例中分别构建待检测程序源码以及漏洞片段的抽象语法树,确定两个抽象语法树之间的相似度以确定待检测程序源码中是否存在漏洞。由于抽象语法树能够表征程序代码的细节以及结构信息,如变量、函数、关键词、操作之间的语法结构关系,因此利用抽象语法树表征待检测程序源码以及漏洞片段能够完整的表征待检测程序源码的语法结构关系以及漏洞片段的语法结构关系,避免了由于字符串仅能表征语法序列而不能表征语法结构关系导致语法信息缺失,进而导致相似度计算的结果准确性低,漏洞检测结果准确性低的问题产生。
同时,相较于现有技术中采用字符串匹配的方式确定待检测程序源码与漏洞片段之间的相似度时,若采用精确匹配机制导致将与漏洞片段大体相同但仅存在稍微差异的待检测程序源码认为不存在漏洞片段,进而不能检测出待检测程序源码中存在的漏洞;若采用模糊匹配机制导致将与漏洞片段存在一些相同之处的待检测程序源码误认为是存在漏洞片段,进而存在较高的误检测率。本实施例中在待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量差别较大的情况下,利用子树匹配的方法确定两个抽象语法树之间的相似度,进而实现漏洞检测;在待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量差别不大的情况下,利用基于哈希值的模糊相似度计算方法确定两个抽象语法树之间的相似度,进而实现漏洞检测;避免了字符串匹配的方法确定待检测程序源码与漏洞片段之间的相似度,进而实现漏洞检测时存在的检测结果准确性低的问题。
对应上述实施例公开的漏洞检测方法,本实施例公开了一种漏洞检测装置,该漏洞检测装置结构示意图请参阅图5所示,本实施例中漏洞检测装置包括:
构建单元501、相似度确定单元502、判断单元503和漏洞确定单元504;
构建单元501,用于构建待检测程序源码的抽象语法树以及预置规则库中存储的每个漏洞片段的抽象语法树;
相似度确定单元502,用于针对预置规则库中存储的每个漏洞片段,确定待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度;
判断单元503,用于判断待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度是否大于阈值;
漏洞确定单元504,用于在所述判断单元确定待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度大于阈值,则确定待检测程序源码中存在漏洞。
从上述技术方案可知,本实施例中分别构建待检测程序源码以及漏洞片段的抽象语法树,确定两个抽象语法树之间的相似度以确定待检测程序源码中是否存在漏洞。由于抽象语法树能够表征程序代码的细节以及结构信息,如变量、函数、关键词、操作之间的语法结构关系,因此利用抽象语法树表征待检测程序源码以及漏洞片段能够完整的表征待检测程序源码的语法结构关系以及漏洞片段的语法结构关系,避免了由于字符串仅能表征语法序列而不能表征语法结构关系导致语法信息缺失,进而导致相似度计算的结果准确性低,漏洞检测结果准确性低的问题产生。
可选地,在本实施例中,相似度确定单元502包括:
第一获取子单元、判断子单元、第二获取子单元、查找子单元、比较子单元和确定子单元;
所述第一获取子单元,用于获取待检测程序源码的抽象语法树的节点数量以及该漏洞片段的抽象语法树的节点数量;
所述判断子单元,用于判断待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量之差是否大于预设个数;
所述第二获取子单元,用于若判断待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量之差大于预设个数,则获取该漏洞片段的抽象语法树中的根节点;
所述查找子单元,用于针对该漏洞片段的抽象语法树中的每个根节点,分别在待检测程序源码的抽象语法树中查找与该漏洞片段的抽象语法树中该根节点匹配的根节点;
所述比较子单元,用于在待检测程序源码的抽象语法树中查找到匹配根节点后,逐级比较该匹配根节点下的每个子节点与该漏洞片段的抽象语法树中对应的根节点下的子节点,得到比较结果;
所述确定子单元,用于根据比较结果,确定待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度。
可选地,在其他实施例中,相似度确定单元502还包括:
分解子单元和计算子单元;
所述分解子单元,用于若判断待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量之差大于预设个数,则分解待检测程序源码的抽象语法树以及该漏洞片段的抽象语法树,分别得到每个抽象语法树中包括的路径;
所述计算子单元,用于针对每个抽象语法树中分解得到的每条路径,分别根据每条路径上节点的语法信息计算该路径的哈希值;并根据每个抽象语法树中分解得到的所有路径的哈希值,计算待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度。
可选地,本实施例中构建单元包括:
第三获取子单元、解析子单元、第四获取子单元、存储子单元、构建子单元和裁剪子单元;
所述第三获取子单元,用于获取待构建程序中包括的文件;其中,所述待构建程序为待检测程序源码或预置规则库中存储的漏洞片段;
所述解析子单元,用于分别解析每个所述文件;
所述第四获取子单元,用于从每个所述文件的解析结果中获取函数信息;
所述存储子单元,用于根据函数信息提取函数片段,并将函数片段存储至函数文件中;
所述构建子单元,用于对所述函数文件进行解析后,根据对所述函数文件的解析结果构建该函数文件的抽象语法树,直至完成对所述待构建程序中包括的所有函数文件的抽象语法树的构建,得到所述待构建程序的抽象语法树;
所述裁剪子单元,用于对得到的所述待构建程序的抽象语法树进行裁剪。
本实施例中在待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量差别较大的情况下,利用子树匹配的方法确定两个抽象语法树之间的相似度,进而实现漏洞检测;在待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量差别不大的情况下,利用基于哈希值的模糊相似度计算方法确定两个抽象语法树之间的相似度,进而实现漏洞检测;避免了字符串匹配的方法确定待检测程序源码与漏洞片段之间的相似度,进而实现漏洞检测时存在的检测结果准确性低的问题。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的装置而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (6)

1.一种漏洞检测方法,其特征在于,包括:
构建待检测程序源码的抽象语法树以及预置规则库中存储的每个漏洞片段的抽象语法树;
针对预置规则库中存储的每个漏洞片段,确定待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度;
判断待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度是否大于阈值;
若待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度大于阈值,则确定待检测程序源码中存在漏洞;
其中,所述确定待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度包括:
获取待检测程序源码的抽象语法树的节点数量以及该漏洞片段的抽象语法树的节点数量;
判断待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量之差是否大于预设个数;
若判断待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量之差大于预设个数,则获取该漏洞片段的抽象语法树中的根节点;针对该漏洞片段的抽象语法树中的每个根节点,分别在待检测程序源码的抽象语法树中查找与该漏洞片段的抽象语法树中该根节点匹配的根节点;在待检测程序源码的抽象语法树中查找到匹配根节点后,逐级比较该匹配根节点下的每个子节点与该漏洞片段的抽象语法树中对应的根节点下的子节点,得到比较结果;根据比较结果,确定待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度;
若判断待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量之差小于或等于预设个数,则分解待检测程序源码的抽象语法树以及该漏洞片段的抽象语法树,分别得到每个抽象语法树中包括的路径;针对每个抽象语法树中分解得到的每条路径,分别根据每条路径上节点的语法信息计算该路径的哈希值;根据每个抽象语法树中分解得到的所有路径的哈希值,计算待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度。
2.根据权利要求1所述的漏洞检测方法,其特征在于,采用如下方法构建抽象语法树:
获取待构建程序中包括的文件;其中,所述待构建程序为待检测程序源码或预置规则库中存储的漏洞片段;
分别解析每个所述文件;
从每个所述文件的解析结果中获取函数信息;
根据函数信息提取函数片段,并将函数片段存储至函数文件中;
对所述函数文件进行解析后,根据对所述函数文件的解析结果构建该函数文件的抽象语法树,直至完成对所述待构建程序中包括的所有函数文件的抽象语法树的构建,得到所述待构建程序的抽象语法树。
3.根据权利要求2所述的漏洞检测方法,其特征在于,还包括:
对得到的所述待构建程序的抽象语法树进行裁剪。
4.一种漏洞检测装置,其特征在于,包括:
构建单元,用于构建待检测程序源码的抽象语法树以及预置规则库中存储的每个漏洞片段的抽象语法树;
相似度确定单元,用于针对预置规则库中存储的每个漏洞片段,确定待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度;
判断单元,用于判断待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度是否大于阈值;
漏洞确定单元,用于在所述判断单元确定待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度大于阈值,则确定待检测程序源码中存在漏洞;
其中,所述相似度确定单元包括:
第一获取子单元,用于获取待检测程序源码的抽象语法树的节点数量以及该漏洞片段的抽象语法树的节点数量;
判断子单元,用于判断待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量之差是否大于预设个数;
第二获取子单元,用于若判断待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量之差大于预设个数,则获取该漏洞片段的抽象语法树中的根节点;
查找子单元,用于针对该漏洞片段的抽象语法树中的每个根节点,分别在待检测程序源码的抽象语法树中查找与该漏洞片段的抽象语法树中该根节点匹配的根节点;
比较子单元,用于在待检测程序源码的抽象语法树中查找到匹配根节点后,逐级比较该匹配根节点下的每个子节点与该漏洞片段的抽象语法树中对应的根节点下的子节点,得到比较结果;
确定子单元,用于根据比较结果,确定待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度;
所述相似度确定单元还包括:
分解子单元,用于若判断待检测程序源码的抽象语法树的节点数量与该漏洞片段的抽象语法树的节点数量之差小于或等于预设个数,则分解待检测程序源码的抽象语法树以及该漏洞片段的抽象语法树,分别得到每个抽象语法树中包括的路径;
计算子单元,用于针对每个抽象语法树中分解得到的每条路径,分别根据每条路径上节点的语法信息计算该路径的哈希值;并根据每个抽象语法树中分解得到的所有路径的哈希值,计算待检测程序源码的抽象语法树与该漏洞片段的抽象语法树之间的相似度。
5.根据权利要求4所述的漏洞检测装置,其特征在于,所述构建单元包括:
第三获取子单元,用于获取待构建程序中包括的文件;其中,所述待构建程序为待检测程序源码或预置规则库中存储的漏洞片段;
解析子单元,用于分别解析每个所述文件;
第四获取子单元,用于从每个所述文件的解析结果中获取函数信息;
存储子单元,用于根据函数信息提取函数片段,并将函数片段存储至函数文件中;
构建子单元,用于对所述函数文件进行解析后,根据对所述函数文件的解析结果构建该函数文件的抽象语法树,直至完成对所述待构建程序中包括的所有函数文件的抽象语法树的构建,得到所述待构建程序的抽象语法树。
6.根据权利要求5所述的漏洞检测装置,其特征在于,还包括:
裁剪子单元,用于对得到的所述待构建程序的抽象语法树进行裁剪。
CN201811502517.5A 2018-12-10 2018-12-10 一种漏洞检测方法及装置 Active CN109635569B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811502517.5A CN109635569B (zh) 2018-12-10 2018-12-10 一种漏洞检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811502517.5A CN109635569B (zh) 2018-12-10 2018-12-10 一种漏洞检测方法及装置

Publications (2)

Publication Number Publication Date
CN109635569A CN109635569A (zh) 2019-04-16
CN109635569B true CN109635569B (zh) 2020-11-03

Family

ID=66072301

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811502517.5A Active CN109635569B (zh) 2018-12-10 2018-12-10 一种漏洞检测方法及装置

Country Status (1)

Country Link
CN (1) CN109635569B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110532782B (zh) * 2019-07-30 2023-02-21 平安科技(深圳)有限公司 一种任务执行程序的检测方法、装置及存储介质
CN110968874B (zh) * 2019-11-28 2023-04-14 腾讯科技(深圳)有限公司 一种漏洞检测方法、装置、服务器及存储介质
CN113139190A (zh) * 2020-01-17 2021-07-20 Oppo广东移动通信有限公司 程序文件检测方法、装置、电子设备及存储介质
CN113312904A (zh) * 2021-05-31 2021-08-27 南京航空航天大学 一种基于抽象语法树的代码片段推荐方法与***
CN113901474B (zh) * 2021-09-13 2022-07-26 四川大学 一种基于函数级代码相似性的漏洞检测方法
CN115268867B (zh) * 2022-07-26 2023-04-07 中国海洋大学 一种抽象语法树裁剪方法
CN115544522B (zh) * 2022-11-28 2023-04-07 北京邮电大学 源码漏洞检测方法、装置、电子设备及存储介质
CN116049835B (zh) * 2023-03-08 2023-06-23 中汽智联技术有限公司 汽车固件的安全漏洞检测方法、设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108268777A (zh) * 2018-01-18 2018-07-10 中国人民大学 一种利用补丁信息进行未知漏洞发现的相似性检测方法
CN108491228A (zh) * 2018-03-28 2018-09-04 清华大学 一种二进制漏洞代码克隆检测方法及***
CN108875366A (zh) * 2018-05-23 2018-11-23 四川大学 一种面向php程序的sql注入行为检测***

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8429628B2 (en) * 2007-12-28 2013-04-23 International Business Machines Corporation System and method for comparing partially decompiled software
CN101894236B (zh) * 2010-07-28 2012-01-11 北京华夏信安科技有限公司 基于摘要语法树和语义匹配的软件同源性检测方法及装置
CN103793652A (zh) * 2012-10-29 2014-05-14 广东电网公司信息中心 一种基于静态分析的应用***代码安全扫描装置
CN103729580A (zh) * 2014-01-27 2014-04-16 国家电网公司 一种检测软件抄袭的方法和装置
KR101694783B1 (ko) * 2014-11-28 2017-01-10 주식회사 파수닷컴 소스 코드의 오류 검출에 있어서 경보 유형 분류 방법, 이를 위한 컴퓨터 프로그램, 그 기록매체
CN105975392A (zh) * 2016-04-29 2016-09-28 国家计算机网络与信息安全管理中心 一种基于抽象语法树的重复代码检测方法及装置
CN108763928B (zh) * 2018-05-03 2020-10-02 北京邮电大学 一种开源软件漏洞分析方法、装置和存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108268777A (zh) * 2018-01-18 2018-07-10 中国人民大学 一种利用补丁信息进行未知漏洞发现的相似性检测方法
CN108491228A (zh) * 2018-03-28 2018-09-04 清华大学 一种二进制漏洞代码克隆检测方法及***
CN108875366A (zh) * 2018-05-23 2018-11-23 四川大学 一种面向php程序的sql注入行为检测***

Also Published As

Publication number Publication date
CN109635569A (zh) 2019-04-16

Similar Documents

Publication Publication Date Title
CN109635569B (zh) 一种漏洞检测方法及装置
CN108763928B (zh) 一种开源软件漏洞分析方法、装置和存储介质
CN111400719B (zh) 基于开源组件版本识别的固件脆弱性判别方法及***
Breitinger et al. Approximate matching: definition and terminology
CN107292170B (zh) Sql注入攻击的检测方法及装置、***
CN107292167B (zh) 基于精简语法树的sql语句安全检测方法
US9032516B2 (en) System and method for detecting malicious script
US20170053121A1 (en) Techniques for correlating vulnerabilities across an evolving codebase
CN103577756B (zh) 基于脚本类型判断的病毒检测方法及装置
US20150207811A1 (en) Vulnerability vector information analysis
KR101874373B1 (ko) 난독화 스크립트에 대한 악성 스크립트 탐지 방법 및 그 장치
CN104615542B (zh) 一种基于函数调用的脆弱性关联分析辅助漏洞挖掘的方法
US20140059684A1 (en) System and method for computer inspection of information objects for shared malware components
KR102095853B1 (ko) 바이러스 데이터베이스 획득 방법 및 기기, 장비, 서버 그리고 시스템
CN111447224A (zh) web漏洞扫描方法及漏洞扫描器
CN113961768B (zh) 敏感词检测方法、装置、计算机设备和存储介质
CN113297580B (zh) 基于代码语义分析的电力信息***安全防护方法及装置
CN111090860A (zh) 一种基于深度学习的代码漏洞检测方法及装置
CN113901474A (zh) 一种基于函数级代码相似性的漏洞检测方法
CN114969762A (zh) 漏洞信息处理方法、服务装置和漏洞检测模块
CN113067792A (zh) 一种xss攻击识别方法、装置、设备及介质
CN112817877B (zh) 异常脚本检测方法、装置、计算机设备和存储介质
Agrawal et al. Detection of global, metamorphic malware variants using control and data flow analysis
CN108171057B (zh) 基于特征匹配的Android平台恶意软件检测方法
CN115688108B (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