Fuzzing код с прямым порядком байтов в среде с прямым порядком байтов с помощью libfuzzer

Я пытаюсь распознать часть кода, написанного для архитектуры MIPS с прямым порядком байтов, используя libfuzzer.

Я запустил libfuzzer под машиной с прямым порядком байтов Debian, и появляются ошибки сегментации. Я думаю, что результаты не заслуживают доверия на 100%. Как использовать libfuzzer с эмулятором для архитектуры с прямым порядком байтов? Это возможно? Существуют ли другие методы для тестирования кода с прямым порядком байтов в архитектурах с прямым порядком байтов с использованием фаззинга?

1 ответ

Вы можете сделать кросс-компиляцию вашего программного обеспечения для MIPS с прямым порядком байтов на вашем хост-компьютере, а затем использовать эмуляцию пользовательского режима QEMU. В этом режиме QEMU запускает один процесс на эмулируемом процессоре, исключая все эмулируемое оборудование. Вместо этого он просто переводит системные вызовы в ядро хоста, поэтому процесс получает доступ ко всем файлам хоста, сетям и т. Д. - точно так же, как если бы процессор вашего хоста получал возможность выполнять инструкции MIPS - теперь он может связываться с вашим хостом файлы и т.д., вы были предупреждены.:)

Я не знаком с конкретно libfuzzer, но этой настройки должно быть достаточно, чтобы по крайней мере проверить уже найденные сбои (предположим, можно полагать, что QEMU достаточно реалистично имитирует процессор MIPS). Насколько мне известно libfuzzer это фаззер в процессе, поэтому в отличие от AFL, фаззированный процесс не должен сталкиваться с некоторыми проблемами при подключении к отдельному процессу фаззера с использованием общей памяти и т. д.

Другие вопросы по тегам