Nautilus
- title
- Nautilus
- type
- entity
- summary
- Грамматический фаззер с контролем покрытия; мутирует деревья КС-грамматик для генерации валидных входов, проходящих парсер
- tags
- fuzzing, security, research
- created
- 2026-05-12
- updated
- 2026-05-12
- lang
- ru
- translation_of
- nautilus-fuzzer
- source_updated
- 2026-05-12
- translated
- 2026-09-01
- translator
- lllm/antigravity/gemini-3.7-flash-medium
Nautilus - грамматический фаззер, опубликованный Aschermann, Schumilo, Blazytko, Gawlik и Holz на NDSS 2019 (TU Berlin / Ruhr-Uni Bochum). Он объединяет контекстно-свободную грамматику с обратной связью по покрытию: входные данные хранятся в виде деревьев вывода, а не байтовых строк, мутации переписывают поддеревья, а планирование корпуса выполняется по покрытию, как в AFL.
Именно выбор структуры данных позволяет ему работать: грамматический фаззер, сохраняющий входные данные строками, в итоге мутирует байты и деградирует до AFL с лишними шагами. Хранение дерева означает, что отдельная мутация выглядит как "замени это поддерево Number на другое поддерево Number", благодаря чему входные данные остаются структурно корректными уже по построению.
Где встречается
- Встроен как грамматический движок в другие фаззеры (расширения Honggfuzz, AFL++ через custom mutator'ы, грамматический режим gosentry)
- Соглашения по формату грамматики, введённые Nautilus (JSON-массивы правил вида
[non-terminal, production]), были переняты несколькими сторонними инструментами, включая режим--grammarв gosentry
Формат грамматики
Стандартный вид - JSON-массив из двухэлементных массивов, где первый элемент - имя нетерминала, а второй - порождающее правило (с {Name}, ссылающимся на другие нетерминалы). Подробный пример разобран в grammar-based-fuzzing.