首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

修改AFL以包括一个新的变量,以便Fuzzer在种子选择中考虑

回答: AFL(American Fuzzy Lop)是一种基于模糊测试的软件漏洞发现工具,用于发现程序中的安全漏洞。在AFL中,种子选择是非常重要的,它决定了Fuzzer在测试过程中使用哪些输入样本。为了让Fuzzer考虑一个新的变量,我们需要对AFL进行修改。

首先,我们需要在AFL的源代码中添加对新变量的支持。这包括修改AFL的输入生成器,使其能够生成包含新变量的输入样本。同时,还需要修改AFL的种子选择算法,使其能够考虑新变量的影响。

在修改AFL的输入生成器时,我们需要根据新变量的类型和取值范围,生成合适的输入样本。例如,如果新变量是一个整数类型的变量,我们可以在输入样本中添加一个整数值。如果新变量是一个字符串类型的变量,我们可以在输入样本中添加一个字符串。

在修改AFL的种子选择算法时,我们需要考虑新变量对程序执行路径的影响。一种常见的方法是使用覆盖率导向的种子选择算法,即选择那些能够覆盖尽可能多的程序路径的输入样本。我们可以根据新变量的取值,计算每个输入样本的覆盖率,并选择覆盖率较高的样本作为种子。

腾讯云提供了一系列与云计算相关的产品,可以帮助开发者进行云原生应用的开发和部署。其中,推荐的产品是腾讯云的云原生应用引擎(Tencent Cloud Native Application Engine,TKE)。TKE是一种容器化的云原生应用管理平台,可以帮助开发者快速构建、部署和管理云原生应用。您可以通过以下链接了解更多关于腾讯云原生应用引擎的信息:腾讯云原生应用引擎

请注意,以上答案仅供参考,具体的修改方法和推荐产品可能因实际情况而异。在实际应用中,建议根据具体需求和情况进行进一步的调研和选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

afl-fuzz技术白皮书

发现执行路径 ========= AFL-fuzzer一个全局map用来存储之前执行时看到tupes。...没有被选择也没有被扔掉,而是遇到下列对队列时,一定概率略过: - If there are new, yet-to-be-fuzzed favorites present in the queue...afl-fuzz内置trimmer试图用计算变量长度和step over方法,循序地减少数据块。 这个trimmer试图精确和产生进程数之间做一个平衡。...当然第一次翻译一个basic block还是有必要延迟,为了解决这个问题AFL fork serveremulator和父进程之间提供了一个频道。...这个频道用来通知父进程新添加blocks地址,之后吧这些blocks放到一个缓存以便直接复制到将来子进程

1K20

面试官:了解Fuzzing Test吗?

dumb  mutation Fuzzer可以简单地选择一个有效输入样本,并随机地改变它一部分。...某些情况下,还有其他方法能实现重现性。一种方法是存储用于测试用例生成随机部分初始种子,并确保所有后续随机行为遵循一个可以追溯到该种子路径。...通过用相同种子重新运行Fuzzer,行为应该是可重复。例如,你可以只记录测试用例编号和初始种子,然后用该种子快速重新执行生成,直到达到给定测试用例。...NodeFuzz NodeFuzz是一个基于node.js网络浏览器线束,它包括仪器模块,可以从客户端获得更多信息。 AFL AFL一个灰盒式模糊测试工具,利用编译目标代码仪器。...AFL最初是为LinuxC和C++程序编写,后来被分叉支持Windows、Java和.Net。

74810
  • Smart Greybox Fuzzing:功能更强效率更高

    前言 近期,有一群研究人员设计出了一种智能灰盒模糊测试模型,他们声称这种Fuzzer模型搜寻代码库(解析复杂文件)漏洞方面跟现有Fuzzer相比,模型漏洞挖掘效率会更高。 ?...基于代码覆盖灰盒模糊测试技术,测试人员需要向fuzzer提供一个种子文件,并通过随机翻转、删除、拷贝或添加比特位形式生成文件,然后让待测目标(代码库)去解析这些文件发现潜在安全漏洞。...在他们实验过程,他们对目前十一款热门用于处理二进制可执行文件(ELF)、图片、音频和视频文件开源代码库进行了测试,测试名单包括Binutils、LibPNG、ImageMagick、LibJPEG-turbo...研究人员使用AFLsmart对这些代码库进行了测试,并与AFL、AFLfast和Peach Fuzzer等模糊测试工具结果进行了对比。...AFLsmart发现了33个漏洞,是AFL和AFLfast挖到漏洞数量一倍,而Peach一个漏洞都没找到。 ?

    86930

    AFL 玩超级玛丽:通过Fuzzing探索程序空间状态发现更多执行路径

    状态空间比代码覆盖统计空间更大,若改造AFL就需要实现对状态空间支持,优化测试用例达到状态多样性。...顺便,解决掉一些CGC挑战集合难题(CGC专门为机器人自动打CTF而设计题目,与真实软件场景还是有差异),也发现了一些真实软件漏洞(其实就是一个偏门dmg2img工具而已)。...可交互Fuzzing会话,分析人员可以人工介入去分析一直无法触达执行路径,然后为其增加补丁代码解决路径探索障碍问题。...afl-gcc或afl-clang本身就是对gcc/clang编译器封装,添加一些编译选项,以及代码插桩功能,作者为其编写了个链接库,实现前面所说注释原语,包括一些自定义函数和宏等,通过它能够访问...作者对超级玛丽作了修改,使所有的键盘命令都可以从标准输入读取,并且马里奥只能不停地向右跑,只要停下来就死掉,这个设计主要是为节省时间。

    1.1K30

    谷歌大脑开源TensorFuzz,自动Debug神经网络!

    最常用两种coverage-guided模糊测试器是AFL和libFuzzer。这些模糊测试器已经各种方式被扩展,以使它们更快、或增加代码特定部分可以被定位范围。...CGF过程,模糊测试过程维护一个输入语料库,其中包含正在考虑程序输入。...这取决于模糊器类型和当前目标。一种常见衡量标准是已经执行代码部分集合。在这种度量下,如果一个输入导致代码if语句中不同于先前方式分支,那么覆盖率就会增加。...因此,使用现有的CGF工具(如AFL)可能不会发现神经网络这些行为。 在这项工作,我们选择使用快速近似最近邻算法来确定两组神经网络“激活”是否有意义上不同。...然后,对来自MNIST数据集随机种子运行10次fuzzerfuzzer每次运行都发现了一个non-finite元素,而随机搜索从未发现过non-finite元素。

    50230

    关于Fuzzing模糊测试入门原理及实践讨论

    其核心思想是将自动或半自动生成随机数据输入到一个程序,并监视程序异常,如崩溃,断言(assertion)失败,发现可能程序错误,比如内存泄漏。模糊测试常常用于检测软件或计算机系统安全漏洞。...甚至一些通常不被考虑成输入对象也可以被测试,比如数据库数据或共享内存。 对于安全相关测试,那些跨越可信边界数据是最令人感兴趣。...实验内容是开发一个基本命令行模糊器测试Unix程序。这个模糊器可以用随机数据来“轰炸”这些测试程序直至其崩溃。类似的实验于1995年被重复,并且包括了图形界面程序,网络协议和系统API库。...生成测试则通过对程序输入建模来生成测试数据。 定义Definition: 我们设计程序时,除了考虑到程序功能之外,是否会出现其他程序员无法考虑情况?比如安全上问题。...我们为不同操作码分配不同权重-负值删除需要抑制无效操作码和操作。fork(2)之前,我们计算输入总重量,决定是否值得fork或只是返回fuzzer

    3.3K60

    初识 Fuzzing 工具 WinAFL

    想象一下,将监控进程所有指令控制转移类指令为边界进行分割,那么它们会被分割成许许多多块,这些块某一指令开始,但都是以控制转移类指令结束,如下图: ?...fuzzer Windows 平台下移植。...使用 WinAFL 进行 fuzzing 时需要指定目标程序及对应输入测试用例文件,且必须存在这么一个用于插桩目标函数,此函数执行过程包括了打开和关闭输入文件以及对该文件解析,这样插桩处理后能够保证目标程序循环执行文件...此外源码包括了一些辅助工具,例如显示跟踪位图信息 afl-showmap.c 以及用于测试用例文件集合最小化 winafl-cmin.py,而用于测试用例文件最小化 afl-tmin 工具目前尚未被移植到该平台...添加测试文件 而输入文件 fuzzing 则由 fuzz_one 函数来完成,此过程涵盖了多个阶段,包括位翻转、算术运算、整数插入这些确定性 fuzzing 策略以及其它一些非确定性 fuzzing

    2K80

    如何使用Frelatage对Python代码进行模糊测试

    关于Frelatage Frelatage是一款基于覆盖率Python模糊测试工具,该工具帮助下,广大研究人员可以轻松对Python代码进行模糊测试。...Frelatage设计与开发受到了很多社区现有模糊测试工具启发,其中包括AFL/AFL++、Atheris和PythonFuzz等等。...其主要目的是整合优化了其他模糊测试工具优秀特性,以便帮助研究人员更高效方式对Python应用程序进行模糊测试和安全研究。...功能介绍 Frelatage支持对下列类型参数进行模糊测试: 字符串 整型 浮点型 列表 元组 字典 函数(文件作为输入) 工作机制 Frelatage主要通过遗传算法来生成覆盖率尽可能高测试用例...threads_count=8, # 需要考虑例外情况 exceptions_whitelist=(OSError), # 需要排除例外情况 exceptions_blacklist

    1.8K10

    RustChinaConf 2022大会实录 - 腾讯安全实验室 陈鹏《从零开始实现Rust Fuzzer

    我本人之前也实现过很多模糊测试工具,包括开源Angora Fuzzer,这可能是第一个用Rust实现开源Fuzzer,也为后来大量Fuzzer用Rust实现奠定了一个基础。...下图展示了实际过程Fuzzer可以找到一些实际Rust代码里面的漏洞,也对应着刚才我举那三个问题。...Rust设计开发者很早就意识到了这个问题,并且已经很早就把市面上一些比较热门Fuzzer,比如说LibFuzzer和AFL引入进来做了支持,同时Angora之后也有一系列Fuzzer选择用Rust...AFL将路径反馈引入到了模糊测试之中,可以看看这个图,它会去观察被执行程序一个路径反馈,如果它这个路径反馈又触发覆盖,那么就会把这个输入加入到一个种子队列里面。...每次生成我们是从这个种子队列里面选择一个输入,并且对它进行变异,来生成一个输入。 通过AFL启发我们可以看到,之前这种完全无状态随机分布是不够用不同场景下我们可能是需要不同分布。

    93310

    一些值得学习Fuzzer开源项目

    之前GitHub上有人整理过一个叫Awesome-Fuzzing资料,整理了关于Fuzzing技术电子书、视频、工具、教程以及用于练习漏洞程序。...http://lcamtuf.coredump.cx/afl/ WinAFL——windows版本afl,使用DynamoRIO去插桩闭源程序获取代码覆盖率信息,同时支持硬件PT获取覆盖率信息,但PT...https://github.com/mboehme/aflfast Vuzzer——支持闭源程序覆盖引导Fuzzer,使用LibDFTpin工具实现数据流追踪,结合动静态分析,获取更多代码路径...fuzz引擎库,属于llvm一部分,各大主流开源库,以及Google内部最经常用安全测试工具 https://llvm.org/docs/LibFuzzer.html OSS-Fuzz——基于LibFuzzer...Fuzzer,单纯暴力Fuzz效果也挺好,支持多平台,包括Linux\macOS\Windows\Android https://github.com/google/honggfuzz KernelFuzzer

    2.8K30

    原创Paper | 黑盒 fuzz 工具 Jackalope 使用

    0x04 持久模式 参考资料 Jackalope 也和 WinAFL 一样提供了持久模式,也就是启动目标程序一次,重复执行执行目标 fuzz 函数多次,这种方式减少 fuzz 过程执行目标程序初始化代码次数...0x05 兼容自定义异常处理 参考资料 程序开发中使用异常处理是一件很常见事情,但对于基于调试器原理实现 Jackalope 则是一个问题,当目标程序被调试器附加时发生了异常,会将异常首先传递给调试器进行处理...,这就会导致 Jackalope 无法正确执行:若种子文件触发异常则会被视为无效种子文件,若 fuzz 过程触发异常则会存入到 crash 结果,但实际上目标程序却是一个功能正常异常处理。...重新编译 test.exe 后,我们使用 123 作为种子文件,启动 fuzz 同时使用 -trace_debug_events 参数以便我们排查 Jackalope 运行过程问题,随后可以看到...WinAFL 我们使用 afl-fuzz.exe 进行 fuzz,如果输入文件夹中提供种子文件存在问题,导致目标程序 crash 时,WinAFL 会停止运行并给予提示;但是 Jackalope 处理机制不同

    71620

    从研究者视角看Fuzzing技术发展30年

    符号执行在Fuzzing应用并没有真正带来技术浪潮,真正技术浪潮始于代码覆盖引导技术引入。...基于LangFuzz思路,后面又有人开源了IFuzzer,并发表相关论文公开,LangFuzz基础上增加遗传算法,对输入样本进行评估,筛选出优秀个体进行组装产生样本。...fuzzilli3大主流JS引擎测试,战果颇丰,发现了不少漏洞,也因此被业界同行拿去作二次开发,又发现了其它漏洞。...,前置条件代表一些引用变量需要先定义,后置条件代表代码片段输出结果,通过两者来解决一些未定义变量引用问题。...Superion是将语法树变异规则置入AFL实现,借助AFL筛选变异后输入样本,而且支持多种语言,也是采用ANTLR作语法树分析,其语法扩展上比较友好。

    2.4K40

    Winafl基于插桩覆盖率反馈原理

    简单总结下: AFL在编译源码时,为每个代码生成一个随机数,代表位置地址; 二元组记录分支跳转源地址与目标地址,将两者异或结果为该分支key,保存每个分支执行次数,用1字节来储存; 保存分支执行次数实际上是一张大小为...)是否发生变化来实现 覆盖信息传递原理 先在fuzzer进程先创建命名管道,其中fuzzer_id为随机值: ?...创建drrun进程去运行目标程序并Hook,childpid_(%fuzzer_id%).txt文件记录子进程id,即目标进程ID,然后等待管道连接,并通过读取上述txt文件获取目标进程id,主要用来后面超时中断进程...插桩模块winafl.dll打开前面创建命名管道,然后通过管道与fuzzer主进程进行交互: ? 4....来记录覆盖率情况,如果发现执行路径,就将样本放入队列目录,用于后续文件变异,提高代码覆盖率; 目标进程执行到目标函数后,会调用pre_fuzz_handler来存储上下文信息,包括寄存器和运行参数

    2K20

    精读:REDQUEEN: Fuzzing with Input-to-State Correspondence

    ,registers)修改,最后通过修改 fuzzing 输入,来确定修改是否给 fuzzing 带来了 code coverage。...04 – Implementation details kAFL Fuzzer KAFL 是一个与操作系统无关、受 afl 启发反馈驱动内核 fuzzer,本文基于 KAFL 来实现 REDQUEEN...,它地址都会被存储起来,以便在下一个 REDQUEEN 分析阶段放置一个 hook, REDQUEEN 阶段,断点被放置在所有 interesting 指令上,当一个断点被命中时,参数被提取并保存到一个缓冲区...设置了用户位 qemu-pt 添加了 32 位模式分解,支持 32 位模式 intel-pt 跟踪数据解码 05 – Result 作者本文章提了三个 RQ,具体如下: 基于 input-to-state...为此,作者首先在一系列不同环境、LAVA-M,CGC 测试集上测试 REDQUEEN 表现,接着实际环境运行,找到一系列真实软件 bug,最后和其他 kfal 为基础工具比较了性能。

    1K20

    针对二维码解析库 Fuzzing 测试

    对于最终测试程序只会测试静态编译代码覆盖率而不会考虑动态编译库。...后来发现 cmake 可以不用指定那么多选项,只需要指定 afl-clang,config 之后 make 时通过环境变量指定 AFL_USE_ASAN 即可,AFL选择好合适编译参数。...imread 读取成 cv::Mat,并用上面的函数转成 vector 并保存到磁盘,形成预料,这样变异时候可以直接变异并生成 cv::Mat: int fuzz_buf(unsigned...变异策略 了解二维码基础知识之后,我们至少知道了一个二维码哪些能变哪些不能变。...官方文档 Custom Mutators in AFL++ 中提到,我们可以编译一个 .so 并通过 AFL_CUSTOM_MUTATOR_LIBRARY 环境变量AFL++ 提供自定义变异器,

    39441

    精读:CollAFL: Path Sensitive Fuzzing

    第一,AFLAFL要用到一个64KB bitmap来保存Coverage信息,AFL进行fuzzing时候,会发生碰撞,两个快构成一个边,AFL为边赋了hash值,这个hash就代表这条边,...通过此公式,可用权重来考虑种子选择,即权重更高种子将被优先考虑模糊化,值得注意是,随着测试进行,先前运行测试用例集将发生变化,因此所接触函数返回值也将发生变化。...因此,与前两个策略不同,这种方式计算权重是确定性。 以上策略,总的来说,第一个策略,考虑是,每个种子会走一条路径,一条路径实际有不同分支,有些分支是被其他种子测过,有的分支没有。...第二个策略是一个策略基础上改进,策略一分支记为初始值,此处分支后面会跟着一些子路径,所以也要考虑子路径数目,因此计数不再是初始值,而是把后面的分支根据路径数量加进来。...很多实际情况下工程,测试人员是只有二进制程序,AFL原生提供了qemu方式去fuzz二进制,但是效率太低,从哪方面考虑解决这个问题?

    52520

    Fpicker:一款支持多种模式模糊测试工具套件

    关于Fpicker Fpicker是一款基于Frida模糊测试套件,可以帮助广大研究人员多种模式来进行渗透测试,例如AFL++模式或被动追踪模式等。...具体要执行命令取决于我们配置。接下来,我们会给出一些简单使用样例,大部分样例都在项目中“examples”目录给出了。...AFL++代理运行Fpicker,并跟目标进程绑定,然后测试指定功能函数: afl-fuzz -i examples/test-network/in -o ....单独模式运行Fpicker,跟远程设备上一个正在运行绑定,使用自定义变异cmd进行模糊测试: ....下面给出一个组件实现样例: // Import the fuzzer base class const Fuzzer = require("harness/fuzzer.js"); // The

    84010

    2.清华张超老师 GreyOne和Fuzzing漏洞挖掘各阶段进展总结学习

    其工作流程大致如下: ①从源码编译程序时进行插桩,记录代码覆盖率(Code Coverage); ②选择一些输入文件,作为初始测试集加入输入队列(queue); ③将队列文件按一定策略进行“突变...3.Seed Selection 遗传算法每轮迭代,它首先需要从现有的种子池(Seed Pool)中选择种子,该步骤也是有一些策略。...因为一个种子池中可能积累了很多种子,通过历史上不断测试留下来,但每一轮可能只选择一个种子,而先选择一个效率也是不一样,虽然大家都是种子,但可能有些种子效率更好。...2016年发表CCS上AFLfast策略是如果这个种子之前测试很少被选出来,就称为cold,这样种子后面优先被选出来,或者这个种子搜索路径之前测试很少被测到,也会优先选择这个种子。...原来大家是把这个分支,有好代码覆盖率,就把它放到种子池中去,种子池是一个线性列表,现在把种子修改,它还是个列表,但是每个节点不再是一个种子了,它每个节点可能是多个种子

    3.1K60

    AFLSmart工具简单分析及使用介绍

    AFLSmart 是一个 AFL 基础上,结合了 Peach 结构化输入组件灰盒 smart fuzz 工具。...AFLSmart AFLSmart AFL 基础上,参照了 Peach File Cracker 组件,将文件按 chunk 划分,抽象为一个可以用 xml 文件描述树形结构,如下图为一个...针对结构化输入,AFL 提供了基于字典方法进行解决,然而该方法缺陷在于,变异时候,仍然处于 bit 级别的变异,AFL 无法对一个文件块进行增加和删除操作。... AFL bit 级别的变异基础上,AFLSmart 增加了对 chunk 级别的变异操作,主要包括三种操作: smart deletion: 在这种方法,会对给定种子文件,随机选取 chunk...smart addition: 在这种方法,给定一个种子文件 S1,随机选取一个种子文件 S2, S2 随机选取一个 chunk C2,将 C2 插入到 S1 中和 C2 具有相同父节点 chunk

    2.2K31
    领券