Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
LibAFL — Biblioteca avanzada de fuzzing - ¡Conecta tu Fuzzer en Rust! Escala entre núcleos y máquinas. Para Windows, Android, MacOS, Linux, no_std, ... | Kitploit
Herramientas/GitHubGitHub/aflplusplus/libafl
Frameworks de Pruebas de PenetraciónAnálisis Dinámico (Sandboxing)Frameworks de ExploitsAnálisis de VulnerabilidadesFuzzingAnálisis de BinariosPapers e InvestigaciónAprendizaje y EducaciónTop en Fuzzing #10
2.6k47860hace 1 díaRevisado por Kitploit
GitHub
aflplusplus/libafl

LibAFL

Biblioteca avanzada de fuzzing - ¡Conecta tu Fuzzer en Rust! Escala entre núcleos y máquinas. Para Windows, Android, MacOS, Linux, no_std, ...

Ver Repositorio

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
# `LibAFL`, la biblioteca de fuzzing

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

Biblioteca avanzada de fuzzing: ensamble sus propios fuzzers y amplíe sus funcionalidades usando Rust.

`LibAFL` es una colección de piezas reutilizables de fuzzers, escrita en Rust, que le brinda muchos de los beneficios de un fuzzer comercial, siendo completamente personalizable.
Algunas características destacadas incluyen actualmente:

- `fast`: Hacemos todo lo posible en tiempo de compilación, minimizando la sobrecarga en tiempo de ejecución. Los usuarios alcanzan 120k ejecuciones/seg en modo frida en un teléfono (usando todos los núcleos).
- `scalable`: El `paso de mensajes de bajo nivel`, o `LLMP` para abreviar, permite que `LibAFL` escale casi linealmente entre núcleos, y a través de TCP a múltiples máquinas.
- `adaptable`: Puede reemplazar cada parte de `LibAFL`. Por ejemplo, `BytesInput` es solo un posible formulario de entrada: siéntase libre de agregar una entrada basada en AST para fuzzing estructurado, y más.
- `multi plataforma`: `LibAFL` funciona en *Windows*, *macOS*, *iOS*, *Linux* y *Android*, y más. `LibAFL` se puede compilar en modo `no_std` para inyectar `LibAFL` en objetivos oscuros como dispositivos embebidos e hipervisores.
- `traiga su propio objetivo`: Admitimos modos solo binarios, como el modo Frida, así como múltiples pasos de compilación para instrumentación basada en código fuente. Por supuesto, es fácil agregar backends de instrumentación personalizados.

## Conceptos principales

`LibAFL` es rápido, multiplataforma, compatible con `no_std` y escala entre núcleos y máquinas. Ofrece un crate principal que proporciona bloques de construcción para fuzzers personalizados, [libafl](https://github.com/aflplusplus/libafl/blob/main/crates/libafl), una biblioteca que contiene código común que se puede usar para la instrumentación de objetivos, [libafl_targets](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_targets), y una biblioteca que proporciona facilidades para envolver compiladores, [libafl_cc](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_cc). Ofrece integraciones con marcos de instrumentación populares. Actualmente, los backends compatibles son:

- `SanitizerCoverage`, en [libafl_targets](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_targets)
- `Frida`, en [libafl_frida](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_frida)
- `QEMU` modo usuario y modo sistema, incluidos hooks para emulación, en [libafl_qemu](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_qemu)
- `TinyInst`, en [libafl_tinyinst](https://github.com/aflplusplus/libafl/blob/main/crates/libafl_tinyinst) por [elbiazo](https://github.com/elbiazo)

## Compilación e instalación

#### Instalar las dependencias

- **El lenguaje de desarrollo Rust**
  - Recomendamos encarecidamente *no* usar, por ejemplo, el paquete de su distribución Linux, ya que probablemente esté desactualizado. Por lo tanto, instale Rust directamente, las instrucciones se pueden encontrar [aquí](https://www.rust-lang.org/tools/install).
  - La versión mínima de Rust compatible está definida. Siempre puede verificar la versión requerida actualmente en el [Cargo.toml](https://github.com/AFLplusplus/LibAFL/blob/main/crates/libafl/Cargo.toml) de LibAFL:

    Si su versión instalada de Rust es anterior a la que aparece en Cargo.toml, actualice al último toolchain estable:

    ```bash
    rustup update stable
    ```
- **Herramientas LLVM**
  - Las herramientas LLVM (incluyendo clang, clang++) son necesarias (más nuevas que LLVM 15.0.0 hasta LLVM 18.1.3) Si usa Debian/Ubuntu, nuevamente, recomendamos encarecidamente que instale el paquete desde [aquí](https://apt.llvm.org/)
- Just:
  - Usamos [just](https://github.com/casey/just) para compilar los fuzzers en el directorio `fuzzers/`. Puede encontrar instrucciones para instalarlo en su entorno [en el Manual del programador de Just](https://just.systems/man/en/packages.html).

#### Clone el repositorio de `LibAFL` con

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

#### Compile la biblioteca usando

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

#### Compile la documentación de la API con

```sh
cargo doc
```

#### Navegue por el libro de `LibAFL` (¡en proceso!) con (requiere [mdbook](https://rust-lang.github.io/mdBook/index.html))

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

## Comenzando

Recopilamos todos los fuzzers de ejemplo en [`./fuzzers`](https://github.com/aflplusplus/libafl/blob/main/fuzzers).
Asegúrese de leer su documentación (y código fuente), ¡esta es *la forma natural de empezar!*

```sh
just run
```

Puede ejecutar cada fuzzer de ejemplo con este comando, siempre que el directorio del fuzzer tenga un archivo `Justfile`. El fuzzer mejor probado es [`./fuzzers/inprocess/libfuzzer_libpng`](https://github.com/aflplusplus/libafl/blob/main/fuzzers/inprocess/libfuzzer_libpng), un fuzzer multinúcleo similar a libfuzzer que usa `LibAFL` para un harness de libpng.

### Recursos

- [Guía de instalación](https://github.com/aflplusplus/libafl/blob/main/docs/src/getting_started/setup.md)
- [Documentación en línea de la API](https://docs.rs/libafl/)
- El libro de `LibAFL` (en proceso) [en línea](https://aflplus.plus/libafl-book) o en el [repositorio](https://github.com/aflplusplus/libafl/blob/main/docs/src)
- Nuestro [artículo](https://www.s3.eurecom.fr/docs/ccs22_fioraldi.pdf) de investigación
- Nuestra [charla](http://www.youtube.com/watch?v=3RWkT1Q5IV0 "Fuzzers como LEGO") en RC3 explicando los conceptos centrales
- Nuestra [charla](https://www.youtube.com/watch?v=PWB8GIhFAaI "LibAFL: La biblioteca avanzada de fuzzing") en Fuzzcon Europe con una discusión paso a paso (un poco pero no tan desactualizada) sobre cómo construir algunos fuzzers de ejemplo
- Las [soluciones](https://github.com/epi052/fuzzing-101-solutions) de Fuzzing101 y la serie de [publicaciones de blog](https://epi052.gitlab.io/notes-to-self/blog/2021-11-01-fuzzing-101-with-libafl/) por [epi](https://github.com/epi052)
- Publicación de blog sobre fuzzing solo binario `libaf_qemu`, [Hacking TMNF - Fuzzing del servidor del juego](https://blog.bricked.tech/posts/tmnf/part1/), por [RickdeJager](https://github.com/RickdeJager).
- [Un taller introductorio de LibAFL](https://www.atredis.com/blog/2023/12/4/a-libafl-introductory-workshop), por [Jordan Whitehead](https://github.com/jordan9001)

## Contribuyentes

`LibAFL` está escrito y mantenido por

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

## Contribuir

Consulte **[CONTRIBUTING.md](https://github.com/aflplusplus/libafl/blob/main/CONTRIBUTING.md)** para la guía de contribución.

## Depuración

¿Su fuzzer no funciona como esperaba? Intente leer [DEBUGGING.md](https://github.com/aflplusplus/libafl/blob/main/docs/src/DEBUGGING.md) para entender cómo depurar sus problemas.

## Citar

Si usa `LibAFL` para su trabajo académico, cite el siguiente artículo:

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

## Licencia

<sup>
Licenciado bajo <a href="https://github.com/aflplusplus/libafl/blob/main/LICENSE-APACHE">Licencia Apache, Versión
2.0</a> o <a href="https://github.com/aflplusplus/libafl/blob/main/LICENSE-MIT">licencia MIT</a> a su elección.
</sup>

<br>

<sub>
A menos que indique explícitamente lo contrario, cualquier contribución enviada intencionalmente
para su inclusión en este crate por usted, según lo definido en la licencia Apache-2.0, tendrá
una licencia dual como se indica arriba, sin términos ni condiciones adicionales.
</sub>
Descargar herramienta