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
WuppieFuzz — Un fuzzer per API REST guidato dalla copertura, sviluppato sulla base di LibAFL | Kitploit
Strumenti/GitHubGitHub/tno-s3/wuppiefuzz
Analisi delle VulnerabilitàTest di Sicurezza delle APISicurezza WebFuzzingPenetration TestingSicurezza delle API
GitHubtno-s3/wuppiefuzz

WuppieFuzz

Un fuzzer per API REST guidato dalla copertura, sviluppato sulla base di LibAFL

Vedi Repository
2178435 giorni faRevisionato da Kitploit

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
# WuppieFuzz v1.8.0

<picture>
  <source media="(prefers-color-scheme: dark)" srcset="assets/WuppieFuzz-dark.svg">
  <source media="(prefers-color-scheme: light)" srcset="assets/WuppieFuzz.svg">
  <img alt="Logo di WuppieFuzz." src="https://raw.githubusercontent.com/tno-s3/wuppiefuzz/HEAD/assets/WuppieFuzz.svg" width="40%" min-width="250px" align="right">
</picture>

TNO ha sviluppato WuppieFuzz, un fuzzer REST API coverage-guided sviluppato su
LibAFL, rivolto a un'ampia platea di utenti finali, con una forte attenzione
alla facilità d'uso, all'esplicabilità dei difetti individuati e alla modularità. WuppieFuzz
supporta tutte e tre le modalità di testing (black box, grey box e white box).

> [!NOTE]  
> Per una guida rapida e passo-passo, segui il [tutorial](https://github.com/tno-s3/wuppiefuzz/blob/main/tutorial)!

## Copertura mediatica

WuppieFuzz è stato presentato in:

- [The ONE Conference e-magazine 2024](https://emagazine.one-conference.nl/2024/finally-validate-your-publicly-exposed-interfaces-with-ease/)
- [Test your APIs easily with TNO's new REST API fuzzer](https://www.tno.nl/en/newsroom/insights/2024/10/application-security-testing/)
- [OpenAPI.tools listing: WuppieFuzz](https://openapi.tools/tools/wuppiefuzz)
- [Automated REST API Vulnerability Detection with WuppieFuzz (Nordic APIs on YouTube)](https://www.youtube.com/watch?v=JcV9RUBvb2w)
- [Thoughtworks Technology Radar: WuppieFuzz](https://www.thoughtworks.com/radar/tools/wuppiefuzz)


### Pubblicazione scientifica

Se desideri citare WuppieFuzz in un lavoro accademico, utilizza la pubblicazione
preferita elencata in [CITATION.cff](https://github.com/tno-s3/wuppiefuzz/blob/main/CITATION.cff):

Rooijakkers, T., Nijsten, A., Daniele, C., Weitenberg, E., Groenewegen, R., &
Melissen, A. (2026). *WuppieFuzz: Coverage-Guided, Stateful REST API Fuzzing*.
In *Proceedings of the 12th International Conference on Information Systems
Security and Privacy (ICISSP), Volume 2*, 221-231. SciTePress.
https://doi.org/10.5220/0000217100004061

## Licenza

WuppieFuzz è distribuito con licenza Apache-2.0; vedi [LICENSE](https://github.com/tno-s3/wuppiefuzz/blob/main/LICENSE).  
Le note sulle licenze di terze parti sono elencate in [THIRD_PARTY_NOTICES](https://github.com/tno-s3/wuppiefuzz/blob/main/THIRD_PARTY_NOTICES).

## Installazione rapida

Per un'installazione rapida di WuppieFuzz sui sistemi operativi più diffusi (MacOS,
Windows, Linux) vedi [releases](https://github.com/TNO-S3/WuppieFuzz/releases/) oppure usa [`brew install wuppiefuzz`](https://formulae.brew.sh/formula/wuppiefuzz)

### Docker

Puoi creare l'immagine docker con `docker build . -t wuppiefuzz:local`. Per usarla, devi montare una cartella contenente la tua specifica openapi. Quando fai fuzzing su un servizio in esecuzione localmente (non in Docker), devi specificare il networking dell'host:

``` shell
docker run \
  --network host \
  -v ./fuzzing-folder:/fuzzing-folder \  # The folder will be populated with wuppiefuzz outputs
  -w /fuzzing-folder \
  wuppiefuzz:local fuzz --timeout 60 --report openapi.json
```



### Breve guida pratica

[![How to use WuppieFuzz? - YouTube](https://raw.githubusercontent.com/tno-s3/wuppiefuzz/HEAD/assets/demo_video.png)](https://www.youtube.com/watch?v=-oR4d9aXrqo)

## Prerequisiti per lo sviluppo

Per compilare il progetto devi installare le seguenti dipendenze e strumenti:

```
sudo apt install -y build-essential pkg-config cmake  # General build tools
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh  # Rust
```

## Esecuzione

<picture>
  <img alt="WuppieFuzz in azione." src="https://raw.githubusercontent.com/tno-s3/wuppiefuzz/HEAD/assets/WuppieFuzz-action.jfif" width="40%" min-width="250px" align="right">
</picture>

Prima di eseguire WuppieFuzz, devi avviare la tua applicazione target
(strumentata).

Inoltre, devi fornire a WuppieFuzz una **specifica OpenAPI** in modo che
sappia come generare e mutare le sue richieste. Per assistenza sugli argomenti
della riga di comando, usa quanto segue:

```sh
$ cargo run -- --help # shows help for required parameters and flags

Usage: wuppiefuzz [OPTIONS] [OPENAPI_SPEC.YAML]
...
```

Ad esempio, per eseguire WuppieFuzz contro un target Java con l'agente JaCoCo
collegato, specifichi il suo file OpenAPI (contenente l'URL su cui è in esecuzione
il target nella specifica API). Inoltre, specifichi che il formato di
coverage è JaCoCo e indichi la directory delle classi come segue:

```sh
cargo run -- fuzz openapi.yaml --coverage-format jacoco --jacoco-class-dir ../Targets/app/target/classes/
```

## File di configurazione

Se vuoi usare un file di configurazione invece di/in combinazione con gli argomenti
della riga di comando, puoi usare il flag `--config <CONFIG_FILE>`. Nel caso in cui usi
argomenti della riga di comando in combinazione con un file di configurazione, gli argomenti della riga di comando hanno la precedenza.

Il file di configurazione deve essere un file yaml e contenere una riga per ogni argomento
della riga di comando che vuoi specificare, ad esempio:

```yaml
coverage_format: jacoco
output_format: human-readable
source_dir: "/swagger-petstore/src/main/java"
jacoco_class_dir: "/swagger-petstore/target"
timeout: 20
```

Un esempio di comando di esecuzione potrebbe in questo caso essere:

```sh
$ cargo run -- fuzz --config=config.yaml --report --coverage-host=localhost:6300 --timeout=10 ./openapi.yaml
```

Questa riga combinerebbe gli argomenti dalla riga di comando e dal file di
configurazione. Poiché il flag `--timeout` è specificato in entrambi, il timeout specificato nella
riga di comando (10 secondi) avrà la precedenza.

Nella directory `example_configs/` troverai due file di configurazione di esempio da
usare per generare report di coverage con JaCoCo per codice Java e per generare
report di coverage con LCOV per codice Python.

## Report

Quando esegui WuppieFuzz con il flag `--report`, viene creata una sottodirectory all'interno di
`reports/` con un timestamp come nome. Tutti i report di coverage supportati vengono
scritti in questa sottodirectory. Esistono due tipi di report di coverage:

1. **endpoint coverage**: può essere sempre generato poiché richiede solo
   la specifica OpenAPI.
2. **code coverage**: attualmente supportato solo per JaCoCo, ma puntiamo a supportarne
   altri. La parte complicata è che questo richiede una mappatura dal coverage ai file
   sorgente, e una generazione di report robusta che la utilizzi.

Inoltre, un database viene popolato con tutte le informazioni sulle richieste relative alla tua
campagna di fuzzing. Questo database può essere visualizzato ed esplorato tramite la
dashboard Grafana.

## Struttura di questo repository

- **assets**: loghi, immagini, ecc.
- **coverage_agents**: codice e istruzioni per il tracciamento del coverage da applicare a
  vari target
- **example_configs**: file di configurazione di esempio per configurare WuppieFuzz
- **src**: codice sorgente di WuppieFuzz
- **tutorial**: un tutorial approfondito e di basso livello su come fare fuzzing di uno specifico
  target e su come interpretare i risultati del fuzzing
- **dashboard**: strumenti per il triage dei risultati del fuzzing e delle prestazioni

Per maggiori informazioni su ciascuno di questi, vedi i README in queste directory.

## Build di sviluppo

Per impostazione predefinita, WuppieFuzz include le sue dipendenze C (OpenSSL, SQLite, Z3) in modo che
un normale `cargo build` funzioni subito. Per una compilazione più rapida durante
lo sviluppo, puoi disabilitare tutte le dipendenze incluse e collegarti invece alle
librerie installate nel sistema.

> [!NOTE]
> Il crate `z3` richiede Z3 4.15+, che è più recente della versione fornita dalla
> maggior parte dei gestori di pacchetti delle distribuzioni Linux. Installa Z3 tramite
> [Homebrew](https://brew.sh/) (`brew install z3`) per ottenere una versione compatibile.

### Dipendenze di sistema

Installa le seguenti librerie sul tuo sistema:

**Debian/Ubuntu:**

```sh
sudo apt install libssl-dev libsqlite3-dev
brew install z3  # apt's libz3-dev is too old; use Homebrew instead
```

Su Linux, Homebrew installa in un percorso non standard. Aggiungi la sua directory delle librerie
al tuo ambiente in modo che il compilatore e il linker a runtime possano trovare Z3:

```sh
eval "$(brew shellenv)"
export LIBRARY_PATH="$(brew --prefix z3)/lib:$LIBRARY_PATH"
export LD_LIBRARY_PATH="$(brew --prefix z3)/lib:$LD_LIBRARY_PATH"
```

> [!TIP]
> Aggiungi le righe sopra al tuo `~/.bashrc` o `~/.zshrc` per renderle permanenti.

**Fedora (42+):**

```sh
sudo dnf install openssl-devel sqlite-devel z3-devel
```

**macOS (Homebrew):**

```sh
brew install openssl sqlite z3
```

### Alias Cargo

Il repository include alias cargo in `.cargo/config.toml` che compilano con
`--no-default-features`, collegandosi a tutte le librerie di sistema:

```sh
cargo dev-build          # build without vendored dependencies
cargo dev-run -- <args>  # run without vendored dependencies
cargo dev-test           # test without vendored dependencies
```

## Generazione della documentazione

`cargo doc --no-deps` per generare la documentazione dai commenti nel codice
sorgente. La pagina principale della documentazione sarà
`target/doc/wuppiefuzz/index.html`
Scarica lo strumento