Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
LibAFL — Bibliothèque avancée de Fuzzing - Assemblez votre Fuzzer en Rust ! Passe à l'échelle sur plusieurs cœurs et machines. Pour Windows, Android, MacOS, Linux, no_std, ... | Kitploit
Outils/GitHubGitHub/aflplusplus/libafl
Frameworks de Tests d'IntrusionAnalyse Dynamique (Sandboxing)Frameworks d'ExploitationAnalyse des VulnérabilitésFuzzingAnalyse de BinairesArticles et RechercheApprentissage et ÉducationTop en Fuzzing n°10
2.6k47860il y a 1 jourVérifié par Kitploit
GitHub
aflplusplus/libafl

LibAFL

Bibliothèque avancée de Fuzzing - Assemblez votre Fuzzer en Rust ! Passe à l'échelle sur plusieurs cœurs et machines. Pour Windows, Android, MacOS, Linux, no_std, ...

Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
# `LibAFL`, la bibliothèque de fuzzing

 <img align="right" src="https://raw.githubusercontent.com/AFLplusplus/Website/main/static/libafl_logo.svg" alt="Logo LibAFL" width="250" heigh="250">

Bibliothèque de Fuzzing Avancée - Assemblez vos propres fuzzers et étendez leurs fonctionnalités avec Rust.

`LibAFL` est une collection de morceaux réutilisables de fuzzers, écrite en Rust, qui offre de nombreux avantages d'un fuzzer prêt à l'emploi, tout en étant entièrement personnalisable.
Certaines fonctionnalités marquantes incluent actuellement :

- `rapide` : Nous faisons tout notre possible au moment de la compilation, minimisant la surcharge à l'exécution. Les utilisateurs atteignent 120k execs/sec en mode frida sur un téléphone (en utilisant tous les cœurs).
- `évolutif` : `Low Level Message Passing`, `LLMP` en abrégé, permet à `LibAFL` de s'adapter presque linéairement sur les cœurs, et via TCP à plusieurs machines.
- `adaptable` : Vous pouvez remplacer chaque partie de `LibAFL`. Par exemple, `BytesInput` n'est qu'une forme possible d'entrée :
n'hésitez pas à ajouter une entrée basée sur AST pour le fuzzing structuré, et plus encore.
- `multi-plateforme` : `LibAFL` fonctionne sur *Windows*, *macOS*, *iOS*, *Linux* et *Android*, et plus encore. `LibAFL` peut être compilé en mode `no_std` pour injecter `LibAFL` dans des cibles obscures comme les appareils embarqués et les hyperviseurs.
- `apportez votre propre cible` : Nous supportons les modes binaires uniquement, comme Frida-Mode, ainsi que plusieurs passes de compilation pour l'instrumentation basée sur le code source. Bien sûr, il est facile d'ajouter des backends d'instrumentation personnalisés.

## Concepts fondamentaux

`LibAFL` est rapide, multi-plateforme, compatible `no_std`, et s'adapte sur les cœurs et les machines. Il propose une crate principale qui fournit des blocs de construction pour des fuzzers personnalisés, [libafl](https://github.com/aflplusplus/libafl/blob/main/crates/libafl), une bibliothèque contenant du code commun pouvant être utilisé pour l'instrumentation de cibles, [libafl_targets](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_targets), et une bibliothèque fournissant des outils pour encapsuler des compilateurs, [libafl_cc](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_cc). Il offre des intégrations avec des frameworks d'instrumentation populaires. Actuellement, les backends supportés sont :

- `SanitizerCoverage`, dans [libafl_targets](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_targets)
- `Frida`, dans [libafl_frida](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_frida)
- `QEMU` en mode utilisateur et système, incluant des hooks pour l'émulation, dans [libafl_qemu](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_qemu)
- `TinyInst`, dans [libafl_tinyinst](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_tinyinst) par [elbiazo](https://github.com/elbiazo)

## Construction et installation

#### Installer les dépendances

- **Le langage de développement Rust**
  - Nous recommandons vivement de *ne pas* utiliser par exemple le paquet de votre distribution Linux car il est probablement obsolète. Installez plutôt Rust directement, les instructions se trouvent [ici](https://www.rust-lang.org/tools/install).
  - La version minimale supportée de Rust est définie. Vous pouvez toujours vérifier la version actuellement requise dans le [Cargo.toml](https://github.com/AFLplusplus/LibAFL/blob/main/crates/libafl/Cargo.toml) de LibAFL :

    Si votre version installée de Rust est plus ancienne que celle listée dans Cargo.toml, mettez à jour vers la dernière toolchain stable :

    ```bash
    rustup update stable
    ```
- **Outils LLVM**
  - Les outils LLVM (incluant clang, clang++) sont nécessaires (plus récents que LLVM 15.0.0 jusqu'à LLVM 18.1.3). Si vous utilisez Debian/Ubuntu, encore une fois, nous recommandons vivement d'installer le paquet depuis [ici](https://apt.llvm.org/)
- Just :
  - Nous utilisons [just](https://github.com/casey/just) pour construire les fuzzers dans le répertoire `fuzzers/`. Vous trouverez les instructions pour l'installer dans votre environnement [dans le Manuel du Programmeur Just](https://just.systems/man/en/packages.html).

#### Cloner le dépôt `LibAFL` avec

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

#### Construire la bibliothèque avec

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

#### Construire la documentation de l'API avec

```sh
cargo doc
```

#### Parcourir le livre `LibAFL` (en cours !) avec (nécessite [mdbook](https://rust-lang.github.io/mdBook/index.html))

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

## Pour commencer

Nous rassemblons tous les exemples de fuzzers dans [`./fuzzers`](https://github.com/aflplusplus/libafl/blob/main/fuzzers).
Assurez-vous de lire leur documentation (et leur code source), c'est *la manière naturelle de commencer !*

```sh
just run
```

Vous pouvez exécuter chaque exemple de fuzzer avec cette commande, tant que le répertoire du fuzzer contient un fichier `Justfile`. Le fuzzer le mieux testé est [`./fuzzers/inprocess/libfuzzer_libpng`](https://github.com/aflplusplus/libafl/blob/main/fuzzers/inprocess/libfuzzer_libpng), un fuzzer multicœur de type libfuzzer utilisant `LibAFL` pour un harnais libpng.

### Ressources

- [Guide d'installation](https://github.com/aflplusplus/libafl/blob/main/docs/src/getting_started/setup.md)
- [Documentation de l'API en ligne](https://docs.rs/libafl/)
- Le livre `LibAFL` (en cours) [en ligne](https://aflplus.plus/libafl-book) ou dans le [dépôt](https://github.com/aflplusplus/libafl/blob/main/docs/src)
- Notre article de recherche [papier](https://www.s3.eurecom.fr/docs/ccs22_fioraldi.pdf)
- Notre présentation RC3 [vidéo](http://www.youtube.com/watch?v=3RWkT1Q5IV0 "Fuzzers Like LEGO") expliquant les concepts fondamentaux
- Notre présentation Fuzzcon Europe [vidéo](https://www.youtube.com/watch?v=PWB8GIhFAaI "LibAFL: The Advanced Fuzzing Library") avec une discussion (un peu mais pas trop obsolète) étape par étape sur la construction de quelques exemples de fuzzers
- Les solutions Fuzzing101 [solutions](https://github.com/epi052/fuzzing-101-solutions) & série d'articles de blog [articles de blog](https://epi052.gitlab.io/notes-to-self/blog/2021-11-01-fuzzing-101-with-libafl/) par [epi](https://github.com/epi052)
- Article de blog sur le fuzzing binaire uniquement avec la lib `libaf_qemu`, [Hacking TMNF - Fuzzing the game server](https://blog.bricked.tech/posts/tmnf/part1/), par [RickdeJager](https://github.com/RickdeJager).
- [Un atelier d'introduction à LibAFL](https://www.atredis.com/blog/2023/12/4/a-libafl-introductory-workshop), par [Jordan Whitehead](https://github.com/jordan9001)

## Contributeurs

`LibAFL` est écrit et maintenu par

- [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]>

## Contribuer

Veuillez consulter **[CONTRIBUTING.md](https://github.com/aflplusplus/libafl/blob/main/CONTRIBUTING.md)** pour les directives de contribution.

## Débogage

Votre fuzzer ne fonctionne pas comme prévu ? Essayez de lire [DEBUGGING.md](https://github.com/aflplusplus/libafl/blob/main/docs/src/DEBUGGING.md) pour comprendre comment déboguer vos problèmes.

## Citation

Si vous utilisez `LibAFL` pour vos travaux académiques, veuillez citer l'article suivant :

```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},
}
```

## Licence

<sup>
Sous licence soit <a href="https://github.com/aflplusplus/libafl/blob/main/LICENSE-APACHE">Apache License, Version
2.0</a> soit <a href="https://github.com/aflplusplus/libafl/blob/main/LICENSE-MIT">licence MIT</a> à votre choix.
</sup>

<br>

<sub>
Sauf indication contraire explicite de votre part, toute contribution soumise intentionnellement
pour inclusion dans cette crate par vous, telle que définie dans la licence Apache-2.0, sera
double licenciée comme ci-dessus, sans aucune condition supplémentaire.
</sub>
Télécharger l’outil