一种基于静态分析的程序源码的安全配置项约束提取方法技术

技术编号:38197967 阅读:12 留言:0更新日期:2023-07-21 16:36
本发明专利技术提供了一种基于静态分析的程序源码的安全配置项约束提取方法。该方法包括:将程序的代码文件转换为中间表示;使用过程内、流敏感的字符串常量传播算法对中间表示进行分析,得到各个方法中每条语句的字符串常量集;使用字段敏感的数据流分析每条语句的字符串常量集,定位安全配置项的读取点;对安全配置项的读取点进行流不敏感的污点传播,得到程序中每个变量的污点集;根据变量的污点集进行流敏感、路径敏感的控制流分析,得到每条语句所受到的配置项约束集,构建代码文件中安全配置项相关的约束集。本发明专利技术采用了路径敏感的数据流分析方法,为每个语句分别维护一个约束集,为每一个配置项构建配置项的约束集,可以为用户提供配置值推荐。为用户提供配置值推荐。为用户提供配置值推荐。

【技术实现步骤摘要】
一种基于静态分析的程序源码的安全配置项约束提取方法


[0001]本专利技术涉及程序分析
,尤其涉及一种基于静态分析的程序源码的安全配置项约束提取方法。

技术介绍

[0002]程序分析指的是对计算机程序进行自动化地处理,以确认、发现其特性或缺陷,根据分析结果所做的优化不会改变程序的语义,比如性能、正确性和安全性等。程序分析的结果可用于编译优化、提供警告信息等,比如被分析程序在某处可能出现指针为空、数组下标越界的情形等。
[0003]传统上,程序分析包括各种静态分析技术(数据流分析、指针分析、符号执行等)与动态分析(插桩、模拟执行)技术:静态分析技术是指不必运行程序,只需要对程序代码进行自动化的扫描、分析;动态分析技术是动态运行程序,并分析程序运行过程中的动态信息。
[0004]目前已经提出多种配置项读取点提取的方法,例如指针分析结合字符串分析的方法,该方法由于采用了过程间分析,结果的精确度受到指定入口点的限制,无法精确定位所有的配置项读取点。
[0005]目前,现有技术中的配置项读取点提取的方法大多数都用过程间分析,过程间分析普遍采用指针分析作为静态分析的基础框架,由于指针分析构建的调用图依赖于入口点,其精准度受到指定入口点的影响。配置项读取点如果存在于动态调用、反射中,通过过程间分析很难覆盖到此类情况。
[0006]目前,现有技术中的访问控制配置项值的约束提取都是通过关联数据挖掘的方法,这个方法依赖于用户正确配置的历史值,因此无法精确地提取出配置项的约束。

技术实现思路
<br/>[0007]本专利技术的实施例提供了一种基于静态分析的程序源码的安全配置项约束提取方法,以实现从程序的执行流和控制流层面掌握安全配置项受到的约束。
[0008]为了实现上述目的,本专利技术采取了如下技术方案。
[0009]一种基于静态分析的程序源码的安全配置项约束提取方法,包括:
[0010]将程序的代码文件转换为中间表示,代码中的每一个类对应一个中间表示文件;
[0011]使用过程内、流敏感的字符串常量传播算法对所述中间表示进行分析,得到中间表示每个类的各个方法或者函数中每条语句的字符串常量集;
[0012]使用过程内、字段敏感的数据流分析每条语句的字符串常量集,在语句中定位程序的代码文件中安全配置项的读取点;
[0013]使用流不敏感、上下文敏感的指针分析构建调用图,通过调用图构建过程间的控制流图;
[0014]对代码文件中安全配置项的读取点进行流不敏感的污点传播,不设置汇聚点,让污点尽可能远地传播,得到程序中每个变量的污点集;
[0015]根据变量的污点集和过程间的控制流图进行流敏感、路径敏感的控制流分析,提取构建有关污点变量的约束,得到每条语句所受到的配置项约束集;
[0016]根据每条语句所受到的配置项约束集和程序中每个变量的污点集构建代码文件中安全配置项相关的约束集。
[0017]优选地,所述的将程序的代码文件转换为中间表示,包括:
[0018]使用静态分析工具先将程序的字节码文件或者源代码文件转换为中间表示,所述静态分析工具包括太阿Tai

e和底层虚拟机LLVM。
[0019]优选地,所述的对代码文件中安全配置项的读取点进行流不敏感的污点传播,不设置汇聚点,让污点尽可能远地传播,得到程序中每个变量的污点集,包括:
[0020]设置代码文件中安全配置项的读取点为引用变量,通过给安全配置项的读取点的配置变量打上污点标记,通过上下文敏感的指针分析传播污点,得到上下文敏感的指针集,将被标记过的上下文敏感的指针集确定为程序中每个变量的污点集。
[0021]优选地,所述的根据变量的污点集和过程间的控制流图进行流敏感、路径敏感的控制流分析,提取构建有关污点变量的约束,得到每条语句所受到的配置项约束集,包括:
[0022]根据变量的污点集和过程间的控制流图进行流敏感、路径敏感的控制流分析,分析所有方法的控制流的条件变量的污点集,根据控制流的条件构建约束,若控制流的条件变量存在污点集,则确定该条件变量与安全配置项有关,根据控制流的条件语句构建配置项的约束,得到每条语句所受到的配置项约束集。
[0023]优选地,所述的根据每条语句所受到的配置项约束集和程序中每个变量的污点集构建代码文件中安全配置项相关的约束集,包括:
[0024]根据每条语句所受到的配置项约束集和程序中每个变量的污点集,构建如下的代码文件中安全配置项相关的约束集:
[0025]同一个配置项的约束在某一控制流i处能够合并,结果是对同一个配置项的所有约束进行析取,对任意一个配置项,有一个在i处的配置约束集C
i
,C
i
是所有关于该配置项的约束,是任意一个配置项的第j个约束,C
i
为所有约束的析取;
[0026][0027]同一配置项需要同时满足不同控制流的约束,结果是对约束进行析取,对任意配置项都有一个配置约束集M,该配置约束集M是对所有控制流i处的配置约束集C
i
的合取;
[0028][0029]对所有的n个安全配置项构建约束后,输出表1所示的所有安全配置项的约束集表;
[0030]表1:安全配置项的约束集表
[0031]No.配置项约束集1配置1M1
………
n配置nMn
例Config1Integer∧1&lt;Config1&lt;30
[0032]用户根据上述安全配置项的约束集表提供的代码约束进行正确配置或改正错误配置。
[0033]由上述本专利技术的实施例提供的技术方案可以看出,本专利技术方法只用进行方法级分析,不需要分析方法调用、构建调用图,能较大地提升运行速率;我们的技术能处理匿名内部类、动态调用和反射的情况,范围比现有技术广,因此准确率更高。本专利技术方法通过静态数据流分析的方法分析程序的中间表示,能够从程序的执行流和控制流层面更为精确的掌握配置项受到的约束。
[0034]本专利技术附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本专利技术的实践了解到。
附图说明
[0035]为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0036]图1为本专利技术实施例提供的一种基于静态分析的程序源码的安全配置项约束提取方法的处理流程图。
具体实施方式
[0037]下面详细描述本专利技术的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本专利技术,而不能解释为对本专利技术的限制。
[0038]本
技术本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于静态分析的程序源码的安全配置项约束提取方法,其特征在于,包括:将程序的代码文件转换为中间表示,代码中的每一个类对应一个中间表示文件;使用过程内、流敏感的字符串常量传播算法对所述中间表示进行分析,得到中间表示每个类的各个方法或者函数中每条语句的字符串常量集;使用过程内、字段敏感的数据流分析每条语句的字符串常量集,在语句中定位程序的代码文件中安全配置项的读取点;使用流不敏感、上下文敏感的指针分析构建调用图,通过调用图构建过程间的控制流图;对代码文件中安全配置项的读取点进行流不敏感的污点传播,不设置汇聚点,让污点尽可能远地传播,得到程序中每个变量的污点集;根据变量的污点集和过程间的控制流图进行流敏感、路径敏感的控制流分析,提取构建有关污点变量的约束,得到每条语句所受到的配置项约束集;根据每条语句所受到的配置项约束集和程序中每个变量的污点集构建代码文件中安全配置项相关的约束集。2.根据权利要求1所述的方法,其特征在于,所述的将程序的代码文件转换为中间表示,包括:使用静态分析工具先将程序的字节码文件或者源代码文件转换为中间表示,所述静态分析工具包括太阿Tai

e和底层虚拟机LLVM。3.根据权利要求2所述的方法,其特征在于,所述的对代码文件中安全配置项的读取点进行流不敏感的污点传播,不设置汇聚点,让污点尽可能远地传播,得到程序中每个变量的污点集,包括:设置代码文件中安全配置项的读取点为引用变量,通过给安全配置项的读取点的配置变量打上污点标记,通过上下文敏感的指针分析传播污点,得到上下文敏感的指针集,将被标记过的上下文敏感的指针集确定为程序中每个变量的污点集。4.根据权利要求3所述的方法,其特征在于,所述的根据变量的污点集和...

【专利技术属性】
技术研发人员:王伟刘煜昊王俊勇周英楠刘文博张大伟段莉刘吉强
申请(专利权)人:北京交通大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1