Fuzzing код с прямым порядком байтов в среде с прямым порядком байтов с помощью libfuzzer
Я пытаюсь распознать часть кода, написанного для архитектуры MIPS с прямым порядком байтов, используя libfuzzer.
Я запустил libfuzzer под машиной с прямым порядком байтов Debian, и появляются ошибки сегментации. Я думаю, что результаты не заслуживают доверия на 100%. Как использовать libfuzzer с эмулятором для архитектуры с прямым порядком байтов? Это возможно? Существуют ли другие методы для тестирования кода с прямым порядком байтов в архитектурах с прямым порядком байтов с использованием фаззинга?
1 ответ
Вы можете сделать кросс-компиляцию вашего программного обеспечения для MIPS с прямым порядком байтов на вашем хост-компьютере, а затем использовать эмуляцию пользовательского режима QEMU. В этом режиме QEMU запускает один процесс на эмулируемом процессоре, исключая все эмулируемое оборудование. Вместо этого он просто переводит системные вызовы в ядро хоста, поэтому процесс получает доступ ко всем файлам хоста, сетям и т. Д. - точно так же, как если бы процессор вашего хоста получал возможность выполнять инструкции MIPS - теперь он может связываться с вашим хостом файлы и т.д., вы были предупреждены.:)
Я не знаком с конкретно libfuzzer
, но этой настройки должно быть достаточно, чтобы по крайней мере проверить уже найденные сбои (предположим, можно полагать, что QEMU достаточно реалистично имитирует процессор MIPS). Насколько мне известно libfuzzer
это фаззер в процессе, поэтому в отличие от AFL, фаззированный процесс не должен сталкиваться с некоторыми проблемами при подключении к отдельному процессу фаззера с использованием общей памяти и т. д.