APP下载

面向软件脆弱性的并行检测系统相关技术研究与实现

2014-04-29范巍

中国新通信 2014年24期

范巍

【摘要】 软件脆弱性作为信息安全问题的根源之一,对信息安全构成了严重威胁。当前,普遍使用的符号执行技术受限于运算复杂度和计算能力,无法实现大规模应用。为此课题组提出了基于动态符号执行的软件脆弱性并行检测系统。并行调度是软件脆弱性并行检测系统的关键技术之一,与系统的检测效率紧密相关。本文提出了基于节点状态的子系统调度算法和基于路径广度优先遍歷的任务调度算法,分别实现了并行系统的子系统调度和任务调度。两个算法在实现上简单易行,并且具有很高的效率。本文对具体编程的细节进行了介绍和分析。

【关键词】 软件脆弱性分析 符号执行 并行调度

一、绪论

软件脆弱性也称漏洞,是软件在设计与实现过程中能导致安全事故的缺陷和不足[1]。脆弱性的存在本身并不影响软件的功能,不会造成任何安全事故。但是网络攻击者可以利用软件脆弱性,在未授权的情况下访问或破坏计算机系统,造成严重的安全事故[2] [3]。当前,普遍使用的符号执行技术受限于运算复杂度和计算能力,无法实现大规模应用。为此本课题设计并实现了基于动态符号执行的面向软件脆弱性并行检测系统的并行调度模块和通信模块,课题以此为牵引,对符号执行技术进行了研究,对基于符号执行技术的KLEE平台的搭建和使用进行了详细介绍,并对KLEE的测试结果进行了详细分析。

二、相关研究

符号执行是指不通过执行程序,用符号作为程序的输入,将程序进行模拟执行,从而来进行相关分析的技术。符号执行可分为静态符号执行和动态符号执行。静态符号执行包括两类,分别为过程内分析和过程间分析,其中过程间分析又称为全局分析。过程内分析的概念是,在进行分析的过程中,只分析单个过程的代码。而全局分析的概念是,不仅单个过程中的代码进行分析,并且将整个程序的代码的上下文进行敏感分析。其中上下文敏感分析的概念是,在开始对当前函数进行内分析时,需要对当前的函数间调用信息和环境信息等进行分析和考虑。

三、基于动态符号执行的软件脆弱性并行检测系统

3.1系统总体架构

通过前期对符号执行技术原理和应用的研究,我们对理解基于动态符号执行的软件脆弱性并行检测系统奠定了基础。基于动态符号执行的软件脆弱性并行检测系统采用并行技术进行软件脆弱性检测,使系统不仅具有高代码高路径覆盖率,同时大大提升了软件脆弱性检测的效率。

3.2系统功能概述

调度服务器:调度服务器是系统的中心,数量为1个,工作于Windows 2003以上环境,负责与各个子系统通信,向子系统发布命令,并接收反馈。

总控中心:总控子系统直接与用户进行交互,是系统对外的接口,用户的所有操作通过总控中心进行实现。

四、并行调度模块设计与实现

4.1算法设计思想

基于动态符号执行的软件脆弱性并行检测系统的并行调度问题是系统研发过程中的核心问题之一。调度服务器如何向三类子系统分配执行任务,对整个并行系统的执行效率影响极大。本章设计与实现的并行调度模块主要解决了三类子系统的调度问题和三类子系统任务调度问题。

4.2子系统调度算法

并行系统共有测试子系统、分析子系统和求解子系统三类子系统,每类子系统的数量有多个。当任务到达,调度Server如何在每类子系统中选择执行任务的单位,即是子系统调度算法需要研究的问题。

4.3实现方案

在实现子系统调度和任务调度的过程中,需要对子系统信息、任务信息和任务内容进行存储。为了解决存储问题,系统在具体实现时,使用Hadoop分布式存储系统对各个子系统执行的任务内容进行存储,系统使用Oracle数据库对各个子系统的注册信息和状态信息以及各个子系统执行的任务基本信息进行存储。

五、总结与展望

本文对项目组基于动态符号执行的面向软件脆弱性并行检测系统进行了研究。最后,本文设计与实现了该系统的并行调度模块和通信模块,两个模块在实现上简单易行,并且效率很高。本文的下一步工作主要包括以下方面:一是对动态符号执行工具和软件脆弱性并行检测工具进行研究,二是对任务调度的算法进行优化。

参 考 文 献

[1] 柳淑玉,孔维广.软件安全漏洞挖掘技术的研究[J].山东纺织经济,2010,(5):107-109.

[2] 华旭峰,刘源.浅析漏洞挖掘技术[J].商场现代化,2009,(4):19.

[3] 文伟平,吴兴丽,蒋建春等.软件安全漏洞挖掘的研究思路及发展趋势[J].信息网络安全,2009,(10):78-80.

[4]郑亮,刘向东.漏洞挖掘技术研究[C].全国抗恶劣环境计算机第十八届学术年会论文集.2008:75-78.