1、什么是漏洞?

漏洞(vulnerability)是指系统中存在的一些功能性或安全性的逻辑缺陷,包括一切导致威胁、损坏计算机系统安全性的所有因素,是计算机系统在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷和不足。由于种种原因,漏洞的存在不可避免,一旦某些较严重的漏洞被攻击者发现,就有可能被其利用,在未授权的情况下访问或破坏计算机系统。

2、什么是fuzzing?

进行软件漏洞挖掘时,通常有静态分析(staticanalysis)、动态分析(dynamicanalysis)、符号执行(symbolicexecution)、模糊测试(fuzzing)这几种技术手段。

静态分析就是不真正的运行目标程序,但是通过对它进行各种语法、语义、数据流等的分析,来进行漏洞发掘。静态分析是由静态分析软件完成的;它的速度快,但是误报率高。

动态分析就是我们通常见到的大佬们用od一步步跟踪程序运行进行的分析。它的准确率很高,但是需要调试人员丰富的知识储备,而且这种调试方法很难进行大规模的程序漏洞挖掘。

符号执行简单来说,就是试图找到什么输入对应什么样的运行状态,它要去覆盖所有的执行路径。因此,当被分析的程序比较复杂,有很多执行路径时,就会遇到路径爆炸的问题。

模糊测试不需要人过多的参与,也不像动态分析那样要求分析人员有丰富的知识。简单解释,它就是用大量的输入数据自动去执行程序,从而发现哪些输入能够使程序发生异常,进而分析可能存在的漏洞。当前比较成功的fuzzer(执行模糊测试的程序)有AFL、libFuzzer、OSS-Fuzz等,我们的产品也是这类技术中的一种。

3、Fuzzing的技术要点

那么这一项技术主要有哪些难点,或者说影响挖掘效率的点呢?在安全会议上经常能看到对于这些问题的研究,比如2019年USENIX上用粒子群算法来辅助变异操作符的选择,AFL的变体AFLGo其实也是在CSS上发表的。

输入数据

因为要用输入数据去自动执行程序,很明显数据的生成会极大的影响挖掘效率。1.假如目标程序的输入格式是pdf文件,那么不符合该格式的文件就很难进入到目标程序内部进行运行测试。2.即使是符合输入要求的数据,也许数据A和数据B触发相同的执行路径,那么让A和B都运行就是在浪费资源。3.对于单独的数据A,也许其中真正控制执行路径的只是一小部分,那么在其余部分的处理就是在浪费资源。

对于第一个输入格式的问题,generation-basedfuzzer给出了可行的解决方案。简单来说,它要求一些关于输入数据格式的先验知识,这样它就可以更好地根据用户输入数据产生新数据。对于第二和第三个问题,AFL中给出了相应的解决办法。Afl-cmin能够给出输入数据的最小集合,也就是会把上述的A和B留其一;afl-tmin则能够将单个输入文件进行压缩。

变异操作

用户给出的数据是有限的,但是进行fuzz测试需要大量的数据,因此fuzzer会根据用户给出的数据产生新的数据,这一过程即所谓的变异操作。那么变异过程中定义哪些变异操作符(即哪些改变原输入数据的操作)?在一次变异时面对多个变异操作符该选择哪个?选用哪些输入数据进行变异?

提高覆盖率

Fuzz的本质就是用输入去检测当前输入对应的执行路径会不会产生可能的漏洞。因此,如果覆盖更多的路径,就意味着可能检测出更多的漏洞。提高覆盖率更像是一个根本性问题,前两个问题的解决其实也是在提高覆盖率。

4、

我们提出了一种数据流敏感的模糊化解决方案greyone,首先利用经典的特征污点来指导模糊化。采用一种轻量级的、合理的模糊驱动的污点推断(fti)方法,通过在模糊过程中改变输入字节的同时监测变量的值变化来推断变量的污点。针对这个问题,我们提出了一个新的输入优先级模型来确定要探索的分支、要变异的字节以及如何变异。此外,我们使用另一个数据流特征约束符合性,即污染变量到未触及分支中预期值的距离,来调整模糊化的演化方向。

我们的系统在LAVA数据集和19个真实世界程序上对其进行了评估。结果表明,在代码覆盖率和漏洞发现方面,它都优于各种最新的模糊器。在lava数据集中,greyone发现了所有列出的bug,还有336个未列出。在现实世界的程序中,Greyone平均发现了2.12倍的独特程序路径和3.09倍的独特错误比最先进的进化模糊器,包括AFL,Vuzzer,Collafl,Angora和Honggfuzz,而且,Greyone平均发现了1.2倍的独特程序路径和1.52倍的独特错误比最先进的符号解释辅助模糊器Qsym。

漏洞挖掘 符号执行_漏洞挖掘综述相关推荐

  1. 漏洞挖掘 符号执行_漏洞挖掘新思路:fuzz+符号执行——driller

    driller 符号执行+fuzz漏洞挖掘思路 先看一段程序 int main() { config_t* config=read_config(); if (config==null){ puts( ...

  2. 漏洞挖掘 符号执行_基于符号执行的二进制代码漏洞发现

    基于符号执行的二进制代码漏洞发现 牛伟纳 ; 丁雪峰 ; 刘智 ; 张小松 [期刊名称] <计算机科学> [年 ( 卷 ), 期] 2013(040)010 [摘要] 软件漏洞是安全问题的 ...

  3. 漏洞 立即留言_漏洞挖掘小白入坑指南

    文章出处:FreeBuf 文章链接:http://www.freebuf.com/articles/neopoints/144967.html 写在前面的话在此之前,很多朋友都曾通过电子邮件在我直播的 ...

  4. 漏洞挖掘 符号执行_简述符号执行

    前言 符号执行 (Symbolic Execution)是一种程序分析技术,它可以通过分析程序来得到让特定代码区域执行的输入.顾名思义,使用符号执行分析一个程序时,该程序会使用符号值作为输入,而非一般 ...

  5. avws扫描出来的漏洞怎么利用_漏洞扫描利用

    声明:禁止用作非法目的,谢绝一切形式的转载. 在这里对OpenVas进行了简单的介绍.这篇文章着重介绍通过OpenVas扫描出来漏洞之后,如何利用这些漏洞达到获取被入侵机器"肉鸡" ...

  6. web漏洞扫描器原理_漏洞扫描技巧篇 「Web 漏洞扫描器」

    0x00 前言 之前我们简单介绍了一下扫描器中爬虫的部分,接下来将继续介绍扫描器中一些我们认为比较有趣的技巧. 0x01 编码/解码/协议 在很久以前有人提问 AMF 格式的请求怎么进行检测,或者有什 ...

  7. 二进制漏洞挖掘_漏洞挖掘的艺术-面向二进制的静态漏洞挖掘

    本文首发于"合天智汇"公众号 作者: 萌新 0 本文是本系列的第二篇,将对面向二进制程序的静态漏洞挖掘技术进行介绍与分析. 面向二进制程序的静态漏洞的挖掘技术由于缺少源代码中的结构 ...

  8. java json injection_JSON相关漏洞(Hijacking+Injection)挖掘技巧及实战案例全汇总

    本文一是在为测试过程中遇到json返回格式时提供测试思路,二是几乎所有国内的资料都混淆了json和jsonp的区别--这是两种技术:以及json和jsonphijacking的区别--这是两个漏洞,这 ...

  9. 逻辑漏洞挖掘之——逻辑漏洞概述

    逻辑漏洞概述 SQL 注入,文件上传,代码执行,我们把渗透一个站点的所有重点都放在了这些可以一步到位的漏洞上,我们把这些漏洞称之为高危漏洞,这些漏洞在工具化盛行的今天,已经越来越难见到了.现有的工具检 ...

  10. csrf漏洞防御方案_变量覆盖漏洞利用及防御方案

    一.漏洞简介 变量覆盖漏洞是指攻击者使用自定义的变量去覆盖源代码中的变量,从而改变代码逻辑,实现攻击目的的一种漏洞.通常来说,单独的变量覆盖漏洞很难有利用价值,但是在与其他应用代码或漏洞结合后,其造成 ...

最新文章

  1. python赋值语句格式_Python中变量和变量赋值的几种形式
  2. 面向对象1(super、this)
  3. php成品网站安装,PHPweb成品网站安装环境要求和安装方法
  4. 武汉大学计算机学院c404,985录取名单(武大)!武大不歧视!80分政治复习路线图!最新调剂信息!...
  5. PR曲线以及ROC曲线的简单理解
  6. hdu5773 The All-purpose Zero 贪心+最长上升子序列
  7. CCD(像素)与视觉系统的基础知识
  8. 各种门平面图画法_关于CAD各种门怎么画平面图就行 CAD铝合金门窗
  9. 苹果v10模板需要几的php,苹果MACCMSv10源码模板安装常见问题
  10. 达人评测 i511400h和i710875h哪个好
  11. 红杉领投,智加科技完成A+轮融资,将打造1000辆无人驾驶重卡车队
  12. 她只用一个方法,就把英语拿下了!
  13. 给定一个完全循环赛的比赛结果,其中n个队伍两两比赛一次。每场比赛以一方胜出或者平局结束。设计一个算法,把n个队伍排序,序列中每个队伍都不曾输给紧随其后的那个队伍。说明该算法的时间效率类型。
  14. python数字转大写字母_python变量名称如何转化为大写字母?
  15. 2022 届大四学长实习心得、职场经验分享、转型思考
  16. SpringBoot + 秒杀系统
  17. cordova语音通话_如何在Cordova中将文本转换为语音(语音合成)
  18. 信息系统项目管理师必背核心考点(三)UML的14种图形工具
  19. 计算机页面优盘页面分开,u盘被分成2个盘怎么合并
  20. 河南科技大计算机专业录取分数线,河南科技大学历年各专业录取分数一览表

热门文章

  1. 最大子列问题与分治算法
  2. C++ set自定义排序
  3. 低功耗视频解码芯片-TVP5150
  4. 架构师主要做些什么,你知道吗?
  5. Pascal到c++,求大佬翻译!
  6. java怎么分解质因数,java分解质因数的方法
  7. 第三方微信和支付宝的支付流程
  8. 整数变百分数C语言,整数百分比
  9. 特斯拉员工手册与马斯克的工作建议
  10. [lua]紫猫lua教程-命令宝典-L1-01-02. 变量