分析Android应用中SQL注入漏洞静态检测方法

2018-08-28 06:50:42
长治学院学报 2018年2期
关键词:污点漏洞静态

杨 芬

(长治职业技术学院 信息工程系,山西 长治 046000)

在网络技术发展的背景下,Android智能手机得以广泛应用,而且越来越多的应用系统融入到Android官方网站之中,但是,在一些软件发展中并没有采用安全性的检测技术,导致在软件系统使用的过程中出现安全漏洞问题,为用户带来安全风险。因此,在网络系统运行中,为了保障用户使用信息资源的安全性,应该合理分配Android系统中的应用程序,并通过独立、虚拟的网络环境,为用户营造良好的应用环境。在Android应用中,可以为用户提供灵活的通信机制,通过对通信系统方法的整合,进行用户之间的信息传递,从而满足信息的传播需求。在Android应用中,其安全程序是指在Android应用程序的周期内,保障数据的有效性、完整性及安全性、隐私性。但是,无论对于何种系统,都存在着漏洞形式,通过SQL注入漏洞静态检测方法的运用,可以提高系统运行的安全性。

1 Android应用中漏洞分析

Android系统在运行的过程中,会为自身系统提供一定的保障价值,在权限机制整合的同时,实现对Android系统安全机制的确定,而且,在不同手机中Android系统都存在着不同的权限,实现对用户系统数据资源的保护,避免资源滥用现象的发生。但是,在Android应用系统中,并不是每个权限都是完备的,因此,系统开发中应该认识到这一因素,通过对漏洞现象的问题,进行数据资源的整合。图1所示为Android应用系统中权限泄露漏洞。应用A作为Android设备中已经安装的应用,当申请Send_SMS权限时,需要向SMS发送请求,并暴露这项服务;而B作为一个恶意程序,会按照Android的权限设置问题,破坏所申请的信息,从而导致发送的信息没有得到安全保护,严重的会对用户的财产安全造成影响。

图1 Android应用权限泄露漏洞

2 Android应用中SQL注入漏洞静态检测方法

2.1 静态分析中的SQL

在Android系统运用的过程中,为了实现对数据代码的静态化检测,需要通过对用户程序以及结构进行静态化分析,从而使数据结构代码得到展现。为了在数据分析检测中扩大数据的使用范围,静态分析中会采用Android系统中的字节码文件[1]。如图2所示,整个分析过程应该做到:第一,对程序静态进行分析,体现控制流分析、数据流分析技术的运用;第二,将Android系统中注入SQL漏洞检测技术,然后按照检测流程进行检测方法的执行。在检测中对于所引用的jar文件,需要进行字节码的控制,流程控制中需要对单个词语、指令以及函数进行顺序的调用,并通过对控制流的确定,进行控制流程图的设计。在控制流程图选择中,需要通过对基本块以及基本执行关系的分析,进行流程的控制。在基础控制流约束法使用中,可以在基本块之内,将语句输出数据输出,进入到下一流程。在流程控制中,需要对每个SQL参数进行位置及参数的确定。最后使用定位程序进行SQL方法的选择,合理调整静态污点的分析功能,并对SQL参数进行数据的输入及输出,完善系统程序的检查机制[2]。

图2 静态分析中的SQL流程图

2.2 针对SQL注入漏洞静态检测进行污点分析

2.2.1 特殊数据的污点传播

在特殊数据的污点传播中,应该认识到系统传播的规律性。例如,在外部输入数据中,一些程序会直接选择字符进行储存及修改,但是,也有一些数据会使用特定的程序进行数据的储存。因此,在对结构状态整合及分析中,应该将资源作为一个整体结构进行处理,然后将污点数据传递给数组元素,将其标记为污染。改组中的所有数据都会被污染传播,数组结构污点传播规则如下:

(1).String[]spreadArray=new String[2];

(2).spreadArray[0]=“constant”;

(3).spreadArray[1]=taintStr;

(4).String str=spreadArray[0];

2.2.2 Collection接口以及Map接口

通过对Android系统运用状况的分析可以发现,Java中对语言系统进行定义,并确定了Collection接口以及Map接口。开发者在对数据分析中,需要整合复杂性的项目确定,从而实现复杂数据的整合及分析。在该种检测方法确定中,系统会针对污点进行传播,而且在传播中污点传播方法与数组类型存在着一定的相似性。对于这种状况,只需要将污点数据传递给结构体,即可将整个结构视为污染,从而实现对污染信息的计算[3]。

2.3 传播污点检测

2.3.1 传播过程的污点传播

在对过程内污点传播中,其方法主要是在单位时间内进行的,该种方法利用中,需要对污点数据进行污点信息的确定。因此,在整个过程中应该做到以下几点内容:第一,对初始化的污点数据进行整合,然后将污点信息进行传播,确定外部传输的方法、变量以及污点数据,并通过对指令类型进行操作;第二,在对变量读取的过程中,需要及时记录变量中的污点信息;第三,在对普通赋值指令分析中,应该结合当前变量内容,进行污点数据的集中处理;第四,针对特殊性的数据内容,需要进行指令的读写,然后实现污点信息的实时性传输;第五,在对返回指令分析中,需要记录数据参数,然后输出整个污点数据,其基本算法如表1所示。

表1 污点数据集算法

2.3.2 传播过程间的传播方法

在过程间污点传播中,需要通过对过程内污点传播方法的分析,对传播的参数以及返回值信息进行确定,并及时记录相关参数[4]。检测中,系统会对被调用的阐述进行确定,若发现数据为之前扫描过的需要利用之前方法,与之相反的需要将阐参数的污点信息传递给被调用方法,然后将其返回值的污点进行该种调用方法的确定。

2.4 合法信息检测方法

2.4.1 参数法

参数法在很多数据库中得以运用。该种技术会使系统在执行SQL语句时对SQL进行编译,然后将其参数进行带入。在一些恶性参数检测中,也可以避免程序的执行,从而提高Android应用系统的稳定性。

2.4.2 白名单验证方法

在项目开发着的信息整合中,虽然一些参数不会导致SQL出现漏洞,但是也需要在程序运行之前进行数据库项目的操作,充分保证系统运行的安全性[5]。例如,在Pattern.matcher系统中,需要与程序模块进行匹配,或是通过String方法的使用,进行数据整合阐述的判断,及时分析敏感字符,从而实现对系统数据的有效整合。若在系统运行中执行了白名单验证方法,需要将检测的数据库污点参数进行分析,以便提高SQL检测方法的合法性。

2.4.3 敏感字符的转化

在Android系统运行的过程中,当出现敏感词汇问题时,通过SQL漏洞检测方法的运用,可以实现对敏感词汇的转换。在转化中需要使用replace的检测方法,也就是系统通过对敏感词汇的确定,进行敏感字符的过滤及转义。这种操作方法可以被认为是合法性的项目检验。

3 结束语

总而言之,在Android应用系统的SQL注入漏洞静态检测方法确定中,应该通过对安全分析框架的分析,进行静态检测方法的确定,实现对动态框架分析不足问题的弥补。而且,该种检测也可以为用户提供安全性的数据保障信息,并对数据采用加固的处理方法,实现对数据信息的逆向化分析,提高SQL注入漏洞静态检测的有效性。通过检测及时发现Android应用系统中的漏洞问题,并针对相关问题进行技术的构建,从而提高数据分析的精确性,为Android用户营造良好的软件使用环境。

猜你喜欢
污点漏洞静态
漏洞
今日农业(2022年13期)2022-09-15 01:21:08
基于代码重写的动态污点分析
静态随机存储器在轨自检算法
使用Lightroom污点去除工具清理照片中的瑕疵
三明:“两票制”堵住加价漏洞
中国卫生(2016年5期)2016-11-12 13:25:28
漏洞在哪儿
儿童时代(2016年6期)2016-09-14 04:54:43
高铁急救应补齐三漏洞
中国卫生(2015年12期)2015-11-10 05:13:38
我国“污点证人”刑事责任豁免制度的构建
机床静态及动态分析
机电信息(2015年9期)2015-02-27 15:55:56
具7μA静态电流的2A、70V SEPIC/升压型DC/DC转换器