ProphetFuzz

Malware Analysis & Forensics активный

LLM-фаззер для автоматического предсказания и тестирования высокорисковых комбинаций опций на основе одной документации.


Установка
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

ProphetFuzz thumbnail

Реализация статьи под названием «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
  1. manpage_parser: Скрипты для парсинга документации
  2. llm_interface: Скрипты для извлечения ограничений, предсказания высокорисковых комбинаций опций и сборки команд.
  3. fuzzing_handler: Скрипты для подготовки и проведения фаззинга.
  4. assets/dataset: Набор данных для оценки модуля извлечения ограничений.
  5. run_all_in_one.sh: Скрипты для выполнения всего одним скриптом.
  6. Dockerfile: Сборка нашей экспериментальной среды (Проверено на Ubuntu 20.04)

Реализации различных компонентов 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

Пример использования

  1. Использование Docker для настройки среды выполнения

    • Если вы хотите выполнить только часть, взаимодействующую с LLM, можно напрямую использовать наш предварительно установленный образ (4 ГБ):

    docker run -it 4ugustus/prophetfuzz_base bash

    • Если вы хотите выполнить весь процесс, включая генерацию сидов, восстановление команд и фаззинг, соберите полный образ на основе предварительно установленного:

    docker build -t prophetfuzz:latest . docker run -it --privileged=true prophetfuzz bash # 'privileged' используется для настройки среды фаззинга

  2. Настройка вашего API-ключа: Укажите ваш OpenAI API-ключ в файле llm_interface/config/.env: bash OPENAI_API_KEY="[Вставьте Ваш API Key Здесь]"

  3. Запуск скрипта: Выполните скрипт для запуска автоматизированного процесса фаззинга:

    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 @@

Назначенные CVEs

Мы используем 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}
}

История звёзд

Stargazers over time

Войдите, чтобы оставить комментарий