1.honggfuzz漏洞挖掘技术深究系列(1)——反馈驱动
2.探索|模糊测试 Fuzzing Test
3.AFL--模糊测试使用浅析
4.afl源码是码阅什么意思?
5.模糊测试工具 AFL的原理与实践
6.Dojo构建Ajax应用程序序
honggfuzz漏洞挖掘技术深究系列(1)——反馈驱动
honggfuzz漏洞挖掘技术详解(1)——反馈驱动
反馈驱动是漏洞挖掘技术中的关键策略,它通过追踪样本触发的码阅代码覆盖率,优化输入样本以提升覆盖率,码阅从而增加发现漏洞的码阅可能性。在业界,码阅AFL、码阅lorawan 网关源码libfuzzer和honggfuzz是码阅基于代码覆盖率的三大著名Fuzzer,它们均开源,码阅可在GitHub上获取。码阅
honggfuzz尤其受到关注,码阅其原理与应用将是码阅我们系列探讨的重点。我曾深入研究过honggfuzz的码阅源码并进行二次开发,实践证明其挖掘漏洞的码阅效果显著。系列将详细解析honggfuzz的码阅运作机制,从代码覆盖率的码阅三种衡量标准——函数、基本块和边界,到实际应用中的反馈驱动原理。
在honggfuzz中,基本块覆盖率是主要的统计方式。通过编译选项,如添加`-fsanitize-coverage=bb`,可以生成`sancov.map`和`sancov.raw`文件,记录执行过的基本块信息。honggfuzz会分析这些文件,计算覆盖率,根据新路径或链接库加载情况,生成变异样本以触发更多未探索的路径。
honggfuzz诞生于年,与AFL同时期发布,AFL的出现极大地推动了安全领域的发展。尽管AFL源码分析众多,源码调优honggfuzz的深度剖析却相对较少,因此我决定编写这一系列文章。个人曾为honggfuzz贡献代码,但未被采纳,于是转向自行开发,为不同平台添加新功能,并借此发现了不少CVE。
后续文章将深入探讨honggfuzz的更多细节,感谢robertswiecki创建出这款强大的工具。这些内容源自公众号:漏洞战争。
探索|模糊测试 Fuzzing Test
探索模糊测试的奥秘:Fuzzing Test详解
Fuzzing Test,一种用于软件缺陷检测的自动化测试技术,通过向程序提供随机输入,查找可能导致程序崩溃的场景。它是一种黑盒测试方法,无需源代码,有助于发现关键缺陷,降低代码评审成本。但并非万能,具有其优缺点。
Fuzzers主要分为两种:Dumb Fuzzers提供随机输入,如网络协议数据或用户输入,能快速生成结果,但可能错过特定输入场景引发的问题。Smart Fuzzers则结合输入规则,如协议定义,以构建更精确的输入,针对特定格式进行模糊处理。
Fuzzers的类型包括基于变异的和基于生成的。前者如流量回放和代理,opencv源码代码能利用已有的样本或模拟网络通信;后者如生成Fuzzer,能构建输入结构并随机改变部分,确保结构完整性。
进化型Fuzzing Test利用反馈优化测试用例,逐步覆盖更多代码。在测试过程中,Fuzzer需确定输入的有效性,避免如TCP/IP数据包损坏或OCR程序的图像解析测试误入歧途。
有效执行Fuzzing Test需要生成或变异测试用例,记录可重复的崩溃场景,并确保与目标程序的顺畅对接。崩溃检测是关键,可通过超时或崩溃跟踪工具来实现。质量可通过速度、测试用例分类和代码覆盖率来衡量和提升。
众多Fuzzing框架如Radamsa、Sulley、Peach和AFL等可以帮助简化测试过程,为测试工程师提供高效工具。不断学习和实践,才能在软件质量保障中发挥模糊测试的强大作用。
AFL--模糊测试使用浅析
AFL,全称American Fuzzy Lop,是由安全研究员Micha Zalewski开发的一款强大的模糊测试工具。它基于覆盖引导,通过记录输入样本的代码覆盖率,动态调整输入以提升覆盖率,从而提高发现漏洞的可能性。
AFL的工作流程包括:首先,它会在编译程序时插入代码覆盖率跟踪代码;接着,kubesphere 源码分析初始化一个输入队列,包含一些测试文件;然后,对队列中的文件进行变异处理,如果变异后的文件覆盖了新的代码,就加入队列继续测试;过程中,若程序崩溃,会记录下来。目标是持续优化测试用例,直到发现潜在的漏洞。
安装和使用AFL涉及下载源码、编译安装、利用afl-gcc或afl-clang编译测试文件,可能需要修改系统设置如core_pattern。并行测试时,可以根据可用内核数量同时运行多个实例。例如,四个内核可以并发运行四个fuzz实例。
在模糊测试libjpeg-turbo时,首先编译并安装libjpeg-turbo,需注意动态链接库是否已插桩。通过测试示例验证安装,如果动态链接库未插桩,可以尝试静态链接。通过1亿次以上的模糊测试,验证了libjpeg-turbo的安全性提升。
此外,AFL还支持内存错误检查工具,如ASAN,通过结合使用可以检测和分析内存安全问题。AFL字典库用于变异操作,mediapipe源码分析自定义字典则需分析目标程序的特性。对于语料库,AFL提供了afl-cmin用于精简覆盖范围相同的测试用例,而afl-tmin则处理单个文件的优化。
在持久模式下,AFL针对特定功能进行模糊测试,速度上优于全程序模糊。AFL-cov则用于处理代码覆盖率数据,结合lcov和gcov生成覆盖率报告。afl_postprocess则用于定制生成的种子文件格式。
总的来说,AFL作为一款实用的模糊测试工具,通过一系列的优化和定制功能,为软件安全测试提供了强大的支持。
afl源码是什么意思?
AFL(American Fuzzy Lop)是一个开源的模糊测试工具。它的源码指的是AFL工具的代码文件,包括程序的C代码、模糊测试算法和基本工具库等。这些源码可以被修改和定制化,以适应不同应用场景的需要。
AFL源码的作用是为开发人员提供一个高效的、易于使用的模糊测试工具。通过AFL的源码,开发人员可以了解AFL工作的原理和细节,从而更准确地评估软件漏洞的安全性。同时,AFL源码还可以为用户提供更多的扩展功能和定制化需求。
AFL源码广泛应用于软件安全测试和软件漏洞挖掘。在漏洞挖掘领域,AFL源码已经成为业界公认的一种高效的漏洞测试工具,并被广泛应用于各类开源软件和商业软件的安全测试评估。此外,AFL源码也可以帮助开发人员构建更加安全、可靠和高效的软件产品。
模糊测试工具 AFL的原理与实践
在软件开发领域,确保质量和安全是关键。模糊测试作为高效自动化测试策略,专门用于检测程序中的错误和安全漏洞。本文旨在详细介绍AFL(American Fuzzy Lop)的基本原理和实践方法。
模糊测试原理介绍
AFL是一种通过输入异常或随机数据来自动化发现程序错误的测试方法。它利用遗传算法不断生成测试用例,并通过动态插桩技术监控程序行为,尤其关注代码覆盖情况。当新输入引发新代码路径时,该输入会被保存以进一步测试。这一循环不断优化测试用例,探索更多程序状态。
AFL流程图展示了从准备测试用例到监控程序行为的核心步骤,突出其动态性和迭代性。
AFL采用fork运行模式,这使得程序崩溃时,测试进程不会终止,相较于LibFuzzer更具有优势。然而,频繁的fork操作也意味着效率不如LibFuzzer。
AFL安装与运行
AFL主要针对UNIX-like系统,尤其在Linux上表现最佳。Windows用户可通过winafl进行模糊测试,支持多种CPU架构,其中对x和x架构支持最好。若需ARM架构支持,则需使用QEMU模式。
安装步骤包括源码编译,使用afl-fuzz命令启动测试,命令格式如下:
命令中的/path/to/program替换为目标程序路径,[options]为程序运行选项或参数。若测试程序需从文件读取输入,可使用@@占位符。AFL将根据测试需求替换此占位符。
AFL使用示例
下面是一个简单示例,演示如何使用AFL进行模糊测试。目标程序实现四则运算,使用不安全的gets函数可能导致缓冲区溢出。
首先,对源码进行AFL编译,添加代码覆盖插桩。接着,准备初始语料库作为测试起点,无论输入是文件还是stdin,AFL都需要初始数据。在运行AFL前设置系统核心转储文件命名规则,便于检测程序崩溃情况。运行测试时,根据程序输入来源选择是否使用@@占位符。
运行后,AFL界面显示测试结果,包括找到的崩溃和覆盖率信息。结果通过pythia工具分析。输出目录结构清晰,便于后续分析。
AFL的QEMU模式
对于已编译的二进制文件,AFL可通过QEMU模式进行模糊测试,无需源码。QEMU模式使用用户模式仿真运行二进制文件,支持对闭源应用的模糊测试。
QEMU模式安装与使用步骤包括编译QEMU支持和执行AFL-fuzz命令时添加-Q参数。
AFL++升级版
AFL++作为AFL的增强版,改进了调度策略和变异算法,新增CMPLOG和持久化等特性,提高代码覆盖率和测试效率。
CMPLOG功能记录比较操作参数,帮助理解输入逻辑,提高路径覆盖。持久化模式允许程序在单个进程周期内多次执行测试用例,减少启动成本,加快测试速度。
总结
AFL是一款功能强大的模糊测试工具,适用于多种架构和系统环境。尽管存在覆盖率瓶颈,但结合其他技术如符号执行,可有效突破限制,提升测试能力。
Dojo构建Ajax应用程序序
在探索DojoToolkit的世界时,首要的是明确你的目标。我的初衷是创建一个强大而无需专业开发者反复创造的JavaScript工具集,Ajax的兴起促使这一工具集迅速受到开发者和用户的关注。然而,伴随着快速的发展,Dojo团队面临了性能、范围、易用性以及文档等方面的挑战。经过个月的努力,特别是对Dojo0.9、1.0和1.1的改进,文档和API质量显著提升,如今Dojo的声誉得到了显著改善。 除了详尽的源代码文档,示例是学习的重要辅助。Dojo的强大和高效性可能会让新手感到困惑,它需要开发者具备广泛的技能,包括服务器端编程、JavaScript、CSS、HTML和DOM,以及应对浏览器兼容性问题。Dojo试图减轻这些问题,但新问题的出现仍不可避免。为了解决这些,开发者可以通过阅读书籍、社区支持和商业机构如SitePen获取帮助。 Dojo的成功源于其透明和开放的开发模式,所有代码基于AFL和BSD协议,旨在促进广泛使用而非限制。众多知名企业,如AOL、Google、IBM等,都对Dojo做出了贡献,其严格的贡献政策确保了长期的合法使用。与其他工具集相比,Dojo在DojoX中的创新超越了行业标准。 在一次会议中,我有幸结识了James Harmon,他在Dojo讲座中的讲解深入浅出,与Alex Russell和我试图全面介绍不同。James的独特能力在于他能将复杂主题分解成易于理解的概念,使人们能快速掌握Dojo的精髓。 本书以清晰的教程方式,向非JavaScript专家展示了如何使用Dojo Toolkit轻松构建Web应用和网站,即便没有深入的编程知识,也能通过这个工具实现高效开发。Dylan Schiemann,SitePen的CEO和Dojo Toolkit的联合创始人,强调了这一点。扩展资料
本书系统论述了利用Dojo构建Ajax应用程序的方法和实践。全书内容主要由三部分组成:Dojo教程、Dojo Widget、Dojo详解。其中各部分自成一个知识模块,相互之间又恰当衔接。 本书编写体系完整,撰写风格生动、配合大量的代码示例和操作步骤,非常适合Dojo开发者学习参考。2024-12-23 00:08539人浏览
2024-12-23 00:06565人浏览
2024-12-22 23:172526人浏览
2024-12-22 22:47850人浏览
2024-12-22 22:43113人浏览
2024-12-22 21:53252人浏览
中国消费者报报道翁芳 张薇 记者 张文章)1月29日晚9点59分时,福建省厦门市思明区市场监管局中华监管所工作人员杨松杉手机里接到了苏州的胡女士发的短信:“目前房费已经分文不少退给我了,非
1.旧房翻新70平大概要多少钱2.刚开的淘宝店铺怎样装修?旧房翻新70平大概要多少钱 遇到过男医生吗? 我是?一名?女?导游?,我?不但遇到过妇科检查的?时候?是男医生,生产的时候是男医生,连
1.手机版记牌器系统是不是通用的?2.最新斗地主记牌器破解版3.å¦ä½ç¨VBåè®°çå¨ï¼手机版记牌器系统是不是通用的? 苹果手机的特点在于其出色的用户体验和生态整合,而