【技术实现步骤摘要】
一种动态语言的缺陷分析方法和相关装置
[0001]本申请涉及计算机
,尤其涉及一种动态语言的缺陷分析方法和相关装置。
技术介绍
[0002]在软件的快速开发的过程中,不可避免的会产生各种缺陷或安全漏洞。为此,静态检查工具用于通过对软件的源代码进行静态分析,以使得及早发现软件的缺陷或安全漏洞,从而降低软件的后期维护成本。
[0003]为了降低静态分析的复杂程度,当前的静态分析工具往往将源代码转换成特定的中间表现形式(intermediate representation,IR),再基于IR进行静态分析。目前常见的静态程序语言(C、C++、Java等)都有各自主流的静态分析框架,例如Clang、Soot等,基于这些静态分析框架可以对这些静态程序语言进行数据流分析、值流分析以及其他启发式分析。
[0004]目前,针对动态语言的静态分析方法通常先将源代码转换成抽象语法树(abstract syntax tree,AST),再通过递归访问AST的节点进行分析。当AST的部分结构与某种缺陷的语法特征相匹配时,则认为 ...
【技术保护点】
【技术特征摘要】
1.一种动态语言的缺陷分析方法,其特征在于,包括:获取动态语言的目标源代码;对所述目标源代码进行翻译,得到底层虚拟机的中间表现形式LLVM IR语句,所述LLVM IR语句具有所述目标源代码的语义特征;对所述LLVM IR语句进行缺陷分析,得到所述目标源代码的缺陷报告。2.根据权利要求1所述方法,其特征在于,所述语义特征包括语义结构和/或语句顺序。3.根据权利要求1或2所述方法,其特征在于,所述LLVM IR语句的每个语句标注有在所述目标源代码中对应的位置。4.根据权利要求1
‑
3中任一项所述方法,其特征在于,所述动态语言为python、JavaScript、PHP或Ruby。5.根据权利要求1
‑
4中任一项所述方法,其特征在于,所述对所述目标源代码进行翻译,得到LLVM IR语句包括:对所述目标源代码进行反汇编,得到字节码;对所述字节码进行字节码分析,得到所述LLVM IR语句。6.根据权利要求5所述方法,其特征在于,所述对所述字节码进行字节码分析,得到所述LLVM IR语句包括:提取所述字节码的顶层指令和内部对象指令;根据所述顶层指令和所述内部对象指令对所述目标源代码进行更新符号表,得到更新后的符号表;根据所述顶层指令、所述内部对象指令和所述更新后的符号表调用生成接口,生成所述LLVM IR语句。7.根据权利要求6所述方法,其特征在于,所述顶层指令包括顶层语句、函数定义和/或类定义。8.根据权利要求6或7所述方法,其特征在于,所述内部对象指令包括函数体、类属性和/或类函数体。9.根据权利要求1
‑
8中任一项所述方法,其特征在于,所述对所述目标源代码进行翻译,得到LLVM IR语句之后,还包括:确定所述LLVM IR语句满足LLVM IR语法规范;输出所述LLVM IR。10.根据权利要求1
‑
8中任一项所述方法,其特征在于,所述对所述目标源代码进行翻译,得到LLVM IR语句之后,还包括:确定所述LLVM IR语句不满足LLVM IR语法规范;获取所述LLVM IR语句中的错误信息;记录所述错误信息。11.根据权利要求1
‑
10中任一项所述方法,其特征在于,所述对所述LLVM IR语句进行缺陷分析,得到所述目标源代码的缺陷报告包括:获取缺陷检查规则;根据所述缺陷检查规则对所述LLVM IR语句进行缺陷分析,得到所述目标源代码的缺陷报告。
12.根据权利要求1
‑
11中任一项所述方法,其特征在于,所述缺陷分析包括clang分析或SVF分析。13.一种动态语言的缺陷分析装置,其特征在于,包括:获取模块,用于获取动态语言的目标源代码;处理模块,用于对所述目...
【专利技术属性】
技术研发人员:陈咏佳,沈栋,
申请(专利权)人:华为云计算技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。