Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
LibAFL — Libreria di Fuzzing Avanzata - Incastra il tuo Fuzzer insieme in Rust! Scala su core e macchine. Per Windows, Android, MacOS, Linux, no_std, ... | Kitploit
Strumenti/GitHubGitHub/aflplusplus/libafl
Frameworks per Penetration TestingAnalisi Dinamica (Sandboxing)Framework di ExploitAnalisi delle VulnerabilitàFuzzingAnalisi di BinariPaper e RicercaApprendimento e FormazioneTop in Fuzzing n.10
2.6k478602 giorni faRevisionato da Kitploit
GitHub
aflplusplus/libafl

LibAFL

Libreria di Fuzzing Avanzata - Incastra il tuo Fuzzer insieme in Rust! Scala su core e macchine. Per Windows, Android, MacOS, Linux, no_std, ...

Vedi Repository

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
# `LibAFL`, la libreria per fuzzing

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

Libreria Avanzata per Fuzzing - Combina i tuoi fuzzer e estendi le loro funzionalità usando Rust.

`LibAFL` è una collezione di componenti riutilizzabili di fuzzer, scritta in Rust, che ti offre molti dei vantaggi di un fuzzer già pronto, pur essendo completamente personalizzabile.
Alcune delle caratteristiche principali attualmente includono:

- `fast`: Facciamo tutto il possibile in fase di compilazione, mantenendo il sovraccarico a runtime minimo. Gli utenti raggiungono 120k esecuzioni/sec in modalità Frida su un telefono (usando tutti i core).
- `scalable`: `Low Level Message Passing`, `LLMP` in breve, consente a `LibAFL` di scalare quasi linearmente su più core e, via TCP, su più macchine.
- `adaptable`: Puoi sostituire ogni parte di `LibAFL`. Ad esempio, `BytesInput` è solo una possibile forma di input: sentiti libero di aggiungere un input basato su AST per fuzzing strutturato e altro.
- `multi platform`: `LibAFL` funziona su *Windows*, *macOS*, *iOS*, *Linux* e *Android*, e altro. `LibAFL` può essere compilato in modalità `no_std` per iniettare `LibAFL` in target oscuri come dispositivi embedded e hypervisor.
- `bring your own target`: Supportiamo modalità solo binario, come Frida-Mode, e anche molteplici passaggi di compilazione per strumentazione basata su codice sorgente. Ovviamente è facile aggiungere backend di strumentazione personalizzati.

## Concetti principali

`LibAFL` è veloce, multipiattaforma, compatibile con `no_std` e scala su core e macchine. Offre un crate principale che fornisce componenti di base per fuzzer personalizzati, [libafl](https://github.com/aflplusplus/libafl/blob/main/crates/libafl), una libreria contenente codice comune che può essere usata per la strumentazione dei target, [libafl_targets](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_targets), e una libreria che fornisce strumenti per avvolgere compilatori, [libafl_cc](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_cc). Offre integrazioni con framework di strumentazione popolari. Al momento, i backend supportati sono:

- `SanitizerCoverage`, in [libafl_targets](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_targets)
- `Frida`, in [libafl_frida](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_frida)
- `QEMU` user-mode e system mode, inclusi hook per emulazione, in [libafl_qemu](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_qemu)
- `TinyInst`, in [libafl_tinyinst](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_tinyinst) by [elbiazo](https://github.com/elbiazo)

## Compilazione e installazione

#### Installa le dipendenze

- **Il linguaggio di sviluppo Rust**
  - Ti consigliamo vivamente di *non* usare ad esempio il pacchetto della tua distribuzione Linux poiché probabilmente è obsoleto. Piuttosto installa Rust direttamente, le istruzioni si trovano [qui](https://www.rust-lang.org/tools/install).
  - La versione minima supportata di Rust è definita. Puoi sempre controllare la versione attualmente richiesta nel [Cargo.toml](https://github.com/AFLplusplus/LibAFL/blob/main/crates/libafl/Cargo.toml) di LibAFL:

    Se la versione di Rust installata è più vecchia di quella elencata in Cargo.toml, aggiorna all'ultima toolchain stabile:

    ```bash
    rustup update stable
    ```
- **Strumenti LLVM**
  - Gli strumenti LLVM (inclusi clang, clang++) sono necessari (più recenti di LLVM 15.0.0 fino a LLVM 18.1.3). Se stai usando Debian/Ubuntu, ancora una volta, raccomandiamo vivamente di installare il pacchetto da [qui](https://apt.llvm.org/)
- Just:
  - Usiamo [just](https://github.com/casey/just) per compilare i fuzzer nella directory `fuzzers/`. Puoi trovare le istruzioni per installarlo nel tuo ambiente [nel Manuale del Programmatore di Just](https://just.systems/man/en/packages.html).

#### Clona il repository `LibAFL` con

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

#### Compila la libreria usando

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

#### Compila la documentazione API con

```sh
cargo doc
```

#### Sfoglia il libro `LibAFL` (WIP!) con (richiede [mdbook](https://rust-lang.github.io/mdBook/index.html))

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

## Per iniziare

Raccogliamo tutti i fuzzer di esempio in [`./fuzzers`](https://github.com/aflplusplus/libafl/blob/main/fuzzers). Assicurati di leggere la loro documentazione (e il codice sorgente), questo è *il modo naturale per iniziare!*

```sh
just run
```

Puoi eseguire ogni fuzzer di esempio con questo comando, purché la directory del fuzzer abbia un file `Justfile`. Il fuzzer più testato è [`./fuzzers/inprocess/libfuzzer_libpng`](https://github.com/aflplusplus/libafl/blob/main/fuzzers/inprocess/libfuzzer_libpng), un fuzzer multicore simile a libfuzzer che usa `LibAFL` per un harness libpng.

### Risorse

- [Guida all'installazione](https://github.com/aflplusplus/libafl/blob/main/docs/src/getting_started/setup.md)
- [Documentazione API online](https://docs.rs/libafl/)
- Il libro `LibAFL` (WIP) [online](https://aflplus.plus/libafl-book) o nel [repo](https://github.com/aflplusplus/libafl/blob/main/docs/src)
- Il nostro [articolo](https://www.s3.eurecom.fr/docs/ccs22_fioraldi.pdf) di ricerca
- Il nostro [talk](http://www.youtube.com/watch?v=3RWkT1Q5IV0 "Fuzzers Like LEGO") all'RC3 che spiega i concetti fondamentali
- Il nostro [talk](https://www.youtube.com/watch?v=PWB8GIhFAaI "LibAFL: The Advanced Fuzzing Library") al Fuzzcon Europe con una discussione passo-passo (un po' ma non troppo obsoleta) su come costruire alcuni fuzzer di esempio
- Le [soluzioni](https://github.com/epi052/fuzzing-101-solutions) del Fuzzing101 e serie di [post sul blog](https://epi052.gitlab.io/notes-to-self/blog/2021-11-01-fuzzing-101-with-libafl/) di [epi](https://github.com/epi052)
- Post sul blog sul fuzzing solo binario con la libreria `libaf_qemu`, [Hacking TMNF - Fuzzing the game server](https://blog.bricked.tech/posts/tmnf/part1/), di [RickdeJager](https://github.com/RickdeJager).
- [Un Workshop Introduttivo a LibAFL](https://www.atredis.com/blog/2023/12/4/a-libafl-introductory-workshop), di [Jordan Whitehead](https://github.com/jordan9001)

## Collaboratori

`LibAFL` è scritto e mantenuto da

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

## Contribuire

Per favore consulta **[CONTRIBUTING.md](https://github.com/aflplusplus/libafl/blob/main/CONTRIBUTING.md)** per le linee guida su come contribuire.

## Debug

Il tuo fuzzer non funziona come previsto? Prova a leggere [DEBUGGING.md](https://github.com/aflplusplus/libafl/blob/main/docs/src/DEBUGGING.md) per capire come fare debug dei tuoi problemi.

## Citazione

Se usi `LibAFL` per il tuo lavoro accademico, per favore cita il seguente articolo:

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

## Licenza

<sup>
Concesso in licenza secondo una delle seguenti: <a href="https://github.com/aflplusplus/libafl/blob/main/LICENSE-APACHE">Apache License, Version 2.0</a> o <a href="https://github.com/aflplusplus/libafl/blob/main/LICENSE-MIT">licenza MIT</a> a tua scelta.
</sup>

<br>

<sub>
Salvo dichiarazione contraria esplicita, qualsiasi contributo inviato intenzionalmente per l'inclusione in questo crate da parte tua, come definito nella licenza Apache-2.0, sarà concesso in doppia licenza come sopra, senza termini o condizioni aggiuntivi.
</sub>
Scarica lo strumento