american fuzzy lop

✍ dations ◷ 2025-10-26 11:35:09 #american fuzzy lop

american fuzzy lop (AFL) 是一个自由的模糊测试工具,采用遗传算法以有效地提高测试用例的代码覆盖率。目前为止,它帮助检测了数十个主要自由软件项目中的重大程序错误,包括X.Org Server、PHP、OpenSSL、 pngcrush、bash、Firefox、BIND、 Qt 和SQLite。

american fuzzy lop的源代码发布在GitHub上。american fuzzy lop得名于美国垂耳兔(英语:American Fuzzy Lop)。

AFL要求用户提供一个运行测试应用程序的示例命令和至少一个示例输入文件。例如,在对音频播放器进行测试时,可以指示AFL用它打开一个简短的声音文件。然后,模糊测试器尝试实际执行指定的命令,如果成功,它会尝试将输入文件减少到触发相同行为的最小文件。

在初始阶段之后,AFL通过对输入文件进行各种修改来开始实际的模糊测试过程。当被测程序崩溃或假死机时,表明发现了一个新错误,可能是一个安全漏洞。此时修改后的输入文件被保存以供用户进一步检查。

为了最大限度地提高模糊测试性能,建议使用american fuzzy lop进行灰盒测试,即在一个实用程序的帮助下编译被测程序源代码,该实用程序在编译被测程序时插入跟踪控制流的辅助函数(即“插桩”)来instrument(英语:Instrumentation_(computer_programming))代码。这允许模糊测试器检测目标的行为何时响应输入而改变。在灰盒测试不可能的情况下,也支持黑盒测试。

american fuzzy lop的模糊测试引擎使用几个算法尽可能触发被测程序的异常行为,如位翻转或将输入的整数数据修改为可能引发异常的边界值。 除此之外,AFL可以根据示例关键字生成测试用例,这有助于对使用基于文本语法的程序进行模糊测试,例如 SQLite。 生成的测试用例执行程序代码的不同部分,AFL记录会引起异常的输入数据,之后可以将这些数据输入到更专业的诊断程序进行进一步分析。进行模糊测试时,假死机可以通过设定的定时器超时来检测,而崩溃通过结束程序时的信号处理程序检测。

使用AFL进行模糊测试时,输入的测试用例可以通过标准输入或作为进程命令行中指定的输入文件提供给测试程序。目前不支持对通过网络接受输入数据的网络应用程序进行模糊测试,但在某些情况下有可行的解决方案。

american fuzzy lop面临的一大挑战是每秒对几百个进程的spawn(英语:spawn (computing))。除了从头开始spawn每个进程的原始引擎,american fuzzy lop提供高度依赖fork系统调用的默认引擎。 可以通过利用LLVM延迟分叉服务器模式或类似的持久模式进一步加快速度,但这是以必须修改测试程序为代价的。 另外,american fuzzy lop支持通过网络对同一个程序进行模糊测试。

american fuzzy lop拥有彩色的命令行界面,实时显示模糊测试过程和统计信息,可以通过命令行界面或者环境变量修改配置,也可以从机器可读文件格式中读取运行时统计信息。

除了提供afl-fuzz用于模糊测试,american Fuzzy lop还包含用于监控模糊测试过程的实用程序。除此之外,afl-cminafl-tmin可以用于最小化测试用例和语料库,当其他模糊测试器也需要使用afl-fuzz生成的测试用例时尤其实用。

由于Google2017年9月以后对AFL的上游开发相对停滞,故诞生了一个社区维护的AFL分叉AFL++ (AFLplusplus) 。它包含了一些新特性和性能提升。

Google推出的为开源软件提供免费模糊测试服务的OSS-Fuzz计划,也于2021年1月将AFL选项替换为了AFL++。

相关

  • 巴黎大师赛巴黎大师赛(法语:Masters de Paris-Bercy,英语:BNP Paribas Masters),现名法国巴黎银行大师赛(BNP Paribas Masters),是每年在法国首都巴黎举办的网球赛事。为ATP大师赛的赛事之一(通
  • 1163年重要事件及趋势重要人物
  • Perkins School for the Blind柏金斯启明学校(Perkins School for the Blind)位于美国马萨诸塞州沃特敦,它是一所美国盲人最古老的启明学校。它也被称为"帕金斯启明机构"(Perkins Institution for the Bli
  • 伯班克伯班克(英语:Burbank)是一座位于美国加利福尼亚州洛杉矶县中部的城市,是大洛杉矶地区的组成部分之一。伯班克被称为“世界媒体之都”(Media Capital of the World),包括国家广播公
  • 乔治·克林顿乔治·克林顿(George Clinton,1739年7月26日-1812年4月20日),美国军人、政治家,民主共和党党员,曾任纽约州州长(1777年-1795年、1801年-1804年)和美国副总统(1805年-1812年)。下列县名
  • 黄自元黄自元(1836年-1916年),字敬舆,号澹叟,今湖南省安化县龙塘乡人,晚清书法家。幼从祖父黄德濂练字,悬腕书写。同治六年(1867年)举于乡,同治七年(1868年),殿试第二名(榜眼),授翰林院编修。1870年
  • 约翰一世 (君士坦丁堡大主教)金口圣若望(希腊语:Ιωάννης Χρυσόστομος,拉丁语:Ioannes Chrysostom;“若望”为音译,义为“慈爱者”,即英语的“约翰”John和亚兰文Yolanda;347年-407年9月14日),或译约翰一世,正教会的君士坦丁堡大主教,重要的基督徒早期教父。若望一世以其出色的演讲与雄辩能力,对当政者与教会内部滥用职权(英语:Abuse_of_authority)的谴责、与严格的苦行而闻名于世。后世人称其为“金口”(希腊语:χρυσόστομος,/ˈkrɪsəstəm/或/krɪˈs
  • 切·亚当斯查·扎克·埃弗顿·弗雷德·亚当斯(英语:Che Zach Everton Fred Adams;1996年7月13日-)是一位苏格兰足球运动员,场上司职中场和前锋,现在效力于英超球队南安普顿,也代表苏格兰国家队参加国际比赛。切·亚当斯在考文垂青年队接受足球训练,之后转到伊尔基斯顿继续足球训练。2014年11月14日,英甲俱乐部谢菲尔德联击败了其它高联赛组别俱乐部,签下亚当斯,合约期两年。同年12月16日是他首场职业比赛的日子,对南安普顿一战中在半场换入亚马尔·坎贝尔-莱斯,最终谢菲尔德联获胜并打进足球联赛
  • 陈幸同陈幸同(1997年5月27日-),辽宁沈阳人,中国女子乒乓球运动员。2017年亚洲乒乓球锦标赛和周雨合作获得混合双打冠军。2022年获得世界乒乓球团体锦标赛女子团体冠军。
  • 退耦 (宇宙学)退耦(英语:decoupling),在宇宙学中,指各种粒子彼此脱离热平衡的时期。由于宇宙的膨胀,粒子间的平均自由程增加,相互作用频率降低,因此脱离热平衡而发生退耦。目前普遍认为大爆炸后有两种主要的退耦,分别是光子退耦和中微子退耦,且它们分别导致了宇宙微波背景辐射和宇宙中微子背景辐射。