重点推荐省级国家级期刊、北大中文核心、CSSCI、EI、SCI发表,稳妥操作,速度快,包发表。有意向联系客服咨询。
论文代写:十年专业服务品质,全部由期刊编辑、硕士、博士撰写;保证原创、版权归您;保证通过、否则全额退款。
论文发表:与百家优秀期刊合作,代理审核组稿,论文发表涵盖所有专业领域,全部正刊,保证出刊,否则全额退款。
业务合作:因业务发展需要,诚招优秀写手合作,要求硕士以上学历,不限专业,另诚征优秀期刊代理合作,具体详谈。QQ:415835425
基于静态分析的java源代码后门检测技术研究
基于静态分析的java 源代码后门检测技术
研究
王一岚,张淼,徐国爱*
作者简介:王一岚,(1987-),女,硕士研究生,主要研究方向:软件安全. E-mail: wangyl@bupt.edu.cn
通信联系人:徐国爱,(1972-),男,副教授,信息安全管理。E-mail: xga@bupt.edu.cn
5 (北京邮电大学信息安全中心,北京 100876)
摘要:WEB 工程中存在的后门会给网站安全带来极大风险,针对日益猖獗的后门攻击,本文
提出了一种基于静态分析的后门检测技术,该技术通过分析源代码,可以检测出java 语言
WEB 工程中存在的主要后门漏洞,并结合流分析及关键数据传播分析,给出漏洞的完整攻击
路径。
10 关键词:信息安全;静态分析;后门检测
0 引言
25 随着IT 技术的发展,网络应用已经关系到人类生活的方方面面。黑客、网络犯罪活动
日益猖獗,从盗取个人隐私到窃取银行账号,给被害者带来极大危害。
网络攻击中最常见的方式就是植入后门。后门是指攻击者绕过安全认证而直接获取对系
统及数据访问权的方法。通过后门,攻击者可以远程控制被攻击者主机,盗取被攻击者隐私,
甚至窃取被攻击者银行账号等,给被攻击者带来巨大经济损失。更有甚者,通过后门攻击网
30 络服务器,造成网络瘫痪或其他不良后果,严重危害企业和社会利益。
美国国家标准技术研究所(National Institute of Standards and Technology, NIST) [1]报告显
示,92%的可被恶意利用的漏洞存在于软件中。针对软件自身进行安全性分析,是发现后门
安全漏洞,防范后门攻击的重要手段。
针对以上问题,本文提出了一种有效的基于静态分析的java 源代码后门检测技术,并
35 基于该技术,开发出相应的检测工具。
1 相关工作
目前已有的后门检测技术包括动态检测和静态检测。动态分析是通过真实或模拟环境执
行程序发现漏洞,而静态分析不执行程序,通过对源代码或二进制文件等进行漏洞检测。由
于程序后门大多使用隐蔽的数据或函数,所以动态检测的方式很难发现大部分的程序后门。
40 通过静态分析源代码或二进制文件来发现程序后门的效果是最好的。[2]
目前静态代码分析主要有以下几种方式:[3]
(1)缺陷模式匹配
这种方式是事先手机足够多的共性缺陷模式,将需要分析的代码与共性缺陷模式库中的
模式进行匹配,来发现代码中的安全问题。这种方式简单方便,但是要求共性缺陷模式库足
45 够完善,并且这种方式容易产生较高的误报率。
(2)类型推断
这种方式是指通过对代码中运算队形类型进行推理,从而保证代码中每条语句都针对正
确的类型执行。这种技术首先将预定义一套类型机制,包括类型等价、类型包含等推理规则,
而后基于这一规则进行推理计算。类型推断可以检查代码中的类型错误,简单,高效,适合
50 代码缺陷的快速检测。
(3)模型检查
这种方式是将需要分析的代码抽象为一个自动机系统,并且假设该系统是有限状态的、
或者是可以通过抽象归结为有限状态。检验过程中,将每条语句产生的影响抽象为有限状态
自动机的一个状态,然后通过分析优先状态机达到代码分析的目的。该方式主要用于检验程
55 序并发等时许特性,对于数值域数据类型等方面作用较弱。
(4)数据流分析
这种方式通过收集代码中引用到的变量信息,分析变量在程序中的赋值、引用、传递等
情况。
为了更好的检测java 中的后门等安全问题,本文给出的方案结合了以上数据流分析与
60 缺陷模式匹配的方式,可以准确查找代码中的后门问题。此外,还提出了“关键数据特征识
别技术”,能够给出安全问题的完整传播路径。并设计了安全分析器,制订安全规则模版,
有助于不断扩展安全规则,适应新的安全问题。
2 基于流分析的java 源代码静态分析方法
现有的源代码静态分析工具存在的主要问题是缺少控制流数据流分析,不支持关键数据
65 传播技术,以及规则扩展性很差。[4]针对以上问题,本文提出了基于控制流数据流分析的java
源代码静态分析方法,有效提升java 源代码静态检测的可靠性。大幅度降低静态检测的误
报率及漏报率。
本文提出的源代码静态分析系统基本分析流程如下:
(1)通过词法分析、语法分析将源代码转化为抽象语法树,即AST 树。将程序作为字
70 符流输入,通过词法分析技术、语法分析技术,生成一棵与程序语言结构对应的AST 树。
这部分工作可以是用语法分析工具或编译器前端来实现。
(2)对AST 树进行语言结构分析,将AST 树转化为统一的中间结构。该结构由类、
方法、变量等不同程序元素组成。
(3)控制流数据流分析:确定程序中类之间及方法之间关系,通过控制流分析得到语
75 句间控制关系;通过数据流分析得到变量之间数据以来关系。
(4)关键数据特征识别:通过提取关键API 等关键数据特征,确定关键数据信息,如
污染信息、系统信息等。
(5)污染传播分析:在控制流、数据流分析结果基础上,分析关键数据的传播过程。
在下一章中有详细描述。
80 (6)制定安全规则模版,编写安全规则。
(7)根据不同的规则类型,设计和编写程序分析器。程序分析器工作时可以结合关键
数据传播分析,得到有流信息的安全问题描述。
(8)程序分析调度器解析规则,将获取到的程序信息交给程序分析器处理。
(9)得到安全分析结果。
85 2.1 数据流分析及关键数据传播分析
本文所研究的静态分析方法与传统静态分析方法相比,一个很大的改进点在于提出了完
善的数据流分析及关键数据传播分析方法。
(1)数据流分析[5]
数据流分析基于控制流分析,其目的是得到程序中不同点对变量的赋值信息。“到达-
90 定值”是指到达某条语句时所有变量的可能赋值集合。这里有几个基本概念:
IN 集合:到达某条语句之前的所有定值集合。
OUT 集合:离开某语句时所有定值的集合。
KILL 集合:该条语句注销掉的定值集合。
GEN 集合:该条语句产生的定值集合。
95 采用迭代算法计算IN 集合和OUT 集合。首先初始化所有语句的IN、OUT 集合为空,
GEN 为当前语句产生的定值集合,KILL 为当前语句注销的定值集合。进行迭代,知道所有
语句的IN、OUT 都不再改变为止。
(2)关键数据传播分析
在程序中,污染信息、系统信息等关键数据特征会在传播中扩散,因此找到关键数据传
100 播的路径对安全分析的准确性至关重要。在本文中,将分析关键数据传播的过程称为污染分
析。
污染信息的传播过程如下图所示:
图1 污染信息传播过程
105 Fig. 1 polluted information spread process
该传播过程中的几个关键对象是:[6]
(1)污染数据的来源:关键数据特征进入程序的入口。如污染信息的来源是外部输入
数据,硬编码信息的来源是代码中的常量赋值等。
110 (2)污染数据传播:关键数据特征在程序中传播时,无论是赋值给另一个数据,还是
被拼接到另一个数据中,污染信息都会被被继承。在实际实现中,需要对JDK 及常用框架
中所有会传播关键数据特征的API 进行描述,例如StringBuffer.append(StringBuffer)方法,
会将该对象及参数的污染标记传播给返回值。
(3)漏洞的爆破点:会引发安全漏洞的代码。
115 本文采取的是逆向查找方法,即首先查找漏洞的爆破点,再通过数据流查找爆破点中需
要关注的数据是否是污染数据,并记录污染传播的全部路径。
2.2 安全分析器
本系统中的安全分析器大致有如下几种类型:
(1)查找单个关键API 是否有被程序调用。
120 (2)查找关键API 调用,分析其参数是否具有关键数据特征。如判断SQL 查询语句参
数是否是污染数据来检测SQL 注入、判断网络连接API 的参数是否是写死的变量来检测后
门等。该分析器调用污染分析模块。
(3)分析两个API 的关系:可以查询资源释放错误等,分析打开资源与关闭资源API
的控制关系。
125 (4)通过规则解析器读入规则,调用指定的安全分析器进行分析。
3 Java 后门静态分析实验及分析
(1)代码:
图2 测试代码1
130 Fig. 2 test code 1
分析流程:
根据安全规则,需要调用安全分析器分析getConnection 方法的第二个参数是否为硬编
码,即13 行getConnection 方法为漏洞爆破点。调用污染分析器,13 行参数password 的定
135 值为12 行,变量password 由变量c 赋值,所以继续追踪变量c 的定值,通过数据流分析,
变量c 的定值是11 行,11 行中append 方法会将变量b 及变量a 的污染信息传递给变量c,
因此需分别追踪变量b 和变量a 的定值。其中,变量a 的定值为10 行,可知变量a 为写死
的StringBuffer(“123”),由此可知,变量a 的硬编码信息传递给了变量password,即需要检
测的参数为硬编码,所以这可以判断为一个后门漏洞。
140 检测结果:
图3 测试代码1 检测结果
Fig.3 test result for test code 1
145
流路径:
150 图4 测试代码1 流路径
Fig. 4 flow details for test code 1
(2)代码:
155 图5 测试代码2
Fig. 5 test code 2
分析流程:
根据遗留的debug 代码规则,检测该漏洞需要查询是否有任意类型的名称为main 的方
160 法被调用,调用安全分析器分析很容易得出这段main 代码是一段遗留的debug 代码,很容
易被后门程序利用。
检测结果:
165 图6 测试代码2 检测结果
Fig63 test result for test code 2
4 结论
本文提出的java 静态代码分析框架,已经以检测工具的形式得以实现。通过对Webgoat
170 等开源代码的测试,并与Fortify 等较为成熟的静态分析工具进行对比,得出该检测工具可
以查出代码中绝大部分的命令注入、SQL 注入、跨站脚本等安全问题的结论,拥有与Fortify
相媲美的准确率。在后门检测方面则更胜一筹,可以查出绝大部分的死代码、残留debug 信
息、非法网络连接等后门问题。由于采取了更加高效的迭代算法,在数据流分析模块具有更
高效率。此外,由于安全分析及污染分析的规则描述全部采用xml 方式,扩展更加容易。
学术论文网Tag:代写论文 代写代发论文 职称论文发表 代写代发
|
本站郑重声明:
1、我们与数十所知名高校博士强强联手,保持常年稳定合作关系,论文质量更有保证;;
2、写作领域涉及所有专业,实力操作,出稿更快,质量更高,通过率100%;
3、所有代写文章,全部原创,包检测,保证质量,后续免费修改,保证通过;
4、信誉实力服务,专业代写毕业论文,职称论文,硕博士论文,留学生论文,成熟操作;
------分隔线----------------------------