使用二进制库发出 运行 "afl-fuzz -Q"

issue running "afl-fuzz -Q" with binary libraries

我正在尝试使用 afl-fuzz 查找 Android 本机库(例如 libssl.solibhttp.so 等)中的安全漏洞。

我的理解是我应该使用 QEMU,因为 afl 本身不足以在没有源代码的情况下找到错误。

尝试运行以下内容时:

#> afl-fuzz -Q -i input -o output -- ./libssl.so

我运行进入以下问题:

[-] The current memory limit (200 MB) is too restrictive, causing an OOM fault
    in the dynamic linker.

我通过将内存限制设置为 "none" 设法解决了这个问题。然后,我 运行 进入这个错误:

[-] Hmm, looks like the target binary terminated before we could complete
    a handshake with the injected code. Perhaps there is a horrible bug in
    the fuzzer.

我最近才开始使用 afl 所以我不太熟悉如何使用它,尤其是二进制库。对此的任何帮助将不胜感激!

首先,我不确定您是否真的需要 运行 AFL 在 -Q 模式下对开源库进行模糊测试。您最好使用 afl-gcc 重新编译它,以便在二进制文件中安装工具。然后,对整个应用程序进行模糊测试会更容易(也更快)。

事实上,只有当你有一个二进制程序来模糊测试时,你才 运行 在 -Q 模式下(我的意思是,你没有它的来源)。

然后,afl 基本上是通过为模糊程序创建部分随机输入来工作的。我不完全理解你希望用库做什么,因为它 绝对没有输入 (它插入另一个程序,但仅此而已)。

因此,您可以考虑阅读更多有关模糊测试和软件的内容 I/O,这可能是尝试做更复杂的事情之前的最佳方式。