![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
论文阅读笔记
B3a1e
这个作者很懒,什么都没留下…
展开
-
论文阅读笔记20230303
本文提出了MEDS,一个内存错误检查器(Memory Error Detector)。其通过两个理想属性(Ideal Properties)来增强检测能力:Infinite Gap和Infinite Heap。原创 2023-03-03 20:28:12 · 49 阅读 · 2 评论 -
论文阅读笔记20230323
并发漏洞(Concurrency Vulnerabilities)极难检测,是对软件安全的威胁。触发并发漏洞需要特定的Thread Interleaving和相应的输入,而现有的相关工作没有同时对两者进行改进,存在一定的问题。原创 2023-03-23 20:52:58 · 166 阅读 · 0 评论 -
论文阅读笔记20230325
基于输入语法(Input Grammar)的Fuzzer可以挖掘到更深层次的程序状态(Deeper Program States)。而现有的Grammar-Aware的Fuzzer在生成输入时会引入样本偏差(Sampling Bias)。原创 2023-03-25 21:27:59 · 201 阅读 · 1 评论 -
论文阅读笔记20230326
白盒Fuzzing是一种基于符号执行(Symbolic Execution)和约束求解(Constraint Solving)的自动动态测试生成(Automatic Dynamic Test Generation)的方式。而一些高度结构化的输入限制了白盒Fuzzing的效率。原创 2023-03-26 21:58:08 · 158 阅读 · 1 评论 -
论文阅读笔记20230317
本文提出了结合数据依赖图(Data Dependency Graphs)和代码覆盖率反馈的导向性Fuzzing。本文基于AFLplusplus实现了DDFuzz,挖掘到了更多的Bugs。原创 2023-03-17 10:58:43 · 149 阅读 · 0 评论 -
论文阅读笔记20230316
数据流分析(Data Flow Analysis)被证明能够更好地辅助Fuzzer挖掘到深层的漏洞。但传统的污点分析(Taint Analysis)消耗人力、速度慢、不准确,严重影响了Fuzzing的效率,从一定程度上限制了数据流分析的应用。原创 2023-03-16 20:53:32 · 112 阅读 · 0 评论 -
论文阅读笔记20230313
本文从软件工程(Software Engineering)的角度出发,有大量较为复杂的软件以多个组件(Components)的方式构成。组件之间通过内存缓冲区(Memory Buffer)作为接口(Interfaces)进行交互通信,形成了程序逻辑中的不同处理阶段(Stages of Processing)。越往后的阶段越难被Fuzzer所挖掘到。原创 2023-03-13 11:31:48 · 57 阅读 · 0 评论 -
论文阅读笔记20230312
本文提出了Fuzzing@Home,第一个公开合作Fuzzing网络(Public Collaborative Fuzzing Network)。参与进网络的公司/个人可以一起对软件进行Fuzzing,提高Fuzzing的效率。原创 2023-03-12 22:47:04 · 216 阅读 · 1 评论 -
论文阅读笔记20230310
错误处理代码(Error Handling Code)存在很多严重的安全问题,但由于只有一些偶尔产生的错误(内存不足或网络连接失败)能够触发相应的代码,现有的Fuzzer难以直接对其进行测试。原创 2023-03-10 19:48:09 · 57 阅读 · 0 评论 -
论文阅读笔记20230309
近年来针对基于覆盖率反馈(Coverage Feedback)的Fuzzer提出了一种覆盖率引导追踪(Coverage-guided Tracing)技术,通过选择性获取覆盖率的方式极大地增加了Fuzzing的吞吐量(Throughput)。但其主要针对基本块覆盖率粒度(Basic Block Coverage Granularity)进行了改进。而更细粒度的基于边覆盖率(Edge Covearge)和遍历次数(Hit Counts)的覆盖率反馈方法不能适用。原创 2023-03-09 13:12:06 · 170 阅读 · 0 评论 -
论文阅读笔记20230308
本文提出了一种应用程序敏感(Application-aware)的Fuzzer。其不需要任何程序的先验知识(Prior Knowledge)或输入格式(Input Format),通过将静态分析和动态分析结合,对控制流(Control-flow)和数据流(Data-flow)特点来推测程序的功能属性。原创 2023-03-08 19:32:24 · 58 阅读 · 1 评论 -
论文阅读笔记20230307
针对库文件(Library)的Fuzzing需要一个能单独运行的Harness来实现,而Harness的实现通常由人工编写,不能自动化地生成。本文提出了FuzzGen,可以在特定环境下针对复杂的库文件自动推测相应的接口(Interface),并生成相应Harness。原创 2023-03-07 10:33:47 · 130 阅读 · 0 评论 -
论文阅读笔记20230306
基于覆盖率反馈(Coverage-guided)的Fuzzing是漏洞挖掘的重要方式之一。其中,对覆盖率情况的追踪(Code Coverage Tracing)对Fuzzer性能负载的影响最大。Fuzzer每次执行一个测试用例都会追踪当前代码覆盖率情况,但是大部分测试用例并不会产生新的覆盖率,反而对Fuzzer的执行效率产生了影响。原创 2023-03-06 13:49:18 · 64 阅读 · 1 评论 -
论文阅读笔记20230305
变异调度(Mutation Scheduling)能够在很大程度上提升Fuzzing的效率。而现有的变异调度策略往往在现实生活(Real World)的程序中没有很好的效果,而且需要一定的专业知识来设置相关参数。原创 2023-03-05 13:24:53 · 250 阅读 · 0 评论 -
论文阅读笔记20230304
AFL在程序覆盖路径挖掘上存在瓶颈,因为它不知道程序输入(Program Inputs)中哪一部分的变异可以触发新的路径。原创 2023-03-04 18:19:57 · 65 阅读 · 0 评论 -
论文阅读笔记20230302
在工业界中,大量Fuzzing策略(Strategies)受限于软件的复杂性(Complexity)和多样性(Diversity),不能发挥出很好的效果。原创 2023-03-02 16:51:40 · 105 阅读 · 1 评论 -
论文阅读笔记20230301
本文发现Fuzzing历史(History)中包含了关键变异策略(Key Mutation Strategies)的丰富知识(Rich Knowledge),能引导Fuzzer发现不一样的路径(Paths)和奔溃(Crashes)。本文提出针对Fuzzing历史进行分析,以此变异出更多有意义的输入并发现新路径。原创 2023-03-01 20:53:47 · 213 阅读 · 1 评论 -
论文阅读笔记20230228
种子调度(Seed Scheduling)指Fuzzer选择种子的顺序,会极大地影响到一个Fuzzer的性能。现有的方法都基于历史变异数据(Historical Mutation Data)来调度种子,而忽视了控制流图(Control Flow Graph)结构对其的影响。控制流图能够帮助变异种子以覆盖到潜在的边覆盖率(Potential Edge Coverage)。原创 2023-02-28 21:04:00 · 109 阅读 · 0 评论 -
论文阅读笔记20230227
本文提出了针对AFL能量调度过程(Power Schedule Process)的对抗式多臂老虎机模型(Adversarial Multi-Armed Bandit Model)。文中用生成新测试用例并产生新路径的奖励可能性(Reward Probability)解释了AFL的调度算法。原创 2023-02-27 13:54:08 · 153 阅读 · 0 评论 -
论文阅读笔记20230226
内存错误(Memory Corruption)是软件中常见的一种漏洞,攻击者可以通过其访问到系统中机密的信息。本文提出了Driller,一个自动化漏洞挖掘工具,通过将混合符号执行(Concolic Execution)和模糊测试(Fuzzing)技术,来挖掘到软件中深层次的漏洞。原创 2023-02-26 13:56:10 · 77 阅读 · 1 评论 -
论文阅读笔记20230225
本文提出了Dowser,一个结合了污点分析(Taint Tracking)、程序分析(Program Analysis)和符号执行(Symbolic Execution)的导向(Guided)Fuzzer,其能够定位到程序逻辑深处的缓冲区溢出漏洞。原创 2023-02-25 15:23:18 · 73 阅读 · 1 评论 -
论文阅读笔记20230224
ASan(Address Sanitizer)通常用于检查内存的越界访问,但其大量的检查为程序带来了很多运行时的开销。原创 2023-02-24 15:42:48 · 84 阅读 · 0 评论 -
论文阅读笔记20230223
随着移动设备(Mobile Devices)的快速发展,大量的第三方设备驱动被引入内核。这些第三方厂商生产的驱动往往缺少代码审计而存在大量的漏洞,其复杂的数据结构也让Fuzzing的过程十分低效。原创 2023-02-23 13:51:24 · 119 阅读 · 2 评论 -
论文阅读笔记20230222
在IoT领域,由于提取(Extracting)和模拟(Emulating)固件的难度较大,对其的安全性分析通常使用黑盒Fuzzing的方式,黑盒产生的输入往往不能测试到深层次的代码。另一种方法是使用控制IoT设别的应用来生成相应的结构输入,但这种输入格式通常被应用程序限制,也无法取得更好的效果。原创 2023-02-22 10:24:35 · 97 阅读 · 1 评论 -
论文阅读笔记20230221
本文提出缩短Fuzzing中每一次迭代的执行时间可以提高Fuzzing的性能。在AFL中,由于文件系统竞争(File System Contention)和系统调用`fork()`的可扩展性(Scalability),并行运行120个核时会使得Fuzzing消耗的时间增加24倍。原创 2023-02-21 10:49:08 · 51 阅读 · 1 评论 -
论文阅读笔记20230220
对流行网络框架进行攻击面分析极其重要,本文提出了DELTA,一个针对软件定义网络(Software-Defined Networks)的安全评估框架,同时实现了一个协议敏感(Protocol-aware)的Fuzzing模块。原创 2023-02-20 10:42:04 · 57 阅读 · 1 评论 -
论文阅读笔记20230219
本文通过使用马尔可夫决策过程(Markov Decision Processes)的概念,将Fuzzing形式化成一个强化学习(Reinforcement Learning)的过程。这使得我们可以应用现有的Deep Q-learning算法来优化奖励(Rewards)。原创 2023-02-19 11:00:23 · 95 阅读 · 1 评论 -
论文阅读笔记20230218
本文认为控制流(Control-flow)的覆盖率反馈是粗粒度的,而数据流(Data-flow)能够反映出更多的程序行为。然而,基于数据流的Fuzzer往往需要很多静态分析的操作,会带来很多运行时的开销。原创 2023-02-18 17:03:51 · 113 阅读 · 1 评论 -
论文阅读笔记20230217
本文提出了DART(Directed Automated Random Testing),一个自动化测试软件的工具。原创 2023-02-17 10:58:58 · 87 阅读 · 0 评论 -
论文阅读笔记202300216
现有的浏览器(如Chrome、Edge等)通过Constant Blinding的方式来移除攻击者在JIT代码中的可控Constants(如Shellcode等)。本文提出了Dachshund,一个由Fuzzing驱动的定位用户定义常量位置的框架。原创 2023-02-16 10:55:51 · 43 阅读 · 0 评论 -
论文阅读笔记20230215
大多数基于覆盖率的灰盒Fuzzing(Coverage-based Greybox Fuzzing)都会执行少量的高频率(High-frequency)路径,通过各种策略来引导Fuzzing触发低频路径(Low-freqency)。本文提出了使用马尔可夫链模型(Markov Chain)将种子(Seed)触发的路径i和单个输入触发的路径j联系起来。每个种子的能量(Energy)表示该种子能够生成的输入数量。本文提出的AFLFast为低频路径分配更多的能量,使其能够探索更多的路径。原创 2023-02-15 16:15:10 · 69 阅读 · 1 评论 -
论文阅读笔记20230214
为了挖掘Data Races这类并发的问题,近期的一些Fuzzing技术通过实时地影响Thread Scheduling(线程调度)来挖掘Thread Interleaving。但其存在一定的缺陷,一是没有考虑到Thread Interleaving的上下文影响;二是随机地重复会错过一些罕见的Thread Interleaving。原创 2023-02-14 18:59:05 · 141 阅读 · 0 评论 -
论文阅读笔记20230213
现有的灰盒Fuzzing无法做到有效的导向性Fuzzing。有很多希望通过导向Fuzzing定位到的目标代码,如一些代码改动或补丁、关键的系统调用、复现漏洞时堆栈中的函数调用等。原创 2023-02-13 19:43:39 · 80 阅读 · 0 评论 -
论文阅读笔记20230212
现有的Directed Greybox Fuzzing缺少对Ordered Target Sites和Data Conditions的考虑,导致在Fuzzing过程中会消耗大量的时间。本文提出了基于约束引导的(Constraint-guided)Directed Greybox Fuzzing,文章将约束(Constraint)定义为一个Target Site和Data Conditions的结合,Fuzzer试图让种子以特定的顺序排列来满足约束条件。原创 2023-02-12 21:43:22 · 102 阅读 · 0 评论 -
论文阅读笔记20230211
现有的Fuzzer(如AFL)通常采用一种粗粒度的覆盖率获取方式,这种不完整和不准确的方式限制了Fuzzer的发挥。第一,可能会导致路径碰撞;第二,Fuzzer无法根据粗粒度的覆盖率信息做出有效的Fuzzing策略。原创 2023-02-11 23:54:36 · 57 阅读 · 1 评论 -
论文阅读笔记20230210
根据二进制程序的源码是否可得,Fuzzing主要分为了两种形式,一种是基于编译器的,另一种是只有二进制的(黑盒)。目前研究对基于编译器的Fuzzer有大量的研究,却忽视了对只有二进制的研究。这方面主要的挑战在于应用Fuzzing-enhancing Program Transformations,同时尽量减少性能上的损失。原创 2023-02-10 11:17:19 · 108 阅读 · 1 评论 -
论文阅读笔记20230209
导向性Fuzzing(Directed Fuzzing)往往让Fuzzer产生导向性的数据让程序执行到目标代码段。但现有的导向性Fuzzer并没有非常高效,往往在不会执行到目标代码段的程序路径上进行大量的符号执行或实际执行,导致消耗了大量的计算资源。原创 2023-02-09 18:07:02 · 139 阅读 · 0 评论 -
论文阅读笔记20230208
基于覆盖率反馈的灰盒Fuzzing技术在漏洞挖掘中占据了重要的位置,然而不同的技术所依赖的具体覆盖率信息是不同的(如边覆盖率、基本块覆盖率、代码行覆盖率等)。本文为了挖掘不同的覆盖率之间的区别,做了系统性的研究。本文提出了Sensitivity(敏感程度)的概念,用于比较不同的覆盖率信息间的关系。同时在对比试验中发现,不同的覆盖率在特定的分支类别中都具有各自的优势,且没有哪一种覆盖率完全优于其他覆盖率标准。原创 2023-02-08 13:48:02 · 94 阅读 · 0 评论 -
论文阅读笔记20230207
基于最近Symbolic Execution和Dynamic Test Generation的发展,本文提出了一种白盒的Fuzz Testing方法。同时实现了工具SAGE(Scalable, Automated, Guided Execution)专门用于x86指令集层的Tracing并针对Windows应用的白盒Fuzzing。原创 2023-02-07 19:14:20 · 71 阅读 · 1 评论 -
论文阅读笔记20230206
近年来,针对TCP拥塞控制的攻击越来越多,而其中大多数漏洞都是通过手动分析发现的。本文提出了一种将Fuzzing和运行时分析技术结合的技术,自动化地找到TCP拥塞控制实现上的漏洞。原创 2023-02-06 15:12:18 · 121 阅读 · 1 评论