LLM-фаззер для автоматического предсказания и тестирования высокорисковых комбинаций опций на основе одной документации.
Платформа для бинарного анализа на базе символьного исполнения: способна автоматически найти входные данные, которые проведут программу …
Продвинутая платформа для DFIR (цифровая криминалистика и реагирование на инциденты) — позволяет одновременно "охотиться" на угрозы …
Набор CLI-утилит для анализа файловых систем и образов дисков. Поддерживает NTFS, FAT, EXT2/3/4, HFS+, UFS. Извлечение …
Инфраструктура виртуальной машинной интроспекции для мониторинга состояния гостевых систем на уровне гипервизора KVM.
docker run -it 4ugustus/prophetfuzz_base bash docker build -t prophetfuzz:latest . docker run -it --privileged=true prophetfuzz bash OPENAI_API_KEY="[Input Your API Key Here]" bash run_all_in_one.sh bison
Реализация статьи под названием «ProphetFuzz: Fully Automated Prediction and Fuzzing of High-Risk Option Combinations with Only Documentation via Large Language Model»
ProphetFuzz — это полностью автоматизированный инструмент фаззинга на основе LLM для тестирования комбинаций опций. ProphetFuzz может предсказывать и проводить фаззинг высокорисковых комбинаций опций 1, используя только документацию, и весь процесс работает без ручного вмешательства.
Для получения более подробной информации обратитесь к нашей статье из ACM CCS'24.
Из-за ограничений по объему приложение статьи не могло быть включено в основной текст. Обратитесь к Приложению.
[2026-02-10] Этот проиндексирован в DeepWiki, которая предоставляет ИИ-сгенерированную документацию для лучшего понимания кодовой базы, архитектуры и основной логики. https://deepwiki.com/NASP-THU/ProphetFuzz
.
├── Dockerfile
├── README.md
├── assets
│ ├── dataset
│ │ ├── groundtruth_for_20_programs.json
│ │ └── precision.json
│ └── images
├── fuzzing_handler
│ ├── cmd_fixer.py
│ ├── code_checker.py
│ ├── config.json
│ ├── run_cmin.py
│ ├── run_fuzzing.sh
│ └── utils
│ ├── analysis_util.py
│ ├── code_utils.py
│ └── execution_util.py
├── llm_interface
│ ├── assemble.py
│ ├── config
│ │ └── .env
│ ├── constraint.py
│ ├── few-shot
│ │ ├── manpage_htmldoc.json
│ │ ├── manpage_jbig2.json
│ │ ├── manpage_jhead.json
│ │ ├── manpage_makeswf.json
│ │ ├── manpage_mp4box.json
│ │ ├── manpage_opj_compress.json
│ │ ├── manpage_pdf2swf.json
│ │ └── manpage_yasm.json
│ ├── few-shot_generate.py
│ ├── input
│ ├── output
│ ├── predict.py
│ ├── restruct_manpage.py
│ └── utils
│ ├── gpt_utils.py
│ └── opt_utils.py
├── manpage_parser
│ ├── input
│ ├── output
│ ├── parser.py
│ └── utils
│ └── groff_utils.py
└── run_all_in_one.sh
Реализации различных компонентов ProphetFuzz можно найти в следующих функциях,
| Раздел | Компонент | Файл | Функция |
|---|---|---|---|
| 3.2 | Извлечение ограничений | llm_interface/constraint.py | extractRelationships |
| 3.2 | Самопроверка | llm_interface/constraint.py | checkRelationships |
| 3.3 | AutoCoT | llm_interface/few-shot_generate.py | generatePrompt |
| 3.3 | Предсказание высокорисковых комбинаций | llm_interface/predict.py | predictCombinations |
| 3.4 | Сборка команд | llm_interface/assembly.py | generateCommands |
| 3.5 | Генерация файлов | fuzzing_handler/generate_combination.py | main |
| 3.5 | Минимизация корпуса | fuzzing_handler/run_cmin.py | runCMinCommands |
| 3.5 | Фаззинг | fuzzing_handler/run_fuzzing.sh | runFuzzing |
Использование Docker для настройки среды выполнения
docker run -it 4ugustus/prophetfuzz_base bash
docker build -t prophetfuzz:latest .
docker run -it --privileged=true prophetfuzz bash
# 'privileged' используется для настройки среды фаззинга
Настройка вашего API-ключа:
Укажите ваш OpenAI API-ключ в файле llm_interface/config/.env:
bash
OPENAI_API_KEY="[Вставьте Ваш API Key Здесь]"
Запуск скрипта: Выполните скрипт для запуска автоматизированного процесса фаззинга:
bash
bash run_all_in_one.sh bison
Примечание: Если вы не в нашей Docker-среде, возможно, придётся вручную установить зависимости и настроить файл fuzzing_handler/config.json для указания пути к тестируемой программе.
Если вы предпочитаете запускать фаззинг вручную, используйте следующую команду:
bash
fuzzer/afl-fuzz -i fuzzing_handler/input/bison -o fuzzing_handler/output/bison_prophet_1 -m none -K fuzzing_handler/argvs/argvs_bison.txt -- path/to/bison/bin/bison @@
Мы используем ProphetFuzz для проведения постоянного фаззинга последних версий программ в нашем наборе данных. На данный момент ProphetFuzz обнаружил 140 нулевых дней или полунулевых дней уязвимостей, 93 из которых были подтверждены разработчиками, получив 22 номера CVE.
| CVE | Программа | Тип |
|---|---|---|
| CVE-2024-3248 | xpdf | переполнение стекового буфера |
| CVE-2024-4853 | editcap | переполнение кучи |
| CVE-2024-4855 | editcap | некорректное освобождение |
| CVE-2024-31743 | ffmpeg | ошибка сегментирования |
| CVE-2024-31744 | jasper | сбой утверждения |
| CVE-2024-31745 | dwarfdump | использование после освобождения |
| CVE-2024-31746 | objdump | переполнение кучи |
| CVE-2024-32154 | ffmpeg | ошибка сегментирования |
| CVE-2024-32157 | mupdf | ошибка сегментирования |
| CVE-2024-32158 | mupdf | отрицательный параметр размера |
| CVE-2024-34960 | ffmpeg | исключение с плавающей точкой |
| CVE-2024-34961 | pspp | ошибка сегментирования |
| CVE-2024-34962 | pspp | ошибка сегментирования |
| CVE-2024-34963 | pspp | сбой утверждения |
| CVE-2024-34965 | pspp | сбой утверждения |
| CVE-2024-34966 | pspp | сбой утверждения |
| CVE-2024-34967 | pspp | сбой утверждения |
| CVE-2024-34968 | pspp | сбой утверждения |
| CVE-2024-34969 | pspp | ошибка сегментирования |
| CVE-2024-34971 | pspp | ошибка сегментирования |
| CVE-2024-34972 | pspp | сбой утверждения |
| CVE-2024-35316 | ffmpeg | ошибка сегментирования |
Благодарность Dawei Wang (@4ugustus) и Geng Zhou (@Arbusz) за их ценный вклад в этот проект.
Если вы хотите процитировать ProphetFuzz, вы можете использовать следующую запись BibTex:
@inproceedings {wang2024prophet,
title = {ProphetFuzz: Fully Automated Prediction and Fuzzing of High-Risk Option Combinations with Only Documentation via Large Language Model},
author = {Wang, Dawei and Zhou, Geng and Chen, Li and Li, Dan and Miao, Yukai},
booktitle = {Proceedings of the 2024 ACM SIGSAC Conference on Computer and Communications Security},
publisher = {Association for Computing Machinery},
address = {Salt Lake City, UT, USA},
pages = {735–749},
year = {2024}
}