
Фаззер для целей ядра/драйверов в полноценной виртуальной машине
kAFL/Nyx — это быстрый направленный фаззер для x86 VM. Он отлично подходит для всего, что выполняется как гостевая система QEMU/KVM, в особенности для x86-прошивок, ядер и полноценных операционных систем.
Примечание: Все компоненты предоставлены только для исследовательских и проверочных целей. Используйте на свой страх и риск
kAFL — основной фаззер, обеспечивающий работу проекта Linux Security Hardening for Confidential Compute, выявляющий уязвимости в сложных конфигурациях и повышающий безопасность ядра Linux для всех решений CC.
Среди других успешных целей для kAFL/Nyx:
Кроме того, kAFL использовался внутри Intel для проверки x86-прошивок и драйверов, а также для фаззинга SMM-обработчиков.
kAFL/Nyx использует Intel VT, Intel PML и Intel PT для обеспечения эффективного выполнения, восстановления из снимков и обратной связи по покрытию в сценариях фаззинга серого и белого ящиков. Он позволяет запускать множество x86-прошивок и ядер ОС с любой желаемой цепочкой инструментов и минимальными изменениями кода.
kAFL использует собственный kAFL-Fuzzer, написанный на Python. kAFL-Fuzzer следует дизайну в стиле AFL и оптимизирован для параллельной работы со множеством экземпляров QEMU, поддерживая гибкую конфигурацию VM, параметры журналирования и отладки.
kAFL интегрирует фаззер Radamsa, а также расширения Redqueen и Grimoire. Redqueen использует интроспекцию VM для извлечения входных данных времени выполнения для условных инструкций, преодолевая типичные проверки магических байтов и другие проверки входных данных. Grimoire пытается определять ключевые слова и синтаксис во входных данных фаззинга, чтобы генерировать более умные крупномасштабные мутации.
Подробнее о Redqueen, Grimoire, IJON, Nyx см. на nyx-fuzz.com.
Intel Skylake или новее: Для установки требуется процессор Intel Gen-6 или новее (для Intel PT) и достаточный объём системной памяти (~2 ГБ ОЗУ на CPU)
Пропатченное ядро хоста: Изменённое ядро Linux для хоста будет установлено в рамках настройки. Запуск kAFL внутри VM может работать начиная с IceLake или более новых CPU.
Актуальные Debian/Ubuntu: Установка и руководства протестированы для свежих Ubuntu LTS (>=20.04) и Debian (>=bullseye).
Если у вас установлены python3-venv и make, вы можете установить kAFL с помощью make deploy:
sudo apt install python3-venv make git
git clone https://github.com/IntelLabs/kAFL.git
cd kAFl
make deploy
Установка может занять некоторое время и потребует перезагрузки для обновления ядра.
В случае проблем обратитесь к подробному руководству по установке, или к руководству по развёртыванию для получения подробной информации и настройки kAFL под ваш проект.
В качестве первого примера фаззинга мы рекомендуем Фаззинг ядра Linux.
Доступны и другие цели, например:
Для этих целей ведётся работа над улучшенной документацией.