Tutoriales

LibAFL: biblioteca de fuzzing ampliada

Advanced Fuzzing Library es una ranura donde puedes aunar tus propios fuzzers y expandir sus funciones con la ayuda de Rust. LibAFL está escrito y mantenido por Andrea Fioraldi [email protected] y Dominik Maier [email protected]

¿Por qué LibAFL?

LibAFL le ofrece muchos de los beneficios de un fuzzer comercial y es totalmente personalizable. Algunas funciones destacadas actualmente incluyen:

  • fast:: Hacemos todo lo posible en tiempo de compilación para proseguir la sobrecarga del tiempo de ejecución al insignificante. Los usuarios logran 120,000 ejecutivos / seg en modo Frida en un teléfono (usando todos los núcleos).
  • scalable:: Low Level Message Passing, LLMP En recapitulación, LibAFL le permite subir casi linealmente a través de núcleos y pronto a través de múltiples computadoras a través de TCP.
  • adaptable: Puede reemplazar cualquier parte de LibAFL. Por ejemplo, BytesInput es solo una posible entrada de formulario: siempre puede anexar entrada basada en AST para fuzzing estructurado y más.
  • multi platform: Se ha confirmado que LibAFL está trabajando en ello. Ventanas, Mac OS, Linux, y Androide en x86_64 y aarch64. LibAFL se puede construir en no_std Modo para inyectar LibAFL en objetivos oscuros como dispositivos integrados e hipervisores.
  • bring your own target:: Admitimos modos binarios puros, como el modo Frida, así como múltiples pasadas de compilación para instrumentos según la fuente. Por supuesto, es tratable anexar backends de instrumentación personalizados.

Información caudillo

LibAFL es una colección de piezas fuzz reutilizables escritas en Rust. Es rápido, multiplataforma, compatible con no_std y se puede subir entre núcleos y máquinas.

Tiene una caja principal de bloques de construcción para fuzzers personalizados, libafl, una biblioteca de código caudillo que se puede usar para instrumentación de destino, libafl_targets y una biblioteca de funciones para empaquetar compiladores, libafl_cc.

LibAFL ofrece integraciones con marcos de instrumentación populares. Actualmente se admiten los siguientes backends:

Empezado

  1. Instale el lengua de incremento de Rust. Nosotros recomendamos No por ejemplo, para usar su paquete de distribución de Linux, ya que probablemente esté desactualizado. Por eso es mejor instalar Rust directamente. Las instrucciones se pueden encontrar aquí.
  2. Clone el repositorio LibAFL con

Clon de Git https://github.com/AFLplusplus/LibAFL

Construye la biblioteca con

Construcción de mercancías – aprobación

Cree la documentación de la API con

Documento de flete

Busque el tomo LibAFL (WIP!) Con (requiere mdbook)

cd docs && mdbook serve

Recopilamos todos los fuzzers de muestra en ./fuzzers. Asegúrese de ojear su documentación (y fuente) ¡la forma natural de iniciar!

El difusor mejor probado es ./fuzzers/libfuzzer_libpng, un fuzzer similar a libfuzzer multinúcleo que usa LibAFL para un arnés libpng.

capital

Contribuir

Consulte el archivo TODO.md para ver las funciones que queremos conceder.

En caso de errores, no dude en idear problemas o contáctenos directamente. Gracias por tu apoyo. <3

Incluso si estamos felices de ayudarlo a finalizar su PR, pruébelo

  • usar estable oxido
  • Valer cargo fmt en su código ayer de presionar
  • Compruebe la salida de cargo clippy --all o ./clippy.sh
  • Valer cargo build --no-default-features demostrar no_std Compatibilidad (y posiblemente anexar #[cfg(feature = "std")]) para ocultar partes de su código.

Algunas de las partes de esta directorio pueden ser complicadas. No tenga miedo de brindar un PR si no puede arreglarlo usted mismo para que podamos ayudarlo.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba