模糊测试是通过不断生成不同的输入来测试程序从而发现并识别安全漏洞,已经广泛应用于漏洞挖掘中。目前灰盒模糊测试是最流行的模糊测试策略,它将轻量级代码插桩与数据反馈驱动相结合,以生成新的程序输入。AFL(American Fuzzy Lop)是一种卓越的灰盒模糊测试工具,其以高效的forkserver执行、可靠的遗传算法和多种的变异策略著称,但其变异策略主要采样随机变异,存在较大的盲目性。文章提出了一种运用强化学习的方法来优化变异的策略,以多摇臂赌博机问题为模型,记录不同变异方式产生的输入在目标程序中的执行效果,利用探索-利用算法自适应地学习变异操作结果的概率分布情况,智能地进行变异操作策略调整,提升AFL的模糊测试性能。文章选择汤普森采样为优化算法设计实现了AFL-EE模糊测试工具,并对5类常用的文件类程序进行了验证测试,实验表明该方法能自动调整变异操作策略,有效地产生覆盖率高的测试输入,方法可行、额外资源消耗较小,总体上优于AFL工具。