大数据下源代码同源性安全分析探讨

  • 投稿杜行
  • 更新时间2015-09-23
  • 阅读量469次
  • 评分4
  • 17
  • 0

陈慧

(山东英才学院信息工程学院,山东 济南 250104)

【摘要】大数据时代的到来,将安全带入了一个全新、复杂和综合的时代,利用大数据进行代码同源性安全分析,人们可以分析大量的潜在安全事件,通过对海量大数据的分析,可以挖掘发现大量新的网站攻击特征、网站漏洞,以及分析同源的特种木马等。

教育期刊网 http://www.jyqkw.com
关键词 大数据;同源性;安全

0 引言

“大数据”作为时下最火热的IT行业的词汇,随之而来的数据仓库、数据安全、数据分析、数据挖掘等围绕大数据的商业价值的利用逐渐成为新的利润焦点[1]。现在数据从绝对量来说正在迅猛增长,每年的增速是50%,数据变化速度也非常快,它们来自于不同的源。大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些含有意义的数据进行专业化处理。

随着互联网的发展,资源的共享日益增多,人们可以得到的资源也越来越多,十年前,开发人员可以使用免费的操作系统和一些简单的数据库。五年前,他们可以用上“非常不错的免费数据库”和“相当好的”免费web框架。现阶段,大量开源代码中的部分代码成为开发人员抄袭借鉴的资源。出于某些原因,例如知识版权,通常开发人员对所抄袭的代码部分并不加说明,并且会对源代码做一些不影响代码功能的修改,比如修改函数名或者变量名,打乱语句顺序,类型重定义等等。然而,部分开源代码中存在一些安全漏洞,当开发人员使用了有问题的源码,就使得完成后的程序中就自然存在这些安全漏洞。

大数据时代的到来,将安全带入了一个全新、复杂和综合的时代,不安全的那些蛛丝马迹在浩瀚数据的掩护下被利用,使得黑客能精准地发起一次又一次的攻击。黑客的嗅觉是极其灵敏的,反应也极其快速。当一个漏洞被发现,当天就会有攻击产生,当天就会有针对这个漏洞所开发的工具,大范围的攻击很快就会达到一个高峰,留给安全界的反应时间非常短。在安全管理人员在日常维护中,如果能够对所管理软件是否抄袭了其他软件代码进行判断,当漏洞被发现时,就能快速排出所管理的软件是否也包含此漏洞,因此能否发现现有软件中代码是否抄袭就变的十分重要。在这个背景下,软件的同源性鉴别技术的研究变得十分关键。

1 源代码同源性分析

软件的同源性鉴别指将两款软件从源代码到软件功能上进行比较,找出它们是否相同或者相似,作为软件形成基础的程序源代码是进行比较和鉴别的重要依据。软件系统的源代码中存在许多相同或相似的代码片段,这些相同或相似的代码片段被称为克隆代码(clone code),它们具有同源性。针对源代码同源性的检测技术在国内外的研究开展得非常广泛,研究重点当前集中在源代码抄袭检测技术,也就是通常所说的代码克隆检测。常见的源代码同源性检测有文本相似和功能相似两类检测技术,其中文本相似类型的检测,对应于源代码中声明、标识符、文字、变量类型、布局和注释的变化;功能相似类型检测,不考虑程序段之间由于格式或变量名的不同而引起的词法上的区别,而着重于程序段之间的结构和语义上的类似,指的是两个代码段虽然通过不同的句法或变量编程实现,但有着相似的前提或后置条件,而且能实现相同或类似的功能。

检测源代码中含有的克隆代码是20世纪90 年代随着软件维护问题的日益突出而出现和发展的,早期的文献包括1990 年的和1992 年的克隆代码检测工具Dup。90 年代中期以来,特别是2000 年之后,克隆代码检测的相关研究在软件工程领域逐渐兴起。到目前为止,文献中出现了许多不同的同源性代码鉴别技术和思路。这些技术可分成4 大类,分别是基于文本、基于编程风格、基于抽象语法树和基于语义的技术。

1.1 基于文本相似性的鉴别技术

典型的基于文本相似性的鉴别技术有H.T. Jankowitz提出的基于子串匹配的方法,由Brenda S.Baker提出的参数化匹配方法,还有典型的词频统计法用于同源性鉴别。基于文本相似性的同源性鉴别由于采取的文本层次的比较,忽略了源代码本身的语义特征,代码抄袭者很容易利用这一点逃过鉴别,漏检率较高。但是由于文本相似性的检测技术术是基于文本序列和文本组合,其误检率较低。

1.2 基于编程风格的同源性鉴别技术

基于编程风格的同源性鉴别是根据代码编程人员的编写风格判断软件同源性。这种同源性鉴别方法主要分两个阶段进行[2]:首先需要提取文件的主要编码风格特征,然后用三种不同的模块来检测代码以确定被克隆的位置。由于基于编程风格的同源性鉴别需要耗费大量人力,很难自动化,可行性较差。

1.3 抽象语法树的代码同源性鉴别技术

Baxter等人提出了基于抽象语法树的代码同源性鉴别技术。抽象语法树是一种树形存储结构,由程序代码段经过语法分析后生成的,抽象语法树保存有树节点相关信息。基于抽象语法树的同源性检测技术是将代码段的语法结构进行比对分析,通过比较节点的值来判断代码文件是否具有的同源性。基于抽象语法树的技术实现比较复杂,而且理论上也存在软件同源性误检的可能,当前可利用的工具较少。

1.4 基于语义的同源性鉴别技术

基于语义的同源性鉴别技术能够从语义方面判断代码结构,而不受传统代码抄袭形式的影响,具有很高的准确度。对于语义的同源性检测方法主要是基于程序依赖图(PDG-based)的方法,它将源代码变换为图形化的 PDG,使用子图的同构性来检测相似的过程和代码段。对于语句交换顺序、语句替换、函数功能相似等引起的代码克隆,使用语义检测,会取得较好的检测效果。

这些鉴别技术分别对于不同类型的同源性鉴别有效,经测试[3],以Dup、CCFinder、DupLoc等为代表的基于字符串匹配的工具软件,以CloneDr 、Deckard等为代表的基于抽象语法树匹配方法的工具软件、以CLAN、Kontogiannis、Mayrand、Dagenais、Merlo和Davey等为代表的基于度量匹配的工具软件,对于文本相似的同源性检测有较好的检测效果。基于程序依赖图的工具软件Duplix、Komondoor、GPLAG和Gabel等,对功能相似克隆中语句交换顺序的语义克隆有较好的检测效果,防剽窃工具GPLAG对语句替换克隆有一定的效果。

2 大数据安全分析

代码同源性研究依赖于大数据进行分析时应该重视相关关系,而不是因果关系。大数据具有的特征可以归纳为4个“V”[4](规模巨大Volume,模态多样Variety,真伪难辨Veracity,速度极快Velocity),这四个层面分别是:第一,数据体总量巨大。大数据的起始计量单位至少是P(1000个T)、E(100万个T)或Z(10亿个T);第二,数据类型繁多。比如,网络日志、视频、图片、地理位置信息等等;第三,价值密度低,商业价值高;第四,处理速度快。最后这一点也是和传统的数据挖掘技术有着本质的不同。

近年来,由于网站及应用系统的漏洞、后门所导致的重大安全事件频频发生。根据企业网站安全检测服务的统计,我国高达60%的网站中存在安全漏洞和后门。各类大数据行业应用,广泛采用了各种第三方数据库、中间件,此类系统的安全状况不容乐观,广泛存在漏洞,并且各类网站漏洞修复的很不及时。通过对海量大数据的分析,可以挖掘发现大量新的网站攻击特征、网站漏洞,以及分析同源的特种木马等。

通过大数据,人们可以分析大量的潜在安全事件,找出它们之间的联系从而勾勒出一个完整的安全威胁。通过大数据,分散的数据可以被整合起来,使得安全人员能够采用更加主动的安全防御手段,利用大数据来甄别和发现风险和同源性漏洞。大数据与安全在未来是一种“你中有我,我中有你”的发展态势。利用大数据进行代码同源性安全分析框架应该包括三个主要部分:

1)数据收集:这是从网络中各种来源收集的各种格式的数据,这些来源包括谷歌的查毒网站VirusTotal、Web浏览器扩展和专门从事这种数据收集的安全供应商,还可以通过对大量网络攻击实例的研究,得到可用的知识库。

2)数据存储:存储数据和提取威胁情报的库,通过分析获得其特征码,针对关键主机上存在的系统同源性漏洞和承载的服务的可能漏洞,建立当前网络环境的漏洞知识库,分析当前网络环境的拓扑结构、性能指标等,得到网络环境知识库。

3)及时响应:通过同源性漏洞知识库来确认安全事件的有效性,其中包括URL阻止和安全信息及事件管理(SIEM)集成,通过一个轻量级的接口从多个渠道收集威胁网络安全的各类数据,比如恶意软件的哈希值、恶意链接等等,将各个源数据转化格式以便存储。一旦威胁源被数据化后,可以通过同源性分析出这个威胁是不是新出现的或者现在流行哪种类型的病毒,还能自动从多个恶意软件库读取文件哈希值发送给分析系统,以便能够及时响应。

用大数据进行代码同源性安全分析可以利用最新钓鱼网站上的信息、互联网中的恶意软件以及应对这些威胁的相关趋势。对企图攻击、已知网络恶意软件感染以及需要注意的行为和签名发出警报,加快威胁检测速度、提高防御体系灵活性,使现有安全措施更好地适应不断变化的网络威胁。

3 结束语

本文以大数据下对源代码同源性的影响为研究对象。源代码相似性查询从早期的精确模式匹配和文本检索,到现在的数据清洗、大型数据库的同源序列查询和Web信息搜索等近似查询应用,无论是应用领域还是查询技术都经历了深刻的变化。在资源的共享日益增多的情况下,利用大数据进行代码同源性安全分析,收集大量源代码数据库以及源代码缺陷模式库,对正在使用的软件进行分析,判断是否抄袭了其他软件代码,确定软件的同源性,为今后确认安全事件,对软件漏洞的快速定位做准备提供了可靠的技术支持。因此大数据下代码同源性鉴别具有现实的积极意义。

教育期刊网 http://www.jyqkw.com
参考文献

[1]张立峰.大数据与云存储[J].知识就是力量,2014(4):34-39.

[2]Arabyarmohamady, S.,Moradi, H., Asadpour, M. Interactive Mobile and Computer Aided Learning (IMCL)[C]//2012 International Conference on Digital,2012,Page(s):180-186.

[3]Koschke R. Survey of Research on Software Clones[J]. 06301-Duplication, Redundancy, and Similarity in Software, 2007.

[4]何非,何克清.大数据及其科学问题与方法的探讨[J].武汉大学学报:理学版,2014(1):1-12.

[责任编辑:杨玉洁]