模糊测试方法研究

正文

   随着业界对软件安全问题关注度的不断提升, 漏洞挖掘也逐渐成为相关领域重点研究的内容。漏洞挖掘技术是指对未知漏洞的探索, 通过综合应用各种技术和工具, 尽可能地找出软件中潜在的漏洞。传统的漏洞挖掘技术 (静态分析技术、动态分析技术) 耗时费力, 又难以对每一个软件进行全方位的漏洞扫描, 更重要的是即使经过严格测试的软件, 在投入运行后还是会发现有漏洞存在, 这促使了对一种更为有效的漏洞挖掘方法的研究。模糊测试(fuzz testing)是一种介于完全的手工渗透测试与完全的自动化测试之间的安全性测试类型,它能够在一项产品投入市场使用之前对潜在的安全漏洞进行分析和挖掘。本文围绕模糊测试技术的基本理论,从模糊测试执行过程、模糊测试数据生成的方法和模糊测试的应用等方面对模糊测试进行介绍。

模糊测试是一种基于缺陷注入的自动化软件测试技术,它使用大量半有效的数据作为应用程序的输入,以程序是否出现异常或错误作为标志,来发现应用程序中可能存在的安全漏洞。所谓半有效的数据是指对应用程序来说,测试用例的必要标识部分和大部分数据是有效的, 但同时该数据的其他部分是无效或者漏洞攻击的。因为的数据会被待测程序认为这是一个有效的数据,这样应用程序就有可能发生错误,从而导致应用程序的崩溃或者触发相应的安全漏洞。模糊测试是一个自动或半自动的过程,这个过程包括反复操纵目标软件并为其提供处理数据。

模糊测试(fuzz testing)和渗透测试(penetration test)都是属于安全测试的方法,它们既有联系也有区别。渗透测试一般是模拟黑客恶意入侵的方式对产品进行测试,对测试者的执行力要求很高,成本高,难以被大规模应用。而模糊测试通过向应用提供非预期的输入并监控输出中的异常来发现软件中缺陷,整个执行过程依靠工具进行自动化或半自动化测试。模糊测试技术具有自动化程度高、可用性好、误报率低, 对目标程序源码没有依赖等优点。

模糊测试执行过程主要包含几个基本阶段:


(1)识别测试目标

    确定明确的测试目标,才能决定使用的模糊测试工具或方法。比如需要选择应用包含的特定文件或者库作为测试目标,需要把注意力放在多个应用程序之间共享的那些二进制代码上。因为如果这些共享的二进制代码中存在安全漏洞,将会有非常多的用户受到影响,因而风险也更大。

(2)识别输入

大部分可被利用的安全漏洞都是由于应用没有对用户的输入进行校验或是进行必要的非法输入处理。是否能找到所有的输入向量(Input vector)是模糊测试能否成功的关键。寻找输入向量的原则是:从客户端向目标应用发送的任何东西,包括头(Headers)、文件名(File Name)、环境变量(Environment variables),注册表键(Registry keys),以及其他信息,都可能是潜在的模糊测试变量。

(3)生成模糊测试数据

大多数模糊测试的方法是通过向目标系统不断输入可以诱发软件缺陷的测试数据,因此测试数据的生成是模糊测试非常关键的环节,主要依赖测试目标系统的特点和数据格式进行生成。

(4)执行模糊测试数据

自动化地向被测的系统发送数据包、打开文件、或是执行被测应用的过程。这个阶段一般与生成测试数据并行进行。

(5)监视异常

监控异常和错误是模糊测试中重要但经常容易被忽略的步骤。模糊测试需要根据被测应用和所决定采用的模糊测试类型来设置各种形式的监视。

(6)判定发现的漏洞是否可被利用

在模糊测试中发现了一个错误,需要判定这个被发现的错误是否是一个可被利用的安全漏洞。这种判定过程既可以由模糊测试的执行者来进行,也可以交给安全测试专家来进行。

模糊测试技术的应用十分广泛, 可以测试的对象种类繁多, 比如环境变量和参数、 Web 应用程序、文件格式、网络协议、Web 浏览器和物联网系统等方面。

环境变量和参数的模糊测试属于本地化的模糊测试, 其测试对象是命令行参数和环境变量。该测试方法是一种最简单的模糊测试,即对命令行参数或环境变量进行恶意注入,注入成功后有可能导致程序崩溃。最常用的环境变量和参数的模糊测试工具是iFuzz,它曾成功地发现IRIX, HP-UX, QNX, MacOS X和AIX 等系统的漏洞。

Web 应用程序容易受到各多类型的漏洞攻击, 如拒绝服务、跨站点编写脚本、 SQL 注入和弱访问控制等。在对 Web 应用程序进行模糊测试时要特别关注遵循 HTTP 协议规范的测试数据包。 Wfuzz是一款强大开源的Web Fuzz测试工具,它通过审计参数、登录认证、Get/Post爆破等方式,挖掘Web应用程序的安全漏洞。

文件格式的模糊测试的测试对象包括Web 浏览器、邮件服务器、 office 办公组件及媒体播放器等。文件格式模糊测试的目标是发现应用程序在解析特定文件格式时出现的漏洞。在对文件格式进行模糊测试时,待测软件常会被很多种类型的漏洞攻击,包括 DoS、整数处理问题、简单的栈/堆溢出、逻辑错误及格式化字符串等。全球著名的安全公司Verisign iDefense开发了基于Windows平台文件格式模糊测试工具FileFuzz和基于 UNIX 操作系统上文件格式模糊测试工具SPIKEfile,它们分别实现了基于变异的文件格式模糊测试和基于生成的文件格式模糊测试。

网络协议的模糊测试可能是最广泛被利用的模糊测试类别,目前存在很多不同的方法来实现对网络协议的模糊测试。网络协议的模糊测试如此之流行是因为它能够发现很多高风险漏洞。其测试对象包括邮件服务器、数据库服务器、远程访问服务、多媒体服务器和备份服务器等。由芬兰Oulu大学研发、并获得微软资金支持的模糊测试工具PROTOS,发现了SNMP、SIP、LDAP等协议中的安全漏洞。

Web 浏览器容易受到多种类型的漏洞攻击, 包括 DoS、缓冲区溢出、远程命令执行、绕过跨越限制、绕过安全区和地址栏欺骗等。对 Web 浏览器进行模糊测试,常用方法包括刷新HTML页、加载WEB页和目标单浏览器对象。Mangleme是一款发现WEB 浏览器中HTML解析缺陷的模糊测试工具。Verisign iDefense公司开发的模糊测试工具COMRaider,实现对Web浏览器ActiveX控件进行模糊测试。

国内企业匡恩网络针对物联网系统研发出模糊测试工具,针对物联网协议、物联网设备和物联网软件系统进行测试,已经发现了西门子、施耐德、艾默生、力控等多个不同厂商多款不同型号的DCS、PLC和上位机组态软件的数十个漏洞。

表1列举了著名的开源模糊测试工具,其中SPIKE被商业和政府机构用于测试网络协议,Sulley和Peach用于文件格式和网络协议的测试。

表1.开源模糊测试工具

表1.开源模糊测试工具

工具名称工具语言特点

SPIKEC广泛使用,支持多类型的模糊测试,但不支持Windows系统操作

SulleyPython优秀的崩溃报告,提供自动虚拟化技术

Peach


Python扩展性强、运行速度快,最新版C#还没完成开发,部分功能需自定义扩展

微软提出“云端模糊测试即服务”的理念

早在2002 年微软赞助模糊测试工具套件—PROTOS 测试套件的研究,并把模糊测试应用在Windows内核、Office和IE等产品的测试中。微软于2005 年宣布在可信计算安全开发生命周期中将模糊测试作为安全漏洞挖掘的重要技术支持。据微软的报告,Windows 7发现的安全漏洞约1/3是通过模糊测试技术发现的。2016年,微软提出“云端模糊测试即服务”的理念,推出 Project Springfield项目,提供基于Azure云的模糊测试工具Springfield,该工具结合模糊测试和AI工具检测软件中的安全隐患。

Google 开放模糊测试服务OSS-Fuzz

Google开源能够针对开源软件进行持续模糊测试的OSS-Fuzz。OSS-Fuzz利用可更新的模糊测试技术与可拓展的分布式结合,为大规模的分布式模糊测试执行提供环境。在该工具开源后五个月里,这款工具在开源项目中嗅探出了超过 1000 多个 bug,其中包括 264 个潜在的安全漏洞。Google 表示,OSS-Fuzz 已经在几个关键开源项目中找到了多个安全漏洞,并提交开源项目组修改。


分析

1、模糊测试的优点

与传统漏洞挖掘方法相比, 模糊测试技术有其无法比拟的优势。模糊测试的测试目标是二进制可执行代码, 比基于源代码的白盒测试适用范围更广;模糊测试是动态实际执行的,不存在静态分析技术中存在的大量误报问题;模糊测试的原理简单,没有大量的理论推导和公式计算,不存在符号执行技术中的路径状态爆炸问题;模糊测试自动化程度高,不需要逆向工程中大量的人工参与。模糊测试技术的优点使它成为一种应用范围广泛的漏洞挖掘技术。

2、模糊测试的局限性

(1) 对访问控制漏洞无能为力,因为模糊测试系统无法理解程序的逻辑,所以如一些违反权限控制的安全漏洞难以发现。

(2) 受制于糟糕的设计逻辑。糟糕的设计逻辑并不会导致程序崩溃,而模糊测试发现漏洞一个主要依据是监控目标系统的异常和错误信息,因此模糊测试难以发现这类漏洞。

(3) 无法识别多点触发漏洞,当前的模糊测试技术往往只能挖掘出由单个因素引起的漏洞,而对于需要多条件才能触发的漏洞却无能为力。

 

建议

  1、目前,Web应用中存在大量拒绝服务(Dos)、跨站脚本(XSS)、SQL注入(SQL injection)等漏洞,Web应用模糊测试不仅可以发现Web应用本身的漏洞,还可以发现Web服务器和数据库服务器的漏洞。建议通过模糊测试的方法和工具,对Web应用进行漏洞挖掘。

  2、Android在手机的市场上占有率很高,通过模糊测试不但可以发现钓鱼欺诈、拒绝服务和权限提升等Android的常见漏洞,而且可以对App的稳定性进行分析验证。建议通过模糊测试的方法和工具,对App的Android版进行漏洞挖掘。

  3、随着智能手机、可穿戴设备、活动追踪器、无线网络、智能汽车、智能家居等终端设备和网络设备的迅速发展和普及利用,针对物联网设备的网络攻击事件比例呈上升趋势,攻击者利用物联网设备漏洞可入侵设备,获取设备控制权,通过控制大量物联网设备,黑客可以发起分布式拒绝服务网络攻击(DDoS)。建议利用模糊测试,对物联网的网络协议和设备进行漏洞挖掘。

  4、随着业务发展和技术升级需要,会引入一些开源软件或者免费软件,而据Google的报告,开源软件或者免费软件的安全漏洞还是非常多,建议通过模糊测试的方法和工具,在引入开源软件或者免费软件的过程,做安全风险评估。

  5、针对业务特点和系统特征,构造模糊测试数据知识库,提升模糊测试数据的针对性,通过人工智能优化模糊测试数据生成和自动化执行过程,构建模糊测试平台,提供安全测试的服务给分行或者行外客户使用。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,183评论 6 516
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,850评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,766评论 0 361
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,854评论 1 299
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,871评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,457评论 1 311
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,999评论 3 422
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,914评论 0 277
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,465评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,543评论 3 342
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,675评论 1 353
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,354评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,029评论 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,514评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,616评论 1 274
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,091评论 3 378
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,685评论 2 360

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,121评论 4 61
  • 总是一副面具 由纤细白皙的手举着 挡在脸前, 那轻轻举着面具 的手腕 十分灵巧: 虽然有时 有点颤抖, 指尖抖动,...
    rudy1阅读 373评论 0 1
  • 希望有一天,世上再没有这么多的“形式”, 大家看到,听到,表达的都是内心最真挚的情感, 每一个人都能感受到爱,奉献...
    蒋蒋你好呐阅读 107评论 0 0
  • 云描淡写春秋笔, 霹雳手段舞万钧, 漫卷雨,晚来急, 一掇心事,半湖水,盈盈泪, 伊人独自憔悴, 残荷断藕,倒悬曰...
    赛腾烟阅读 273评论 2 5
  • 【“我”是谁?】 “我是我——” 过往经历的组合 过往的信息能量 即是“我” 经历了“山” 就显“山” 的气质 经...
    宁静的夏天陪你看海阅读 64评论 0 0