Volver a actualizaciones
Nuevo releaseAug 20, 2026

lava v3.3.0

LAVA: Adición Automatizada de Vulnerabilidades a Gran Escala

Compartir

LAVA: Adición Automatizada de Vulnerabilidades a Gran Escala

Publish Lava Package and Container

Lava Tests

Evaluar y mejorar las herramientas de búsqueda de errores es actualmente difícil debido a la escasez de corpus de verdad fundamental (es decir, software que tiene errores conocidos con entradas que los desencadenan). LAVA intenta resolver este problema inyectando errores automáticamente en el software. Cada error de LAVA está acompañado por una entrada que lo desencadena, mientras que las entradas normales tienen una probabilidad extremadamente baja de hacerlo. Estas vulnerabilidades son sintéticas pero, sostenemos, aún realistas, en el sentido de que están incrustadas profundamente dentro de los programas y son desencadenadas por entradas reales. Nuestro trabajo constituye la base de un enfoque para generar grandes corpus de vulnerabilidades de verdad fundamental bajo demanda, lo que permite una evaluación rigurosa de herramientas y proporciona un objetivo de alta calidad para los desarrolladores de herramientas.

LAVA es el producto de una colaboración entre MIT Lincoln Laboratory, NYU y Northeastern University.

Inicio Rápido

Docker

La última versión de la rama master de LAVA se compila automáticamente como imágenes de docker basadas en Ubuntu 22.04 y se publica en Docker Hub. La mayoría de los usuarios querrán usar el contenedor lava que tiene PANDA y LAVA instalados junto con sus dependencias de tiempo de ejecución, pero sin artefactos de compilación ni código fuente para reducir el tamaño del contenedor.

Para usar el contenedor lava puedes extraerlo de Docker Hub:

$ docker pull pandare/lava

O compilarlo desde este repositorio:

$ DOCKER_BUILDKIT=1 docker build lava .

Ubuntu, Debian

Instalación Local

En un sistema que ejecute Ubuntu 22.04, deberías poder simplemente ejecutar bash install.sh. Ten en cuenta que este script de instalación instalará paquetes y hará cambios en tu sistema. Puedes eliminar los binarios usando sudo apt-get remove lava.

Una vez que termines de instalar el binario, puedes instalar localmente ejecutando pip install ..

NOTA que el paquete de Python requiere un archivo SQL generado a partir de la compilación de los binarios que se coloca en python/src/pyroclastic/data/lava.sql. Sin este archivo, el paquete de Python no funcionará correctamente.

Instalación regular

Alternativamente, puedes instalar manualmente las dependencias de LAVA y luego compilar desde el código fuente. Descarga los paquetes Debian ubicados en las releases. Luego instala el paquete de python pip install pyroclastic.

Pasos finales

Utilizar host.json

A continuación, ejecuta init_host para generar un host.json en tu directorio ~/.lava. Este archivo es usado por LAVA para almacenar configuraciones específicas de tu máquina. Puedes editar estas configuraciones según sea necesario, pero los valores predeterminados deberían funcionar, consulta vars.py.

Algunos valores a tener en cuenta son los siguientes:

  • pguser Este es el nombre del usuario de la base de datos, actualmente por defecto es postgres
  • host es el nombre de la base de datos Postgres SQL con todos los errores de LAVA. Actualmente, por defecto es database, aunque si instalaste LAVA localmente, probablemente deberías cambiarlo a localhost

NOTA: También necesitas dos variables de entorno para la base de datos Postgres SQL:

  • POSTGRES_PASS Esta es la contraseña para el usuario de Postgres SQL`
  • POSTGRES_USER Este es el nombre de host para la base de datos Postgres SQL

Configuraciones de proyecto

Las configuraciones de proyecto se encuentran en el directorio target_configs, donde cada configuración se encuentra en target_configs/projectname/projectname.json. Las rutas especificadas dentro de estos archivos de configuración son relativas a los valores establecidos en tu archivo host.json.

Configurar la base de datos postgres SQL

Como se mencionó, deberías crear un usuario de Postgres SQL. Puedes usar un script para usar las variables de entorno para lo siguiente:

  • Crear el usuario con el nombre de usuario y contraseña proporcionados desde las variables de entorno.
  • Actualizar la base de datos Postgres SQL en el host para aceptar tráfico de fuentes externas (por ejemplo, el contenedor Docker de LAVA)

Uso

Finalmente, puedes ejecutar lava para inyectar errores en un programa. Solo proporciona el nombre de un proyecto que esté en el directorio target_configs, por ejemplo:

lava -ak toy

¡Ahora deberías tener una copia con errores de toy!

Si quieres inyectar errores en un nuevo objetivo, probablemente necesitarás hacer algunas modificaciones. Consulta How-to-Lava para obtener orientación.

Documentación

Consulta la carpeta docs para comenzar.

Autores

LAVA es el resultado de varios años de desarrollo por muchas personas; una lista parcial (alfabética) de contribuyentes se encuentra a continuación:

  • Andy Davis
  • Brendan Dolan-Gavitt
  • Andrew Fasano
  • Zhenghao Hu
  • Patrick Hulin
  • Amy Jiang
  • Engin Kirda
  • Tim Leek
  • Andrea Mambretti
  • Andrew Quijano
  • Wil Robertson
  • Aaron Sedlacek
  • Rahul Sridhar
  • Frederick Ulrich
  • Ryan Whelan

Categorías