Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
LibAFL — Продвинутая библиотека для фаззинга - Соберите свой фаззер на Rust! Масштабируется на несколько ядер и машин. Для Windows, Android, MacOS, Linux, no_std, ... | Kitploit
Инструменты/GitHubGitHub/aflplusplus/libafl
Фреймворки для пентестаДинамический анализ (песочница)Фреймворки для эксплойтовАнализ уязвимостейФаззингАнализ Бинарных ФайловСтатьи и ИсследованияОбучение и ОбразованиеТоп в Фаззинг №10
2.6k478601 день назадПроверено Kitploit
GitHub
aflplusplus/libafl

LibAFL

Продвинутая библиотека для фаззинга - Соберите свой фаззер на Rust! Масштабируется на несколько ядер и машин. Для Windows, Android, MacOS, Linux, no_std, ...

Репозиторий

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
# `LibAFL`, библиотека для фаззинга

 <img align="right" src="https://raw.githubusercontent.com/AFLplusplus/Website/main/static/libafl_logo.svg" alt="Логотип LibAFL" width="250" heigh="250">

Продвинутая библиотека для фаззинга — собирайте собственные фаззеры и расширяйте их возможности с помощью Rust.

`LibAFL` — это набор переиспользуемых компонентов фаззеров, написанный на Rust, который предоставляет многие преимущества готового фаззера, оставаясь при этом полностью настраиваемым.
Некоторые ключевые особенности включают:

- `fast`: мы делаем всё возможное на этапе компиляции, сводя к минимуму накладные расходы во время выполнения. Пользователи достигают 120k execs/sec в режиме frida на телефоне (используя все ядра).
- `scalable`: `Low Level Message Passing` (сокращённо `LLMP`) позволяет `LibAFL` масштабироваться почти линейно на ядрах и через TCP на множество машин.
- `adaptable`: вы можете заменить любую часть `LibAFL`. Например, `BytesInput` — это лишь одна из возможных форм входных данных: не стесняйтесь добавлять входные данные на основе AST для структурированного фаззинга и многое другое.
- `multi platform`: `LibAFL` работает на *Windows*, *macOS*, *iOS*, *Linux*, *Android* и других платформах. `LibAFL` может быть собран в режиме `no_std` для внедрения в редкие цели, такие как встраиваемые устройства и гипервизоры.
- `bring your own target`: мы поддерживаем режимы только с бинарными файлами, такие как Frida-Mode, а также несколько этапов компиляции для инструментирования на основе исходного кода. Конечно, легко добавить пользовательские бэкенды инструментирования.

## Основные концепции

`LibAFL` быстрый, кроссплатформенный, совместимый с `no_std` и масштабируется на ядра и машины. Он предлагает основной крейт, предоставляющий строительные блоки для пользовательских фаззеров: [libafl](https://github.com/aflplusplus/libafl/blob/main/crates/libafl), библиотеку, содержащую общий код, который может использоваться для инструментирования целей: [libafl_targets](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_targets), и библиотеку, предоставляющую средства для обёртывания компиляторов: [libafl_cc](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_cc). Он предлагает интеграции с популярными фреймворками инструментирования. На данный момент поддерживаются следующие бэкенды:

- `SanitizerCoverage`, в [libafl_targets](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_targets)
- `Frida`, в [libafl_frida](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_frida)
- `QEMU` в пользовательском и системном режиме, включая хуки для эмуляции, в [libafl_qemu](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_qemu)
- `TinyInst`, в [libafl_tinyinst](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_tinyinst) от [elbiazo](https://github.com/elbiazo)

## Сборка и установка

#### Установка зависимостей

- **Язык разработки Rust**
  - Мы настоятельно рекомендуем *не* использовать, например, пакет из вашего дистрибутива Linux, так как он, скорее всего, устарел. Вместо этого установите Rust напрямую, инструкции можно найти [здесь](https://www.rust-lang.org/tools/install).
  - Минимальная поддерживаемая версия Rust определена. Вы всегда можете проверить текущую требуемую версию в [Cargo.toml](https://github.com/AFLplusplus/LibAFL/blob/main/crates/libafl/Cargo.toml) LibAFL:

    ```bash
    rustup update stable
    ```
- **Инструменты LLVM**
  - Инструменты LLVM (включая clang, clang++) необходимы (новее LLVM 15.0.0 до LLVM 18.1.3). Если вы используете Debian/Ubuntu, мы снова настоятельно рекомендуем установить пакет [отсюда](https://apt.llvm.org/)
- Just:
  - Мы используем [just](https://github.com/casey/just) для сборки фаззеров в каталоге `fuzzers/`. Инструкции по установке в вашем окружении можно найти [в руководстве программиста Just](https://just.systems/man/en/packages.html).

#### Клонирование репозитория `LibAFL`

```sh
git clone https://github.com/AFLplusplus/LibAFL
```

#### Сборка библиотеки с помощью

```sh
cargo build --release
```

#### Сборка документации API с помощью

```sh
cargo doc
```

#### Просмотр книги `LibAFL` (в разработке!) с помощью (требуется [mdbook](https://rust-lang.github.io/mdBook/index.html))

```sh
cd docs && mdbook serve
```

## Начало работы

Мы собрали все примеры фаззеров в [`./fuzzers`](https://github.com/aflplusplus/libafl/blob/main/fuzzers). Обязательно прочитайте их документацию (и исходный код) — это *естественный способ начать работу!*

```sh
just run
```

Вы можете запустить каждый пример фаззера с помощью следующей команды, если в каталоге фаззера есть файл `Justfile`. Наиболее протестированный фаззер — [`./fuzzers/inprocess/libfuzzer_libpng`](https://github.com/aflplusplus/libafl/blob/main/fuzzers/inprocess/libfuzzer_libpng), многопоточный фаззер, похожий на libfuzzer, использующий `LibAFL` для обвязки libpng.

### Ресурсы

- [Руководство по установке](https://github.com/aflplusplus/libafl/blob/main/docs/src/getting_started/setup.md)
- [Онлайн-документация API](https://docs.rs/libafl/)
- Книга `LibAFL` (в разработке) [онлайн](https://aflplus.plus/libafl-book) или в [репозитории](https://github.com/aflplusplus/libafl/blob/main/docs/src)
- Наша исследовательская [статья](https://www.s3.eurecom.fr/docs/ccs22_fioraldi.pdf)
- Наше выступление на RC3 [talk](http://www.youtube.com/watch?v=3RWkT1Q5IV0 "Фаззеры как LEGO") с объяснением основных концепций
- Наше выступление на Fuzzcon Europe [talk](https://www.youtube.com/watch?v=PWB8GIhFAaI "LibAFL: Продвинутая библиотека для фаззинга") с (немного, но не слишком устаревшим) пошаговым обсуждением создания некоторых примеров фаззеров
- [Решения](https://github.com/epi052/fuzzing-101-solutions) Fuzzing101 и серия [блог-постов](https://epi052.gitlab.io/notes-to-self/blog/2021-11-01-fuzzing-101-with-libafl/) от [epi](https://github.com/epi052)
- Пост в блоге о библиотеке для фаззинга только бинарников `libaf_qemu`: [Hacking TMNF - Fuzzing the game server](https://blog.bricked.tech/posts/tmnf/part1/), от [RickdeJager](https://github.com/RickdeJager)
- [Вводный семинар по LibAFL](https://www.atredis.com/blog/2023/12/4/a-libafl-introductory-workshop), от [Jordan Whitehead](https://github.com/jordan9001)

## Авторы

`LibAFL` написан и поддерживается

- [Andrea Fioraldi](https://twitter.com/andreafioraldi) <[email protected]>
- [Dominik Maier](https://bsky.app/profile/dmnk.bsky.social) <[email protected]>
- [s1341](https://twitter.com/srubenst1341) <[email protected]>
- [Dongjia Zhang](https://github.com/tokatoka) <[email protected]>
- [Addison Crump](https://github.com/addisoncrump) <[email protected]>
- [Romain Malmain](https://github.com/rmalmain) <[email protected]>

## Вклад в развитие

Пожалуйста, ознакомьтесь с **[CONTRIBUTING.md](https://github.com/aflplusplus/libafl/blob/main/CONTRIBUTING.md)** для получения руководства по внесению вклада.

## Отладка

Ваш фаззер работает не так, как ожидалось? Попробуйте прочитать [DEBUGGING.md](https://github.com/aflplusplus/libafl/blob/main/docs/src/DEBUGGING.md), чтобы понять, как отлаживать ваши проблемы.

## Цитирование

Если вы используете `LibAFL` в своей академической работе, пожалуйста, процитируйте следующую статью:

```bibtex
@inproceedings{libafl,
 author       = {Andrea Fioraldi and Dominik Maier and Dongjia Zhang and Davide Balzarotti},
 title        = {{LibAFL: A Framework to Build Modular and Reusable Fuzzers}},
 booktitle    = {Proceedings of the 29th ACM conference on Computer and communications security (CCS)},
 series       = {CCS '22},
 year         = {2022},
 month        = {November},
 location     = {Los Angeles, U.S.A.},
 publisher    = {ACM},
}
```

## Лицензия

<sup>
Лицензировано на условиях <a href="https://github.com/aflplusplus/libafl/blob/main/LICENSE-APACHE">Apache License, Version 2.0</a> или <a href="https://github.com/aflplusplus/libafl/blob/main/LICENSE-MIT">лицензии MIT</a> по вашему выбору.
</sup>

<br>

<sub>
Если явно не указано иное, любой вклад, намеренно предоставленный вами для включения в этот крейт, как определено в лицензии Apache-2.0, будет двойным лицензирован, как указано выше, без каких-либо дополнительных условий.
</sub>
Скачать инструмент