CN116401145A - 一种源代码静态分析处理方法及装置 - Google Patents

一种源代码静态分析处理方法及装置 Download PDF

Info

Publication number
CN116401145A
CN116401145A CN202211707410.0A CN202211707410A CN116401145A CN 116401145 A CN116401145 A CN 116401145A CN 202211707410 A CN202211707410 A CN 202211707410A CN 116401145 A CN116401145 A CN 116401145A
Authority
CN
China
Prior art keywords
source code
graph
vulnerability
static analysis
knowledge graph
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
Application number
CN202211707410.0A
Other languages
English (en)
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
North China Electric Power Research Institute Co Ltd
Original Assignee
State Grid Corp of China SGCC
North China Electric Power Research Institute 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, North China Electric Power Research Institute Co Ltd filed Critical State Grid Corp of China SGCC
Priority to CN202211707410.0A priority Critical patent/CN116401145A/zh
Publication of CN116401145A publication Critical patent/CN116401145A/zh
Pending legal-status Critical Current

Links

Images

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/362Software debugging
    • G06F11/3628Software debugging of optimised code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/36Creation of semantic tools, e.g. ontology or thesauri
    • G06F16/367Ontology
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Animal Behavior & Ethology (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种源代码静态分析处理方法及装置,涉及知识图谱技术领域。所述方法包括:获取待分析的源代码图谱;所述源代码图谱是由知识图谱表示的源代码信息;在知识图谱存储数据库中查找是否存在与所述源代码图谱相匹配的知识图谱子图,并根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果;其中,所述知识图谱子图反映源代码信息和漏洞相关信息之间的映射关系。所述装置执行上述方法。本发明实施例提供的源代码静态分析处理方法及装置,能够为源代码静态分析提供可行的“搜索”路径,进而提高源代码审计的检测效率。

Description

一种源代码静态分析处理方法及装置
技术领域
本发明涉及知识图谱技术领域,具体涉及一种源代码静态分析处理方法及装置。
背景技术
源代码检测的手段分为静态分析与动态调试,静态分析又分为人工分析、自动化工具分析以及机器扫描与人工审计相结合的分析方式。静态代码分析是指在不实际执行程序的情况下,对代码语义和行为进行分析,由此找出程序中由于错误的编码导致异常的程序语义或未定义的行为。静态分析不需要等待所有代码编写完毕,也不需要构建运行环境,编写测试用例,能在软件开发流程早期就发现代码中的各种问题。
然而,现代软件系统规模越来越大,代码行数从数万或数十万行规模增长到数千万行,系统复杂度也越来越高,尤其随着面向对象语言的出现,多态、抽象类等场景的出现使得函数调用情况变得愈发复杂。
源代码静态分析技术是对源代码本身的影响进行分析,主要通过模式匹配的方式进行检测,不依赖于用户输入,通过将源代码抽象为层进行处理,能够实现一个成本较低、规模较大的源代码漏洞检测。传统的源代码静态分析技术是需要测试人员同时具备工程研发经验和源代码漏洞检测知识,通过寻找不合理的代码内容来对漏洞进行判定,但是存在人员水平不一导致的准确率有限、误报率高的特点。
发明内容
针对现有技术中的问题,本发明实施例提供一种源代码静态分析处理方法及装置,能够至少部分地解决现有技术中存在的问题。
一方面,本发明提出一种源代码静态分析处理方法,包括:
获取待分析的源代码图谱;所述源代码图谱是由知识图谱表示的源代码信息;
在知识图谱存储数据库中查找是否存在与所述源代码图谱相匹配的知识图谱子图,并根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果;
其中,所述知识图谱子图反映源代码信息和漏洞相关信息之间的映射关系。
其中,所述根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果,包括:
若确定所述查找结果为在知识图谱存储数据库中存在与所述源代码图谱相匹配的知识图谱子图,则确定所述源代码静态分析结果为所述源代码存在漏洞;
若确定所述查找结果为在知识图谱存储数据库中不存在与所述源代码图谱相匹配的知识图谱子图,则确定所述源代码静态分析结果为所述源代码不存在漏洞。
其中,所述源代码静态分析处理方法还包括:
若确定所述源代码存在漏洞,则输出与所述源代码对应的知识图谱子图中的源代码信息和漏洞相关信息。
其中,在所述获取待分析的源代码图谱的步骤之前,所述源代码静态分析处理方法还包括:
构造所述知识图谱子图;所述构造所述知识图谱子图具体包括:
通过抽象语法树表示漏洞源代码文件;所述漏洞源代码文件包括源代码与漏洞依赖关系;
从所述抽象语法树中提取实体和关系信息,并根据所述实体和所述关系信息构造所述知识图谱子图。
其中,在所述构造所述知识图谱子图的步骤之前,所述源代码静态分析处理方法还包括:
获取源代码与漏洞依赖关系。
其中,所述获取源代码与漏洞依赖关系,包括:
从目标漏洞数据库中提取原始数据,并对所述原始数据进行预处理,得到结构化数据;
对源代码的语法结构信息进行解析,并使用抽象语法树表示解析结果;
根据所述结构化数据和所述抽象语法树,构建源代码与漏洞依赖关系,并存储源代码与漏洞依赖关系至漏洞源代码文件中。
一方面,本发明提出一种源代码静态分析处理装置,包括:
获取单元,用于获取待分析的源代码图谱;所述源代码图谱是由知识图谱表示的源代码信息;
确定单元,用于在知识图谱存储数据库中查找是否存在与所述源代码图谱相匹配的知识图谱子图,并根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果;
其中,所述知识图谱子图反映源代码信息和漏洞相关信息之间的映射关系。
再一方面,本发明实施例提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下方法:
获取待分析的源代码图谱;所述源代码图谱是由知识图谱表示的源代码信息;
在知识图谱存储数据库中查找是否存在与所述源代码图谱相匹配的知识图谱子图,并根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果;
其中,所述知识图谱子图反映源代码信息和漏洞相关信息之间的映射关系。
本发明实施例提供一种计算机可读存储介质,包括:
所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如下方法:
获取待分析的源代码图谱;所述源代码图谱是由知识图谱表示的源代码信息;
在知识图谱存储数据库中查找是否存在与所述源代码图谱相匹配的知识图谱子图,并根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果;
其中,所述知识图谱子图反映源代码信息和漏洞相关信息之间的映射关系。
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现如下方法:
获取待分析的源代码图谱;所述源代码图谱是由知识图谱表示的源代码信息;
在知识图谱存储数据库中查找是否存在与所述源代码图谱相匹配的知识图谱子图,并根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果;
其中,所述知识图谱子图反映源代码信息和漏洞相关信息之间的映射关系。
本发明实施例提供的源代码静态分析处理方法及装置,获取待分析的源代码图谱;所述源代码图谱是由知识图谱表示的源代码信息;在知识图谱存储数据库中查找是否存在与所述源代码图谱相匹配的知识图谱子图,并根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果;其中,所述知识图谱子图反映源代码信息和漏洞相关信息之间的映射关系,能够为源代码静态分析提供可行的“搜索”路径,进而提高源代码审计的检测效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1是本发明一实施例提供的源代码静态分析处理方法的流程示意图。
图2是本发明实施例知识图谱子图说明示意图。
图3是本发明另一实施例提供的源代码静态分析处理方法的流程示意图。
图4是本发明一实施例提供的源代码静态分析处理装置的结构示意图。
图5为本发明实施例提供的计算机设备实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
图1是本发明一实施例提供的源代码静态分析处理方法的流程示意图,如图1所示,本发明实施例提供的源代码静态分析处理方法,包括:
步骤S1:获取待分析的源代码图谱;所述源代码图谱是由知识图谱表示的源代码信息。
步骤S2:在知识图谱存储数据库中查找是否存在与所述源代码图谱相匹配的知识图谱子图,并根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果;
其中,所述知识图谱子图反映源代码信息和漏洞相关信息之间的映射关系。
在上述步骤S1中,装置获取待分析的源代码图谱;所述源代码图谱是由知识图谱表示的源代码信息。装置可以是执行该方法的计算机设备等,例如为服务器。本申请技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。源代码信息可以包括源代码中的类名、方法名以及方法主要功能等。知识图谱中的节点表示类名、方法名以及方法主要功能名称;知识图谱中的节点之间的边表示类名、方法名以及方法主要功能名称之间的关联关系。
通过源代码图谱可以直观方便的表述出待分析的源代码的源代码特征。
在上述步骤S2中,装置在知识图谱存储数据库中查找是否存在与所述源代码图谱相匹配的知识图谱子图,并根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果;
其中,所述知识图谱子图反映源代码信息和漏洞相关信息之间的映射关系。可以每构造完成一个知识图谱子图,就将该知识图谱子图存储至知识图谱存储数据库,在该知识图谱存储数据库中可以维护各知识图谱子图,包括修改知识图谱子图中的节点和节点之间的边等。
由于知识图谱子图中包含有源代码信息,即可以反映源代码特征,因此可以通过对知识图谱子图中的源代码信息和待分析的源代码信息进行信息比对的方式,实现图谱匹配的判断。
如图2所示,以漏洞CVEID为例,示出了知识图谱子图的表现形式,通过五元组表达法将一个漏洞中的重要信息如“漏洞名”、“受影响的系统”、“源代码”、“漏洞类型”等实体进行关系关联,在漏洞知识图谱中,源代码中的每一个漏洞都包含了造成该漏洞代码以及漏洞影响、漏洞特性等信息。
所述根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果,包括:
若确定所述查找结果为在知识图谱存储数据库中存在与所述源代码图谱相匹配的知识图谱子图,则确定所述源代码静态分析结果为所述源代码存在漏洞;
若确定所述查找结果为在知识图谱存储数据库中不存在与所述源代码图谱相匹配的知识图谱子图,则确定所述源代码静态分析结果为所述源代码不存在漏洞。如果查询结果本身为空节点或者空关系,则表示传入的源代码不存在漏洞,否则表示该系统的源代码存在漏洞。
所述源代码静态分析处理方法还包括:
若确定所述源代码存在漏洞,则输出与所述源代码对应的知识图谱子图中的源代码信息和漏洞相关信息。即可以输出上述图2中的源代码信息和漏洞相关信息。
在所述获取待分析的源代码图谱的步骤之前,所述源代码静态分析处理方法还包括:
构造所述知识图谱子图;所述构造所述知识图谱子图具体包括:
通过抽象语法树表示漏洞源代码文件;所述漏洞源代码文件包括源代码与漏洞依赖关系;
从所述抽象语法树中提取实体和关系信息,并根据所述实体和所述关系信息构造所述知识图谱子图。可以利用抽象语法树的深度遍历算法,从抽象语法树中提取实体、关系信息,构建源代码图谱,进而抽取构造源代码-漏洞子图,即知识图谱子图。
在所述构造所述知识图谱子图的步骤之前,所述源代码静态分析处理方法还包括:
获取源代码与漏洞依赖关系。所述获取源代码与漏洞依赖关系,包括:
从目标漏洞数据库中提取原始数据,并对所述原始数据进行预处理,得到结构化数据;目标漏洞数据库可以包括漏洞数据库CVE、NVD以及同类型系统源代码静态审计报告等。
对原始数据进行预处理,可以包括数据清洗、数据分类等。
对源代码的语法结构信息进行解析,并使用抽象语法树表示解析结果;使用抽象语法树的方式采用自顶向下的方式,将源代码抽象成一种树状结构,抽象语法树的根节点、中间节点以及叶子节点分别代表代码中的类名、方法名以及方法主要功能。
根据所述结构化数据和所述抽象语法树,构建源代码与漏洞依赖关系,并存储源代码与漏洞依赖关系至漏洞源代码文件中。本体是实体存在形式的描述,往往表示为一组概念定义和概念之间的层级关系,本体是对实体以及实体间的关系的一种抽象性,此源代码-漏洞知识图谱中,选择五元组来表达本体,O={C,H,P,A,I},其中C为概念集合,包含“待检测的系统”、“待测的系统厂家等概念”,H为概念上下位关系集合;P为属性集合,如“系统版本号”、“受影响系统的属性”,A为规则集合;I是实例集合,用来描述实例-属性-值,如造成源代码危害的具体漏洞信息。
如图3所示,对本发明实施例提供的源代码静态分析处理方法进行说明如下:
1、源代码-漏洞依赖关系提取:
知识图谱的构建通常包括知识抽取、知识融合、质量控制等基本步骤。实体抽取和关系抽取是知识抽取的典型工作。本方法采用源代码-漏洞知识图谱,首先是源代码-漏洞依赖关系的抽取。
第一步自然语言处理:从常见的漏洞数据库CVE、NVD以及同类型系统源代码静态审计报告中提取的同类的数据通过数据清洗、数据分类等数据预处理得到结构化数据。
第二步知识图谱识别体系构建:面向以源代码为核心的知识图谱实体识别体系,需要将源代码进行解析语法结构信息,使用抽象语法树的方式采用自顶向下的方式,将源代码抽象成一种树状结构,抽象语法树的根节点、中间节点以及叶子节点分别代表代码中的类名、方法名以及方法主要功能。
第三步源代码-漏洞知识谱系关系抽取:本体是实体存在形式的描述,往往表示为一组概念定义和概念之间的层级关系,本体是对实体以及实体间的关系的一种抽象性,此源代码-漏洞知识图谱中,选择五元组来表达本体O={C,H,P,A,I},其中C为概念集合,包含“待检测的系统”、“待测的系统厂家等概念”,H为概念上下位关系集合;P为属性集合,如“系统版本号”、“受影响系统的属性”,A为规则集合;I是实例集合,用来描述实例-属性-值,如造成源代码危害的具体漏洞信息。
2、源代码-漏洞子图构造:
按照上述步骤中,存储源代码与漏洞依赖关系至漏洞源代码文件中,将漏洞源代码文件处理成抽象语法树,利用抽象语法树的深度遍历算法,从抽象语法树中提取实体、关系信息,构建源代码图谱,进而抽取构造源代码-漏洞子图,在源代码静态分析领域,通过五元组表达法将一个漏洞中的重要信息如“漏洞名”、“受影响的系统”、“源代码”、“漏洞类型”等实体进行关系关联,以漏洞CVEID为例,展现实体之间的关联关系,如图2所示。在漏洞知识图谱中,源代码中的每一个漏洞都包含了造成该漏洞代码以及漏洞影响、漏洞特性等信息。此步骤将抽象语法树抽取生成源代码图谱后存入知识图谱存储数据库。
3、源代码-漏洞知识图谱应用
将待分析的源代码图谱与图谱数据库里的源代码-漏洞图谱相匹配,如果结果本身为空节点或者空关系,则表示传入的源代码不存在漏洞,否则表示该系统的源代码存在漏洞,并同步返回漏洞信息和具体代码信息,以此实现基于知识图谱的源代码静态分析。
本发明提出了一种基于知识谱图的源代码静态分析方法,利用知识图谱善于表达实体依赖关系、挖掘实体间的隐藏语义信息的优势,将知识图谱运用到软件安全领域中,可以理清漏洞的形成原因,分析特征项之间的复杂多样关系等。通过构建“源代码-漏洞”知识图谱,使用统一的规范和标准将源代码和漏洞进行关联,能够为源代码静态分析提供可行的“搜索”路径。此外,通过引入知识谱图,能够帮助源代码测试者在构建完整的知识图谱上发掘新的知识和事实,这些信息是当前源代码检测过程中使用传统知识库所不具备的。
本发明实施例提供的源代码静态分析处理方法的有益效果如下:
通过图谱的方式能够有效分析源代码漏洞的成因,特征项之间的复杂多样化的关联关系,并且可以直观的显示出程序中与漏洞相关的代码之间的依赖关系。
使用统一的规范和标准将源代码和漏洞进行关联,能够为源代码静态分析提供可行的“搜索”路径,有效提高源代码审计的检测效率。
本发明实施例提供的源代码静态分析处理方法,获取待分析的源代码图谱;所述源代码图谱是由知识图谱表示的源代码信息;在知识图谱存储数据库中查找是否存在与所述源代码图谱相匹配的知识图谱子图,并根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果;其中,所述知识图谱子图反映源代码信息和漏洞相关信息之间的映射关系,能够为源代码静态分析提供可行的“搜索”路径,进而提高源代码审计的检测效率。
进一步地,所述根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果,包括:
若确定所述查找结果为在知识图谱存储数据库中存在与所述源代码图谱相匹配的知识图谱子图,则确定所述源代码静态分析结果为所述源代码存在漏洞;可参照上述说明,不再赘述。
若确定所述查找结果为在知识图谱存储数据库中不存在与所述源代码图谱相匹配的知识图谱子图,则确定所述源代码静态分析结果为所述源代码不存在漏洞。可参照上述说明,不再赘述。
进一步地,所述源代码静态分析处理方法还包括:
若确定所述源代码存在漏洞,则输出与所述源代码对应的知识图谱子图中的源代码信息和漏洞相关信息。可参照上述说明,不再赘述。
进一步地,在所述获取待分析的源代码图谱的步骤之前,所述源代码静态分析处理方法还包括:
构造所述知识图谱子图;所述构造所述知识图谱子图具体包括:
通过抽象语法树表示漏洞源代码文件;所述漏洞源代码文件包括源代码与漏洞依赖关系;可参照上述说明,不再赘述。
从所述抽象语法树中提取实体和关系信息,并根据所述实体和所述关系信息构造所述知识图谱子图。可参照上述说明,不再赘述。
进一步地,在所述构造所述知识图谱子图的步骤之前,所述源代码静态分析处理方法还包括:
获取源代码与漏洞依赖关系。可参照上述说明,不再赘述。
进一步地,所述获取源代码与漏洞依赖关系,包括:
从目标漏洞数据库中提取原始数据,并对所述原始数据进行预处理,得到结构化数据;可参照上述说明,不再赘述。
对源代码的语法结构信息进行解析,并使用抽象语法树表示解析结果;可参照上述说明,不再赘述。
根据所述结构化数据和所述抽象语法树,构建源代码与漏洞依赖关系,并存储源代码与漏洞依赖关系至漏洞源代码文件中。可参照上述说明,不再赘述。
图4是本发明一实施例提供的源代码静态分析处理装置的结构示意图,如图4所示,本发明实施例提供的源代码静态分析处理装置,包括获取单元401和确定单元402,其中:
获取单元401用于获取待分析的源代码图谱;所述源代码图谱是由知识图谱表示的源代码信息;确定单元402用于在知识图谱存储数据库中查找是否存在与所述源代码图谱相匹配的知识图谱子图,并根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果;其中,所述知识图谱子图反映源代码信息和漏洞相关信息之间的映射关系。
具体的,装置中的获取单元401用于获取待分析的源代码图谱;所述源代码图谱是由知识图谱表示的源代码信息;确定单元402用于在知识图谱存储数据库中查找是否存在与所述源代码图谱相匹配的知识图谱子图,并根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果;其中,所述知识图谱子图反映源代码信息和漏洞相关信息之间的映射关系。
本发明实施例提供的源代码静态分析处理装置,获取待分析的源代码图谱;所述源代码图谱是由知识图谱表示的源代码信息;在知识图谱存储数据库中查找是否存在与所述源代码图谱相匹配的知识图谱子图,并根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果;其中,所述知识图谱子图反映源代码信息和漏洞相关信息之间的映射关系,能够为源代码静态分析提供可行的“搜索”路径,进而提高源代码审计的检测效率。
进一步地,所述确定单元402具体用于:
若确定所述查找结果为在知识图谱存储数据库中存在与所述源代码图谱相匹配的知识图谱子图,则确定所述源代码静态分析结果为所述源代码存在漏洞;
若确定所述查找结果为在知识图谱存储数据库中不存在与所述源代码图谱相匹配的知识图谱子图,则确定所述源代码静态分析结果为所述源代码不存在漏洞。
进一步地,所述源代码静态分析处理装置还用于:
若确定所述源代码存在漏洞,则输出与所述源代码对应的知识图谱子图中的源代码信息和漏洞相关信息。
进一步地,在所述获取待分析的源代码图谱的步骤之前,所述源代码静态分析处理装置还用于:
构造所述知识图谱子图;所述源代码静态分析处理装置还具体用于:
通过抽象语法树表示漏洞源代码文件;所述漏洞源代码文件包括源代码与漏洞依赖关系;
从所述抽象语法树中提取实体和关系信息,并根据所述实体和所述关系信息构造所述知识图谱子图。
进一步地,在所述构造所述知识图谱子图的步骤之前,所述源代码静态分析处理装置还用于:
获取源代码与漏洞依赖关系。
进一步地,所述源代码静态分析处理装置还具体用于:
从目标漏洞数据库中提取原始数据,并对所述原始数据进行预处理,得到结构化数据;
对源代码的语法结构信息进行解析,并使用抽象语法树表示解析结果;
根据所述结构化数据和所述抽象语法树,构建源代码与漏洞依赖关系,并存储源代码与漏洞依赖关系至漏洞源代码文件中。
本发明实施例提供源代码静态分析处理装置的实施例具体可以用于执行上述各方法实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
图5为本发明实施例提供的计算机设备实体结构示意图,如图5所示,所述计算机设备包括:存储器501、处理器502及存储在存储器501上并可在处理器502上运行的计算机程序,所述处理器502执行所述计算机程序时实现如下方法:
获取待分析的源代码图谱;所述源代码图谱是由知识图谱表示的源代码信息;
在知识图谱存储数据库中查找是否存在与所述源代码图谱相匹配的知识图谱子图,并根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果;
其中,所述知识图谱子图反映源代码信息和漏洞相关信息之间的映射关系。
本实施例公开一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现如下方法:
获取待分析的源代码图谱;所述源代码图谱是由知识图谱表示的源代码信息;
在知识图谱存储数据库中查找是否存在与所述源代码图谱相匹配的知识图谱子图,并根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果;
其中,所述知识图谱子图反映源代码信息和漏洞相关信息之间的映射关系。
本实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如下方法:
获取待分析的源代码图谱;所述源代码图谱是由知识图谱表示的源代码信息;
在知识图谱存储数据库中查找是否存在与所述源代码图谱相匹配的知识图谱子图,并根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果;
其中,所述知识图谱子图反映源代码信息和漏洞相关信息之间的映射关系。
本发明实施例与现有技术中的技术方案相比,获取待分析的源代码图谱;所述源代码图谱是由知识图谱表示的源代码信息;在知识图谱存储数据库中查找是否存在与所述源代码图谱相匹配的知识图谱子图,并根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果;其中,所述知识图谱子图反映源代码信息和漏洞相关信息之间的映射关系,能够为源代码静态分析提供可行的“搜索”路径,进而提高源代码审计的检测效率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在本说明书的描述中,参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种源代码静态分析处理方法,其特征在于,包括:
获取待分析的源代码图谱;所述源代码图谱是由知识图谱表示的源代码信息;
在知识图谱存储数据库中查找是否存在与所述源代码图谱相匹配的知识图谱子图,并根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果;
其中,所述知识图谱子图反映源代码信息和漏洞相关信息之间的映射关系。
2.根据权利要求1所述的源代码静态分析处理方法,其特征在于,所述根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果,包括:
若确定所述查找结果为在知识图谱存储数据库中存在与所述源代码图谱相匹配的知识图谱子图,则确定所述源代码静态分析结果为所述源代码存在漏洞;
若确定所述查找结果为在知识图谱存储数据库中不存在与所述源代码图谱相匹配的知识图谱子图,则确定所述源代码静态分析结果为所述源代码不存在漏洞。
3.根据权利要求2所述的源代码静态分析处理方法,其特征在于,所述源代码静态分析处理方法还包括:
若确定所述源代码存在漏洞,则输出与所述源代码对应的知识图谱子图中的源代码信息和漏洞相关信息。
4.根据权利要求1所述的源代码静态分析处理方法,其特征在于,在所述获取待分析的源代码图谱的步骤之前,所述源代码静态分析处理方法还包括:
构造所述知识图谱子图;所述构造所述知识图谱子图具体包括:
通过抽象语法树表示漏洞源代码文件;所述漏洞源代码文件包括源代码与漏洞依赖关系;
从所述抽象语法树中提取实体和关系信息,并根据所述实体和所述关系信息构造所述知识图谱子图。
5.根据权利要求4所述的源代码静态分析处理方法,其特征在于,在所述构造所述知识图谱子图的步骤之前,所述源代码静态分析处理方法还包括:
获取源代码与漏洞依赖关系。
6.根据权利要求5所述的源代码静态分析处理方法,其特征在于,所述获取源代码与漏洞依赖关系,包括:
从目标漏洞数据库中提取原始数据,并对所述原始数据进行预处理,得到结构化数据;
对源代码的语法结构信息进行解析,并使用抽象语法树表示解析结果;
根据所述结构化数据和所述抽象语法树,构建源代码与漏洞依赖关系,并存储源代码与漏洞依赖关系至漏洞源代码文件中。
7.一种源代码静态分析处理装置,其特征在于,包括:
获取单元,用于获取待分析的源代码图谱;所述源代码图谱是由知识图谱表示的源代码信息;
确定单元,用于在知识图谱存储数据库中查找是否存在与所述源代码图谱相匹配的知识图谱子图,并根据查找结果确定与源代码图谱对应源代码的源代码静态分析结果;
其中,所述知识图谱子图反映源代码信息和漏洞相关信息之间的映射关系。
8.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6任一所述方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至6任一所述方法。
10.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1至6任一所述方法。
CN202211707410.0A 2022-12-27 2022-12-27 一种源代码静态分析处理方法及装置 Pending CN116401145A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211707410.0A CN116401145A (zh) 2022-12-27 2022-12-27 一种源代码静态分析处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211707410.0A CN116401145A (zh) 2022-12-27 2022-12-27 一种源代码静态分析处理方法及装置

Publications (1)

Publication Number Publication Date
CN116401145A true CN116401145A (zh) 2023-07-07

Family

ID=87016641

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211707410.0A Pending CN116401145A (zh) 2022-12-27 2022-12-27 一种源代码静态分析处理方法及装置

Country Status (1)

Country Link
CN (1) CN116401145A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117235746A (zh) * 2023-11-15 2023-12-15 深圳海云安网络安全技术有限公司 一种基于多维ast融合检测的源代码安全管控平台

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117235746A (zh) * 2023-11-15 2023-12-15 深圳海云安网络安全技术有限公司 一种基于多维ast融合检测的源代码安全管控平台
CN117235746B (zh) * 2023-11-15 2024-03-01 深圳海云安网络安全技术有限公司 一种基于多维ast融合检测的源代码安全管控平台

Similar Documents

Publication Publication Date Title
CN110245496B (zh) 一种源代码漏洞检测方法及检测器和其训练方法及系统
CN109697162B (zh) 一种基于开源代码库的软件缺陷自动检测方法
CN110737899B (zh) 一种基于机器学习的智能合约安全漏洞检测方法
US10452907B2 (en) System and method for global identification in a collection of documents
US20160275180A1 (en) System and method for storing and searching data extracted from text documents
Bockermann et al. Learning sql for database intrusion detection using context-sensitive modelling
Delfmann et al. The generic model query language GMQL–Conceptual specification, implementation, and runtime evaluation
CN112733156B (zh) 基于代码属性图的软件脆弱性智能检测方法、系统及介质
KR100995861B1 (ko) 온톨로지 스키마와 결합된 개체명 사전 및 마이닝 규칙을 이용한 용어의 개체명 결정모듈 및 방법
Nagy et al. A static code smell detector for SQL queries embedded in Java code
US20140019941A1 (en) Data selection
CN104866764B (zh) 一种基于对象引用图的Android手机恶意软件检测方法
CN109408385B (zh) 一种基于缺陷规则和分类反馈的缺陷发现方法
CN116401145A (zh) 一种源代码静态分析处理方法及装置
CN111932174A (zh) 货运监管异常信息获取方法、装置、服务器及存储介质
Badreddin et al. Exploring a model-oriented and executable syntax for UML attributes
Petermann et al. Graph mining for complex data analytics
CN110580170B (zh) 软件性能风险的识别方法及装置
US8166453B2 (en) Method and system for inconsistency resolution with cycle detection in a model-driven software environment
CN110989991B (zh) 检测应用程序中源代码克隆开源软件的方法及系统
CN111143448A (zh) 一种知识库构建方法
Sun et al. A scenario model aggregation approach for mobile app requirements evolution based on user comments
CN115438341A (zh) 提取代码循环计数器的方法、装置、存储介质和电子设备
Komendantskaya et al. Proof mining with dependent types
CN112115125B (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