Smart Fuzzing智能模糊测试

这篇具有很好参考价值的文章主要介绍了Smart Fuzzing智能模糊测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

BSidesLison2016-Keynote-The Smart Fuzzer Revolution by Dan Guido
演讲者:Dan Guido 解读:CSDN@IT鹅
Smart Fuzzing智能模糊测试
智能模糊测试在未来市场具有巨大潜能,掌握这套技术意味着我们对更多的安全产生了威胁,正如棱角的一句话来讲:
“网络本是安全的,自从又了安全研究员,就不安全了”。

1988年,华盛顿大学的一个教操作系统课程的教授要求学生编写一个程序,该程序通过其他
UNIX命令进行随机输入,我们就像丢垃圾一样像程序里丢数据,我们希望能得到不同的结果。
出人意料,这是一个有效的策略。

Random:“cat /dev/urandom | program”
-Class assignment in "Advanced Operating Systems"at University of Wisconsion(1988)
Generation:Write a BNF spec->introduce anomalies
-PROTOS from OUSPG(2002)&Block-based Fuzzing from Dave Aitel(2002)

在21世纪初期,人们想设计一种特殊的数据结构来对程序测试,有很多小组在参与研究,
奥卢大学与夏威夷大学创建了protos,Dave发表了关于他基于块的模糊测试的创新性论文。
这篇论文成为shell编码器手册中重要的章节。他的论文是Fuzzing的开端。
同时我们还研究了基于突变的模糊测试,这是一种资源密集型的测试,此时的模糊测试出现了
语料集(generate data)
我们通过自己搜集的数据,进行翻转、变异、改变形式的方式生成你的语料集
所有的共同点:
Apply random mutations to well-formed inputs and observe the results.
之后Fuzzing研究者改变这个策略。
目前已经创建了测量代码覆盖率并创建最小的输入集
Measure coverage and create a minimized input set
我们就能够判断哪些数据对程序造成影响,就排除了冗杂输入数据,而不是随机运行。
一旦我们发现了crash,一个有效的崩溃输入,我们就能解释程序的状态,通过模糊测试探索它
周围的代码,崩溃输入一般是聚集在一起的。
Initial attempts at combining SMT solvers and Symbolic Execution for test
generation(EXE[2006],DART[2005])
在2005-2006年,fuzzing将具体的执行与符号相结合。
Microsoft的研究团队在2008年带来了智能模糊测试(Smart Fuzzing)的策略。
Scalable,Automated, Guided Execution(SAGE)in “Automated Whitebox Fuzz Testing”
成效:
Combine fuzzing and symbolic execution to dynamically generate new tests,
while managing"state explosion"problems
1.Record execution and symbolically evaluate trace to gather new constrains
2.Use constraint solver to produce new inputs that execise new control paths
3.Measure code coverage to rank new inputs that attain maximal testing path

解读:
1.记录输入并且象征性地跟踪新的约束求解器
2.使用约束求解器生成执行新控制路径的新输入
3.测量代码覆盖率以对达到最大测试路径的新输入进行排名
Sage被微软广泛应用在windows7中

成效:
Pre-SAGE statements like if(x+y=z)or simple checksums would stymie a fuzzer,
Now they solved easily and help find new inputs.
Sage优点:
Works on binary, no source code requierd.
Handles real,very large applications.
Does not require a cache of starting inputs,or grammers.
No fales positive.It finds real bugs and generates input that trigger them

sage并且可以让它找到BUG,它不需要开发人员测试一大堆数据。
sage可以在没有源码的情况下直接对二进制文件进行Fuzzing,比如你可以在Microsoft Office上与性能
sage在Microsoft AFL开源之外,AFL并不是那么”聪明“。
它不能像sage一样使用symboolic execution符号执行,但是AFL更容易安装使用,并且开源。
Fuzzer可以找到sequel light和Java score等漏洞。并且打开OpenSSL与openssh
Sage很聪明,但是没有微软的支持,我们无法使用,虽然AFL很笨,但是我们能轻松使用。
哪一个更好呢?
大约在2012年-2013年
DARPA已经确定这是一个问题,他们想攻击,他们认为自动发现的错误的工具能整合他们的研究,
所以这是成立Cyber Grand Challenge的计划。
Smart Fuzzing智能模糊测试

Cyber Grand Challenge(CGC)

最早的蓝队防守:
团队需要构建一个Cyber Reasoning Systems(CRS)
CRS需要给出“CBs” pwnables
CRS需要找到“Proof of Vulnerability”(POV)
获得一些寄存器控制的输入,防守方需要去修复,并且保持服务器正常运行。以便其他竞争对手可以继续
搜集Flag,
CRS’s are ranked by a complex scoring algorithm(就如CTF有一套复杂的记分方式)
Every published strategy has been the same combinaation of ingredients:
-Fuzzing模糊测试
-Symbolic Execution符号执行框架
-Other program analyses(alias analysis,reachability,input dependence)
-其他程序分析(别名分析、可达性、输入依赖)
-Prioritization scheme for which problems to solve 解决问题的优先级方案
-State pruning scheme状态修剪方案
-Resource control and allocaton资源控制和分配

CRS中解决的问题:“Analysis Boosting

我们不可能支付巨额的工资进行研究,所以我们需要“开源”,需要得到大多数人的支持,因为这样整体技术
才能得到进步。我们搜集了各种测试错误的工具,搜集了这些所有输入生成将它们放入知识库(KnowledgeBase)
我们称Minset:Minimum Set of Maximal,即为这些输入的最大代码覆盖率的最小集。我们通过最大代码覆盖率的最小集
评估最好的Fuzzing数据,接着会把这些数据共享给其他工具,如果一个模糊器卡住了,它会到Symbolic Execution框架,
该框架的程序会克服chesksum校验并且创建一个新的输入,获得更多的代码覆盖率(code coverage),接着获得更多的Minimum
Set of Maximal,接着Minimum set会将它重新Fuzzing。现在一个模糊器可以绕过测试中卡住的代码。
然而学术界上对Fuzzing并不是很认同,他们主要是在程序语言等方面研究,正如我们所见在第一次安全性初次尝试之后,模糊测试就停止了,研究者们从来没有想到如此实用,他们不了解某些论文的价值,直到他们在CTF竞赛中使用,然而大部分人都不清楚如何构建这套系统,大规模工作以发现错误的分布式系统。
一些程序可能遇到的问题
.One or more exploitable or crashing vulnerabilites.一个或多个崩溃漏洞。
.One or more proof of vulnerability triggers一个或多个漏洞触发证据
buffer overflow缓冲区溢出漏洞 stack overflow栈溢出漏洞 heap overflow堆漏洞
type confusion类型混淆漏洞等,我们都可以用Fuzzing方式去寻找,我们通过一个工具Fuzzing找到
类型混淆漏洞,我们又通过另外一个工具找到Buffer Overflow,然后我们将两者结合起来,我们就能得带
更高的覆盖率。
关于CGC竞赛:
大多数团队构建的系统都需要专家操作,CGC评分或规则未解决可用性问题。他们为 DARPA 的研究操作系统专门构建了系统:DECREE,只有6个系统调用,没有文件、线程或信号。
CGC竞赛有很多分散漏洞的因素:自动修补、网络设备、资源限制等。4
CGC为自动化分析领域提供了急需的推动力,而且恰逢其时。现在很明显,自动错误发现是可能的,而且非常有效。
目前有几个原型系统,其中一部分已经开源。为CGC带来的挑战为比较自动错误发现工具提供了标准基准。 错误查找工具终于具有可比性。

Going Mainstream走向主流:

自动化错误发现与和智能模糊测试是从机器学习Machine Learning开始,10年前没有一个可靠的技术指标来比较技术
与其他系统,例如SE Comp系统的出现,让机器学习的不同策略之间能够持续的竞争
微软有个一Springfield项目,你可以通过注册访问他。
https://www.microsoft.com/en-us/springfield/
Google有一个在Cloud中运行的Fuzzing工具oss-fuzz
https://github.com/google/oss-fuzz
苹果公司在IOS10中使用了LLVM技术,可以分析App Store中应用程序的字节码或者位码,可以通过LLVM轻松的分析这些
应用程序,从而找到最基础的安全漏洞。例如API滥用和隐私泄漏等。
大部分主流的公司在开发实践中使用了它,可能会向公众开放一些技术。
自动分析所有应用程序的错误、后门和 API 滥用,苹果可以在一定程度上将他们的应用程序推销为可证明是安全的。 或者让你重新提交你的应用程序,直到它通过,每个竞争对手都必须匹配这些功能。
ALF让我们需要从前专家操作的东西消失,计算机软件的安全可以上升到国家安全层面,软件的漏洞也是不可忽视的。
安全影响每个人,但没有人愿意付费,但是一个清晰的“项目分析 = 利润”商业案例将解决这个问题。文章来源地址https://www.toymoban.com/news/detail-465818.html

到了这里,关于Smart Fuzzing智能模糊测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 和区块链Say Hi(4)--- 什么是智能合约Smart Contract

    智能合约是以太坊应用程序层的基石。 它们是存储在区块链上的计算机程序,遵循“如果…那么…”(IFTTT) 逻辑,并且保证按照其代码定义的规则执行,智能合约一旦创建就无法更改。 Nick Szabo 创造了“智能合约”这一术语。 1994 年,他撰写了智能合约简介;1996 年,他撰写

    2024年04月16日
    浏览(37)
  • 模糊测试面面观 | 模糊测试工具知多少

    自1988年威斯康星大学的Barton Miller首次提出模糊测试这一概念以来,模糊测试领域经历了持续长久发展。模糊测试作为一种软件测试方法,旨在通过向程序输入模糊、随机、异常的数据,探测和发现潜在的漏洞和错误。这种方法备受安全研究人员的青睐。随着时间的推移,这

    2024年02月09日
    浏览(41)
  • 聊聊模糊测试,以及几种模糊测试工具的介绍!

    以下为作者观点: 在当今的数字环境中,漏洞成为攻击者利用系统漏洞的通道,对网络安全构成重大威胁。这些漏洞可能存在于硬件、软件、协议实施或系统安全策略中,允许未经授权的访问并破坏系统的完整性。 根据 \\\"常见漏洞与暴露\\\"(Common Vulnerabilities and Exposures,CVE)

    2024年02月04日
    浏览(81)
  • 模糊测试面面观 | 模糊测试是如何发现异常情况的?

    协议模糊测试是一种用于评估通信协议、文件格式和API实现系统安全性和稳定性的关键技术。在模糊测试过程中,监视器扮演着关键角色,它们能够捕获异常情况、错误响应、资源利用等,为测试人员提供有价值的信息,有助于发现潜在漏洞和问题。本文将通过展开探讨监视

    2024年02月10日
    浏览(38)
  • 【人工智能】模糊推理

    如果说,我们简单的将 温度10度 的天气称为 冷 , 10度温度 25度 的天气称为 温暖 ,将 温度25度 的天气称为 热 ,这种模糊性就消除了,这在数学上没有任何问题,然而就这 1度 之差,就将 “冷”变为“温暖”,“温暖”变为“热” ,这又不符合我们日常的生活习惯 在企图

    2024年02月08日
    浏览(46)
  • 人工智能学习——模糊控制

    鉴于个人学习方向并不在此,所以此文章仅作为个人学习笔记使用,主要介绍理论以及学习过程,仅供参考! 为什么要有模糊控制、为什么要用神经网络、为什么还要将两者结合,还有那么多不同的结合方法等等问题的关键。两个理解模糊神经网络的重要前提: (1)模糊控

    2024年01月18日
    浏览(75)
  • 人工智能_不确定性推理(5,证据理论 6,模糊推理方法 7,模糊控制)

    4.5 证据理论 证据理论(theory of evidence):又称D一S理论,是德普斯特(APDempster)首先提出,沙佛(GShafer)进一步发展起来的一种处理不确定性的理论 D-S证据推理针对的是6分不清”或“不知道”这样的不确定性; 1981年巴纳特(JABarnett)把该理论引入专家系统中,同年卡威(JGarvey)等人用它

    2024年02月03日
    浏览(44)
  • 什么是汽车软件的模糊测试?

    汽车软件的模糊测试(fuzz testing)是一种在软件开发过程中用来发现潜在漏洞和缺陷的测试方法。它通过输入大量的随机、无效或异常数据来模拟真实环境中各种可能的异常情况,以测试软件的健壮性和稳定性。 1. 确定模糊测试的目标:确定要测试的软件模块或功能。对于汽

    2024年02月15日
    浏览(51)
  • 【智能车】模糊PID控制原理详解与代码实现

    本文主要由三部分构成:模糊PID控制器的原理,模糊PID控制器C++的实现与测试。 模糊PID控制流程如下图所示,把目标值 Xtarget 与输出值 Xout 的误差 e 与 e 的变化率 de/dt 作为模糊控制器的输入,模糊控制器先对输入进行模糊化处理,接着进行模糊推理,最后把模糊推理的结果

    2024年02月02日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包