zoukankan      html  css  js  c++  java
  • Proj THUDBFuzz Paper Reading: MemLock: Memory Usage Guided Fuzzing

    Abstract

    Uncontrolled memory consumption可能导致拒绝服务攻击
    本文贡献: MemLock
    特点: 1. 生成能够占用大量内存的输入
    2. 触发不受控制的内存消耗异常
    效果: 无需领域知识
    实验: 优于AFL, AFLfast, PerfFuzz, FairFuzz, Angora, QSYM

    Intro

    针对时间复杂度测试: SlowFuzz, PerfFuzz, ReSue
    针对内存损坏漏洞的若干研究
    本文着重内存消耗bug:

    1. 不受控制的递归消耗堆栈内存 uncontrolled-recursion
    2. 不受控制的内存分配,常常是用不受信任且没有验证大小范围的值来分配内存 uncontrolled memory allocation
    3. 内存泄漏 没有跟踪和释放内存memory leak
      现有的测内存消耗bug的多基于启发式方法,如Radmin等人学习并且执行了多个概率有限自动机,然后规定目标程序的资源使用情况在习得的automata中,这样可以在早期就检测到resource usage anomalies。
      现有的灰盒测试过于偏重coverage,要想测出内存bug,不但需要避免内存分配失败的场景,还需要为内存大小设置较大值以超过对内存的最大值。
      本文MemLock的主要步骤是:
    4. 静态分析
      1. 确定与内存消耗相关的语句操作
      2. 对调用图进行定性分析,确定堆栈使用情况
      3. 对内存使用情况做定量分析,确定堆内存的使用情况
      4. 分析程序控制流图
    5. 动态执行
      1. 使用分支覆盖情况来指导新路径的覆盖,使用内存消耗信息来尽可能消耗内存
      2. 如果一个输入能使程序路径消耗越来越多的内存,认为这个输入值得关注。

    实验: 优于AFL, AFLfast, PerfFuzz, FairFuzz, Angora, QSYM
    指标:

    1. 找到+40.5%的unique crashes
    2. 找到+17.9%的vunerablities
    3. 找到特定memory consumption的速度比其他fuzzer快至少2倍
    4. 比其他工具的内存消耗至少多150倍

    Overview

    Motivating Examples

    Bug示例

    代码来源,行号,原理,造成的问题

    Approach Overview


    先介绍两大部分,每个部分的输入输出,两个部分之间的分工和彼此的数据依赖关系。按照时序描述程序。用之前的bug示例来重新说明程序的运行机制,比如种子的保留政策。

    Methodology

    3.1 Static Analysis

    插桩目的是为了获取哪些信息。
    Control Flow Graph上,每个程序分支都有一个虚拟的唯一的id。定义: For an executed program path, its trace bits are an 8-bit array with size (2^K)(K=16). the value of IDth element is stored in an 8bit counter

  • 相关阅读:
    利用JSON Schema校验JSON数据格式
    爬虫初体验:Python+Requests+BeautifulSoup抓取广播剧
    CSS选择器语法&示例
    Xpath语法&示例
    通过批处理命令for提取数据
    katalon系列十七:报告&Katalon Analytics
    katalon系列十六:代码运行时实时创建元素对象或列表
    PhpStorm 常用插件
    Nginx 配置 https
    Tmux 入门
  • 原文地址:https://www.cnblogs.com/xuesu/p/14174710.html
Copyright © 2011-2022 走看看