CN117235746B - 一种基于多维ast融合检测的源代码安全管控平台 - Google Patents

一种基于多维ast融合检测的源代码安全管控平台 Download PDF

Info

Publication number
CN117235746B
CN117235746B CN202311522730.3A CN202311522730A CN117235746B CN 117235746 B CN117235746 B CN 117235746B CN 202311522730 A CN202311522730 A CN 202311522730A CN 117235746 B CN117235746 B CN 117235746B
Authority
CN
China
Prior art keywords
code
module
source code
information
codes
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
CN202311522730.3A
Other languages
English (en)
Other versions
CN117235746A (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.)
Shenzhen Secidea Network Security Technology Co ltd
Original Assignee
Shenzhen Secidea Network 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 Shenzhen Secidea Network Security Technology Co ltd filed Critical Shenzhen Secidea Network Security Technology Co ltd
Priority to CN202311522730.3A priority Critical patent/CN117235746B/zh
Publication of CN117235746A publication Critical patent/CN117235746A/zh
Application granted granted Critical
Publication of CN117235746B publication Critical patent/CN117235746B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于多维AST融合检测的源代码安全管控平台,包括:第一分析模块,用于对源代码基于多维AST融合检测技术进行静态分析,得到第一分析结果;转换模块,用于将源代码进行转换,得到转换代码;第二分析模块,用于对转换代码进行动态分析,基于源代码与转换代码之间的映射关系得到第二分析结果;预警模块,用于根据第一分析结果及第二分析结果,确定代码漏洞位置并发出预警提示。提出基于多维AST融合检测技术,对源代码进行静态分析及动态分析,提高了漏洞代码检测的准确性,准确确定漏洞位置,实现源代码安全管控。

Description

一种基于多维AST融合检测的源代码安全管控平台
技术领域
本发明涉及代码管理技术领域,特别涉及一种基于多维AST融合检测的源代码安全管控平台。
背景技术
目前,在软件开发过程中,涉及到数量庞大的代码,这些代码包含大量第三方通用公共代码以及自研发代码,在为项目开发提供便捷的代码支持的同时,也带来了一定的安全风险,如果在源代码中存在恶意代码,后门或者漏洞,那么应用该源代码的项目易受到相关攻击的威胁,因此需要对源代码进行安全管控。
现有技术中,基于静态分析的漏洞代码检测,只对代码本身进行静态分析,无法准确确定漏洞位置,无法实现源代码安全管控。
发明内容
本发明旨在至少一定程度上解决上述技术中的技术问题之一。为此,本发明的目的在于提出一种基于多维AST融合检测的源代码安全管控平台,提出基于多维AST融合检测技术,对源代码进行静态分析及动态分析,提高了漏洞代码检测的准确性,准确确定漏洞位置,实现源代码安全管控。
为达到上述目的,本发明实施例提出了一种基于多维AST融合检测的源代码安全管控平台,包括:
第一分析模块,用于对源代码基于多维AST融合检测技术进行静态分析,得到第一分析结果;
转换模块,用于将源代码进行转换,得到转换代码;
第二分析模块,用于对转换代码进行动态分析,基于源代码与转换代码之间的映射关系得到第二分析结果;
预警模块,用于根据第一分析结果及第二分析结果,确定代码漏洞位置并发出预警提示。
根据本发明的一些实施例,所述第一分析模块,包括:
第一构建模块,用于构建源代码数据库;
第二构建模块,用于根据源代码数据库构建代码安全知识图谱;
第一确定模块,用于对源代码根据代码安全知识图谱进行静态分析,确定第一分析结果。
根据本发明的一些实施例,所述第一构建模块,包括:
爬取模块,用于基于爬取技术对互联网中的开源项目框架进行高速爬取,根据爬取到的数据构建初始数据库;
预处理模块,用于对初始数据库进行数据预处理,去除异常数据及不完整数据,得到源代码数据库。
根据本发明的一些实施例,所述第二构建模块,包括:
第二确定模块,用于对源代码数据库进行数据提取,确定若干条漏洞源代码;
处理模块,用于:
对每条漏洞源代码进行词法和语法解析,处理成抽象语法树;
根据抽象语法树定义构建代码安全知识图谱的实体类型信息和实体间关系信息;
根据实体类型信息和实体间关系信息基于代码图谱构建算法构建代码安全知识图谱。
根据本发明的一些实施例,所述第二确定模块,包括:
第三分析模块,用于对源代码数据库进行分析,确定程序关系图;
匹配模块,用于将所述程序关系图与预设关系逻辑数据库中的关系逻辑数据进行匹配,确定程序关系图中不匹配的局部区域,作为漏洞源代码。
根据本发明的一些实施例,所述第一确定模块,包括:
识别模块,用于:
基于代码安全知识图谱对源代码进行识别,得到识别信息;所述识别信息包括源代码中的安全漏洞、弱点和潜在风险、代码位置及问题描述;
根据识别信息确定第一分析结果。
根据本发明的一些实施例,所述转换模块,包括:
第三确定模块,用于确定源代码的属性信息,所述属性信息包括编程语言及执行环境;
执行模块,用于:
根据源代码进行解析,生成抽象语法树;
根据属性信息将抽象语法树转换为动态执行所需的中间代码;
将中间代码逐条解释执行,得到解释执行代码;
将解释执行代码编译成可执行的机器码,得到转换代码。
根据本发明的一些实施例,所述第二分析模块,包括:
运行模块,用于:
运行转换代码;
在运行过程中,记录和监控程序的状态信息;所述状态信息包括变量的取值、函数的调用和返回信息;
在运行过程中,采集转换代码的运行信息;所述运行信息包括运行时间、内存使用情况及函数调用次数;
在运行过程中,对转换代码的运行进行异常检测,采集检测数据;所述检测数据包括空指针检查、异常处理及边界检查;
生成模块,用于:
根据状态信息、运行信息及检测数据生成对转换代码的动态分析结果;
基于源代码与转换代码之间的映射关系,确定源代码中对应位置的动态分析结果,进而得到第二分析结果。
根据本发明的一些实施例,所述预警模块,包括:
验证模块,用于根据第一分析结果及第二分析结果进行信息验证,对于两者一致的信息进行保留,得到交集信息;
第四确定模块,用于根据交集信息确定代码漏洞位置并发出预警提示。
根据本发明的一些实施例,还包括,漏洞修复模块,用于:
获取漏洞位置的参数信息;所述参数信息包括漏洞位置对应的组件名称、漏洞等级、组件当前版本及组件可升级的新版本;
检测源代码的编程语言;
基于源代码的编程语言及组件可升级的新版本,采用代码适配的方式对漏洞位置对应的组件进行组件升级。
本发明提出一种基于多维AST融合检测的源代码安全管控平台,基于多维AST融合检测技术,对源代码进行静态分析及动态分析,提高了漏洞代码检测的准确性,准确确定漏洞位置,实现源代码安全管控。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是根据本发明一个实施例的一种基于多维AST融合检测的源代码安全管控平台的框图;
图2是根据本发明一个实施例的第一分析模块的框图;
图3是根据本发明一个实施例的第二分析模块的框图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
如图1所示,本发明实施例提出了一种基于多维AST融合检测的源代码安全管控平台,包括:
第一分析模块,用于对源代码基于多维AST融合检测技术进行静态分析,得到第一分析结果;
转换模块,用于将源代码进行转换,得到转换代码;
第二分析模块,用于对转换代码进行动态分析,基于源代码与转换代码之间的映射关系得到第二分析结果;
预警模块,用于根据第一分析结果及第二分析结果,确定代码漏洞位置并发出预警提示。
上述技术方案的工作原理:该实施例中,多维AST融合检测,是一种基于多维抽象语法树(Abstract Syntax Tree)的检测方法。抽象语法树是在编译器或解释器中使用的一种数据结构,用于表示源代码的结构和语法。多维AST融合检测方法首先会构建源代码的多个维度的抽象语法树,包括语法层面、语义层面、控制流层面等。然后,将这些不同维度的抽象语法树进行融合,形成一个综合的抽象语法树。通过分析融合后的抽象语法树,可以进行多维度的代码检测和分析。综合考虑不同层面的代码特征,并结合各种语法和语义规则进行检测,从而提高代码分析的精确性和全面性。
该实施例中,第一分析结果为基于对源代码基于多维AST融合检测技术进行静态分析,得到的分析结果。
该实施例中,在转换模块将源代码使用了多维AST融合检测技术,进行转换,得到转换代码,转换代码为动态代码。动态代码是指在程序运行时才会执行的代码,与静态代码相对。静态代码在编译期间就可以确定其行为,而动态代码的行为是在运行时动态确定的。动态代码可以包括以下几个方面:动态加载:动态加载是指在程序运行时根据需要动态地加载和执行代码。通常使用反射机制或动态类加载器来实现。动态加载的代码可以根据条件选择性地加载和执行,提供更大的灵活性和扩展性。回调函数:回调函数是一种常见的动态代码机制。它允许在程序执行过程中将某个函数作为参数传递给其他函数,并在合适的时机执行。回调函数的使用可以使程序按照特定的逻辑进行流程控制,增加代码的灵活性和可复用性。动态绑定:动态绑定是指在程序运行时根据对象的实际类型来确定调用的方法。通常与多态的概念相关联。通过动态绑定,程序可以针对不同对象调用其特定实现的方法,实现更灵活的代码逻辑。插件机制:插件机制允许在程序运行时动态地加载和卸载插件,扩展程序的功能。插件机制常用于软件的扩展和定制化,在不修改主程序代码的情况下添加新功能,增加程序的可扩展性和灵活性。基于动态代码可以根据运行时的条件和需求来灵活地决定代码的行为,增加程序的可扩展性和可定制性,进而便于进一步进行代码漏洞检测。
该实施例中,源代码与转换代码之间的映射关系,表示转换代码与源代码的位置对应关系,在确定转换代码中的漏洞代码时,基于映射关系,确定源代码中的漏洞代码的位置。
该实施例中,根据第一分析结果及第二分析结果从静态和动态的角度对源代码进行检测,确定第一分析结果与第二分析结果中相同的内容,即交集数据,作为最终的检测数据,根据最终的检测数据确定代码漏洞位置并发出预警提示。
上述技术方案的有益效果:提出基于多维AST融合检测技术,对源代码进行静态分析及动态分析,提高了漏洞代码检测的准确性,准确确定漏洞位置,实现源代码安全管控。
如图2所示,根据本发明的一些实施例,所述第一分析模块,包括:
第一构建模块,用于构建源代码数据库;
第二构建模块,用于根据源代码数据库构建代码安全知识图谱;
第一确定模块,用于对源代码根据代码安全知识图谱进行静态分析,确定第一分析结果。
上述技术方案的工作原理:该实施例中,源代码数据库为通过收集各种源代码整理得到的数据库。
该实施例中,代码安全知识图谱为对源代码数据库进行数据整体,构建的知识网络。
上述技术方案的有益效果:基于构建代码安全知识图谱对源代码进行静态分析,便于准确确定第一分析结果。
根据本发明的一些实施例,所述第一构建模块,包括:
爬取模块,用于基于爬取技术对互联网中的开源项目框架进行高速爬取,根据爬取到的数据构建初始数据库;
预处理模块,用于对初始数据库进行数据预处理,去除异常数据及不完整数据,得到源代码数据库。
上述技术方案的工作原理及有益效果:爬取模块,用于基于爬取技术对互联网中的开源项目框架进行高速爬取,根据爬取到的数据构建初始数据库;预处理模块,用于对初始数据库进行数据预处理,去除异常数据及不完整数据,便于准确得到源代码数据库。
根据本发明的一些实施例,所述第二构建模块,包括:
第二确定模块,用于对源代码数据库进行数据提取,确定若干条漏洞源代码;
处理模块,用于:
对每条漏洞源代码进行词法和语法解析,处理成抽象语法树;
根据抽象语法树定义构建代码安全知识图谱的实体类型信息和实体间关系信息;
根据实体类型信息和实体间关系信息基于代码图谱构建算法构建代码安全知识图谱。
上述技术方案的工作原理:该实施例中,对源代码数据库进行数据提取,确定若干条漏洞源代码,便于筛选出需要的目标数据,减少数据处理量,根据漏洞源代码建立代码安全知识图谱。
该实施例中,对每条漏洞源代码进行词法和语法解析,处理成抽象语法树,包括:词法解析:将源代码分割成一个个的词素或标记,例如变量名、关键字、运算符等。这一步是通过词法分析器(Lexer)实现的。语法解析:根据编程语言的语法规则,将词素序列转化为语法树。这一步是通过语法解析器(Parser)实现的。根据语法规则,解析器会生成一棵抽象语法树(AST)。
该实施例中,实体类型信息包括文件(File):表示源代码文件。类(Class:表示代码中的类或对象。方法(Method):表示类中的方法或函数。变量(Variable):表示方法或函数中的变量。常量(Constant):表示代码中的常量值。运算符(Operator):表示代码中的运算符。控制结构(Control Structure:表示条件语句、循环语句等控制结构。注释(Comment)表示代码中的注释。实体间关系信息包括包含关系(Containment):文件包含类、方法之间的包含关系。继承关系(Inheritance):类与类之间的继承关系。调用关系(Invocation):方法或函数与方法或函数之间的调用关系。引用关系(Reference):变量引用其他变量或常量的关系。定义关系(Definition):变量或方法的定义关系。赋值关系(Assignment):变量的赋值关系。控制流关系(Control Flow):控制结构中的条件和循环控制流关系。注释关系(Annotation):注释与注释之间、注释与代码实体之间的关系。
该实施例中,根据实体类型信息和实体间关系信息基于代码图谱构建算法构建代码安全知识图谱,包括:
遍历AST,根据实体类型信息(文件、类、方法、变量等),将每个实体作为节点加入代码安全知识图谱。
建立节点关系:遍历AST,根据实体间关系信息(包含关系、继承关系、调用关系等),建立节点之间的关系边。
拓展节点关系:根据具体的安全需求,可以额外对代码进行分析,发现更多的关系并添加到知识图谱中。例如,根据数据流分析找到变量引用关系、根据控制流分析找到条件控制流关系等。
优化图谱结构:对生成的知识图谱进行优化,去除冗余的节点和关系,简化图谱结构,提高图谱的查询效率。
根据抽象语法树的结构,将每个代码实体(类、方法、变量等)作为图谱中的节点,不同的关系作为图谱中的边。通过构建这样的代码安全知识图谱,可以帮助理解代码实体之间的关联,发现潜在的安全问题,进行漏洞检测、修复和安全分析等工作。建立代码安全知识图谱也需要充分理解实体类型信息和实体间关系信息的含义,以及进行合理的抽象和建模,借助自然语言处理、机器学习等技术进行语义理解和关系抽取,以建立更精确和准确的知识表示。
上述技术方案的有益效果:便于准确的构建代码安全知识图谱。
根据本发明的一些实施例,所述第二确定模块,包括:
第三分析模块,用于对源代码数据库进行分析,确定程序关系图;
匹配模块,用于将所述程序关系图与预设关系逻辑数据库中的关系逻辑数据进行匹配,确定程序关系图中不匹配的局部区域,作为漏洞源代码。
上述技术方案的工作原理:该实施例中,程序关系图表示源代码数据库中每条代码之间的关联关系的示意图。程序关系图包括调用关系:分析代码中的函数或方法调用,建立调用关系。例如,当一个函数调用了另一个函数时,可以确定它们之间存在调用关系。继承关系:对于面向对象的编程语言,可以通过类的继承关系来确定代码之间的继承关系。当一个类继承自另一个类时,可以确定它们之间存在继承关系。引用关系:分析代码中的变量或对象的引用和使用情况。当一个代码实体引用了另一个实体时,可以确定它们之间存在引用关系。例如,当一个变量使用了另一个变量的值时,可以确定它们之间存在引用关系。数据流关系:分析代码中数据的传递和流动情况。当一个代码实体产生数据,并被另一个实体接收时,可以确定它们之间存在数据流关系。控制流关系:分析代码中的条件判断和循环结构。当一个代码实体依赖于另一个实体的执行结果来进行控制流的决策时,可以确定它们之间存在控制流关系。文件依赖关系:分析代码中的文件引用和依赖关系。当一个代码文件引用了另一个文件中的代码或资源时,可以确定它们之间存在文件依赖关系。基于代码注释、命名规范和项目文档可以辅助分析代码之间的关联关系。
该实施例中,预设关系逻辑数据库为包括预设的正确的各条代码之间的关联关系的数据库。关系逻辑数据表示各条代码之间的关联关系。
该实施例中,将所述程序关系图与预设关系逻辑数据库中的关系逻辑数据进行匹配,确定程序关系图中不匹配的局部区域,表示程序关系图中对应的代码存在漏洞,因此作为漏洞源代码。
上述技术方案的有益效果:对源代码数据库进行分析,确定程序关系图,建立各条代码之间的关联关系,与预设关系逻辑数据库中的关系逻辑数据进行匹配,判断程序关系图中各条代码之间的关联关系是否准确,进而便于准确确定漏洞源代码。
根据本发明的一些实施例,所述第一确定模块,包括:
识别模块,用于:
基于代码安全知识图谱对源代码进行识别,得到识别信息;所述识别信息包括源代码中的安全漏洞、弱点和潜在风险、代码位置及问题描述;
根据识别信息确定第一分析结果。
上述技术方案的工作原理及有益效果:识别模块,基于代码安全知识图谱对源代码进行识别,得到识别信息;所述识别信息包括源代码中的安全漏洞、弱点和潜在风险、代码位置及问题描述;根据识别信息准确确定第一分析结果。
根据本发明的一些实施例,所述转换模块,包括:
第三确定模块,用于确定源代码的属性信息,所述属性信息包括编程语言及执行环境;
执行模块,用于:
根据源代码进行解析,生成抽象语法树;
根据属性信息将抽象语法树转换为动态执行所需的中间代码;
将中间代码逐条解释执行,得到解释执行代码;
将解释执行代码编译成可执行的机器码,得到转换代码。
上述技术方案的工作原理:该实施例中,根据属性信息将抽象语法树转换为动态执行所需的中间代码,包括:AST遍历:通过遍历AST,逐个处理AST节点,对每个节点进行相应的转换操作。表达式转换:对于表达式节点,根据编程语言和执行环境,将其转换为对应的中间代码。例如,将算术表达式转换为中间代码指令。控制流转换:对于控制流节点(如if语句、循环语句),根据编程语言和执行环境,将其转换为中间代码中的控制流指令。例如,将if语句转换为条件判断指令。变量和作用域转换:对于变量声明、赋值和作用域节点,根据编程语言和执行环境,将其转换为中间代码中的变量操作指令。例如,将变量声明转换为中间代码的变量分配指令。函数和方法转换:对于函数和方法节点,根据编程语言和执行环境,将其转换为中间代码的函数或方法调用指令。例如,将函数调用转换为中间代码的函数调用指令。转换优化:在转换过程中,可以进行一些针对性的优化,例如表达式求值的常量折叠、循环展开等,以提高动态执行的效率和性能。生成中间代码:根据相关规范或执行环境要求,生成最终的中间代码。这可以是一种特定的中间表示(如字节码或虚拟机指令),或者是针对特定执行环境的目标机器代码。
该实施例中,将中间代码逐条解释执行,得到解释执行代码,包括:准备执行环境:根据中间代码的执行需求,准备相应的执行环境。例如,创建一个空白的内存空间用存储变量、函数等。迭代执行:按顺序逐条遍历中间代码,并执行相应的操作。根据中间代码的指令类型,执行对应的操作,这可以是数学运算、变量赋值、函数调用等。变量管理:根据中间代码对变量的操作,进行相应的变量管理。例如,在遇到变量声明时,在执行环境中添加相应的变量;在遇到变量赋值时,更新变量的值。控制流处理:根据中间代码中的控制流指令(如条件判断、循环等),调整程序的执行流程。例如,在遇到if语句时,根据条件判断的结果选择继续执行条件为true的分支或者跳过条件为false的分支。函数调用处理:当遇到函数调用指令时,根据指令中的函数信息,跳转到对应的函数执行,并记录执行的位置,以便函数执行完毕后能够回到正确的位置继续执行。异常处理:在解释执行过程中,可能会遇到各种异常情况,如除零错误、类型错误等。要进行适当的异常处理,例如抛出异常、捕获异常或打印错误信息。结束执行:当执行到中间代码的最后一条指令时,解释执行结束,根据解释执行过程中的数据确定为解释执行代码。
该实施例中,对解释执行代码根据目标硬件架构和编译器配置进行编译,转换为目标机器码。此步骤包括指令选择、寄存器分配、代码排列等。
上述技术方案的有益效果:确定源代码的属性信息,根据属性信息将抽象语法树转换为动态执行所需的中间代码;将中间代码逐条解释执行,得到解释执行代码;将解释执行代码编译成可执行的机器码,得到转换代码,便于得到准确的转换代码。
如图3所示,根据本发明的一些实施例,所述第二分析模块,包括:
运行模块,用于:
运行转换代码;
在运行过程中,记录和监控程序的状态信息;所述状态信息包括变量的取值、函数的调用和返回信息;
在运行过程中,采集转换代码的运行信息;所述运行信息包括运行时间、内存使用情况及函数调用次数;
在运行过程中,对转换代码的运行进行异常检测,采集检测数据;所述检测数据包括空指针检查、异常处理及边界检查;
生成模块,用于:
根据状态信息、运行信息及检测数据生成对转换代码的动态分析结果;
基于源代码与转换代码之间的映射关系,确定源代码中对应位置的动态分析结果,进而得到第二分析结果。
上述技术方案的工作原理及有益效果:在第二分析模块运行转换代码的过程中,记录和监控程序的状态信息,采集转换代码的运行信息及采集检测数据,进行全面的数据采集,便于提高对转换代码进行动态分析的准确性,进而便于准确的得到第二分析结果。
根据本发明的一些实施例,所述预警模块,包括:
验证模块,用于根据第一分析结果及第二分析结果进行信息验证,对于两者一致的信息进行保留,得到交集信息;
第四确定模块,用于根据交集信息确定代码漏洞位置并发出预警提示。
上述技术方案的工作原理及有益效果:验证模块,用于根据第一分析结果及第二分析结果进行信息验证,对于两者一致的信息进行保留,得到交集信息;交集信息为通过对源代码进行静态分析和动态分析,得到的准确的数据。根据交集信息确定代码漏洞位置并发出预警提示。
根据本发明的一些实施例,还包括,漏洞修复模块,用于:
获取漏洞位置的参数信息;所述参数信息包括漏洞位置对应的组件名称、漏洞等级、组件当前版本及组件可升级的新版本;
检测源代码的编程语言;
基于源代码的编程语言及组件可升级的新版本,采用代码适配的方式对漏洞位置对应的组件进行组件升级。
上述技术方案的工作原理及有益效果:漏洞修复模块获取漏洞位置的参数信息;所述参数信息包括漏洞位置对应的组件名称、漏洞等级、组件当前版本及组件可升级的新版本;检测源代码的编程语言;基于源代码的编程语言及组件可升级的新版本,采用代码适配的方式对漏洞位置对应的组件进行组件升级。实现源代码安全管理,提高了数据安全性。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (6)

1.一种基于多维AST融合检测的源代码安全管控平台,其特征在于,包括:
第一分析模块,用于对源代码基于多维AST融合检测技术进行静态分析,得到第一分析结果;
转换模块,用于将源代码进行转换,得到转换代码;
第二分析模块,用于对转换代码进行动态分析,基于源代码与转换代码之间的映射关系得到第二分析结果;
预警模块,用于根据第一分析结果及第二分析结果,确定代码漏洞位置并发出预警提示;
所述第一分析模块,包括:
第一构建模块,用于构建源代码数据库;
第二构建模块,用于根据源代码数据库构建代码安全知识图谱;
第一确定模块,用于对源代码根据代码安全知识图谱进行静态分析,确定第一分析结果;
所述转换模块,包括:
第三确定模块,用于确定源代码的属性信息,所述属性信息包括编程语言及执行环境;
执行模块,用于:
根据源代码进行解析,生成抽象语法树;
根据属性信息将抽象语法树转换为动态执行所需的中间代码;
将中间代码逐条解释执行,得到解释执行代码;
将解释执行代码编译成可执行的机器码,得到转换代码;
所述第二分析模块,包括:
运行模块,用于:
运行转换代码;
在运行过程中,记录和监控程序的状态信息;所述状态信息包括变量的取值、函数的调用和返回信息;
在运行过程中,采集转换代码的运行信息;所述运行信息包括运行时间、内存使用情况及函数调用次数;
在运行过程中,对转换代码的运行进行异常检测,采集检测数据;所述检测数据包括空指针检查、异常处理及边界检查;
生成模块,用于:
根据状态信息、运行信息及检测数据生成对转换代码的动态分析结果;
基于源代码与转换代码之间的映射关系,确定源代码中对应位置的动态分析结果,进而得到第二分析结果;
所述预警模块,包括:
验证模块,用于根据第一分析结果及第二分析结果进行信息验证,对于两者一致的信息进行保留,得到交集信息;
第四确定模块,用于根据交集信息确定代码漏洞位置并发出预警提示。
2.如权利要求1所述的基于多维AST融合检测的源代码安全管控平台,其特征在于,所述第一构建模块,包括:
爬取模块,用于基于爬取技术对互联网中的开源项目框架进行高速爬取,根据爬取到的数据构建初始数据库;
预处理模块,用于对初始数据库进行数据预处理,去除异常数据及不完整数据,得到源代码数据库。
3.如权利要求1所述的基于多维AST融合检测的源代码安全管控平台,其特征在于,所述第二构建模块,包括:
第二确定模块,用于对源代码数据库进行数据提取,确定若干条漏洞源代码;
处理模块,用于:
对每条漏洞源代码进行词法和语法解析,处理成抽象语法树;
根据抽象语法树定义构建代码安全知识图谱的实体类型信息和实体间关系信息;
根据实体类型信息和实体间关系信息基于代码图谱构建算法构建代码安全知识图谱。
4.如权利要求3所述的基于多维AST融合检测的源代码安全管控平台,其特征在于,所述第二确定模块,包括:
第三分析模块,用于对源代码数据库进行分析,确定程序关系图;
匹配模块,用于将所述程序关系图与预设关系逻辑数据库中的关系逻辑数据进行匹配,确定程序关系图中不匹配的局部区域,作为漏洞源代码。
5.如权利要求1所述的基于多维AST融合检测的源代码安全管控平台,其特征在于,所述第一确定模块,包括:
识别模块,用于:
基于代码安全知识图谱对源代码进行识别,得到识别信息;所述识别信息包括源代码中的安全漏洞、代码位置及问题描述;
根据识别信息确定第一分析结果。
6.如权利要求1所述的基于多维AST融合检测的源代码安全管控平台,其特征在于,还包括,漏洞修复模块,用于:
获取漏洞位置的参数信息;所述参数信息包括漏洞位置对应的组件名称、漏洞等级、组件当前版本及组件可升级的新版本;
检测源代码的编程语言;
基于源代码的编程语言及组件可升级的新版本,采用代码适配的方式对漏洞位置对应的组件进行组件升级。
CN202311522730.3A 2023-11-15 2023-11-15 一种基于多维ast融合检测的源代码安全管控平台 Active CN117235746B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311522730.3A CN117235746B (zh) 2023-11-15 2023-11-15 一种基于多维ast融合检测的源代码安全管控平台

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311522730.3A CN117235746B (zh) 2023-11-15 2023-11-15 一种基于多维ast融合检测的源代码安全管控平台

Publications (2)

Publication Number Publication Date
CN117235746A CN117235746A (zh) 2023-12-15
CN117235746B true CN117235746B (zh) 2024-03-01

Family

ID=89096986

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311522730.3A Active CN117235746B (zh) 2023-11-15 2023-11-15 一种基于多维ast融合检测的源代码安全管控平台

Country Status (1)

Country Link
CN (1) CN117235746B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7284274B1 (en) * 2001-01-18 2007-10-16 Cigital, Inc. System and method for identifying and eliminating vulnerabilities in computer software applications
CN102567200A (zh) * 2011-12-14 2012-07-11 北京航空航天大学 基于函数调用图的并行化安全漏洞检测方法
CN114692155A (zh) * 2022-05-30 2022-07-01 中国海洋大学 基于知识图谱的漏洞代码图谱构建及代码漏洞检测方法
CN115795489A (zh) * 2023-02-09 2023-03-14 中国电子科技集团公司第三十研究所 一种基于硬件级进程跟踪的软件漏洞静态分析方法及装置
CN116049831A (zh) * 2022-12-27 2023-05-02 天翼云科技有限公司 一种基于静态分析和动态分析的软件漏洞检测方法
CN116401145A (zh) * 2022-12-27 2023-07-07 华北电力科学研究院有限责任公司 一种源代码静态分析处理方法及装置
CN116720192A (zh) * 2023-04-27 2023-09-08 西安理工大学 一种面向mips架构基于混合分析技术的漏洞检测方法
CN117034299A (zh) * 2023-10-09 2023-11-10 广东时汇信息科技有限公司 一种基于区块链的智能合约安全检测系统

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7284274B1 (en) * 2001-01-18 2007-10-16 Cigital, Inc. System and method for identifying and eliminating vulnerabilities in computer software applications
CN102567200A (zh) * 2011-12-14 2012-07-11 北京航空航天大学 基于函数调用图的并行化安全漏洞检测方法
CN114692155A (zh) * 2022-05-30 2022-07-01 中国海洋大学 基于知识图谱的漏洞代码图谱构建及代码漏洞检测方法
CN116049831A (zh) * 2022-12-27 2023-05-02 天翼云科技有限公司 一种基于静态分析和动态分析的软件漏洞检测方法
CN116401145A (zh) * 2022-12-27 2023-07-07 华北电力科学研究院有限责任公司 一种源代码静态分析处理方法及装置
CN115795489A (zh) * 2023-02-09 2023-03-14 中国电子科技集团公司第三十研究所 一种基于硬件级进程跟踪的软件漏洞静态分析方法及装置
CN116720192A (zh) * 2023-04-27 2023-09-08 西安理工大学 一种面向mips架构基于混合分析技术的漏洞检测方法
CN117034299A (zh) * 2023-10-09 2023-11-10 广东时汇信息科技有限公司 一种基于区块链的智能合约安全检测系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种基于静、动态分析相结合的漏洞挖掘分析方法;傅涛;孙文静;;软件(第08期) *

Also Published As

Publication number Publication date
CN117235746A (zh) 2023-12-15

Similar Documents

Publication Publication Date Title
Livshits et al. Reflection analysis for Java
US7120898B2 (en) Intermediate representation for multiple exception handling models
US7051322B2 (en) Software analysis framework
Feldthaus et al. Tool-supported refactoring for JavaScript
Guy et al. On model subtyping
Alrabaee et al. BinGold: Towards robust binary analysis by extracting the semantics of binary code as semantic flow graphs (SFGs)
US8719802B2 (en) Interprocedural exception method
Schwartz et al. Using logic programming to recover c++ classes and methods from compiled executables
Sui et al. Value-flow-based demand-driven pointer analysis for C and C++
US20080222616A1 (en) Software translation
US8141035B2 (en) Method for accessing internal states of objects in object oriented programming
Li et al. Effective soundness-guided reflection analysis
US10614227B2 (en) Method and system for identifying functional attributes that change the intended operation of a compiled binary extracted from a target system
Kim et al. DAPP: automatic detection and analysis of prototype pollution vulnerability in Node. js modules
Chen et al. A refined decompiler to generate C code with high readability
Suwimonteerabuth et al. jMoped: A Java bytecode checker based on Moped
Soroker et al. Extension mechanisms in Montana
Starynkevitch Melt-a translated domain specific language embedded in the gcc compiler
CN117235746B (zh) 一种基于多维ast融合检测的源代码安全管控平台
Küchler et al. Representing llvm-ir in a code property graph
Mesnard et al. Towards a framework for algorithm recognition in binary code
Paltoglou et al. Automated refactoring of client-side JavaScript code to ES6 modules
Kalleberg et al. Fusing a transformation language with an open compiler
Berg et al. Generic Metamodel Refactoring with Automatic Detection of Applicability and Co-evolution of Artefacts
Kaleba Static debloating of R applications: a case study

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