Retour aux mises à jour
New releaseAug 20, 2026

lava v3.3.0

LAVA : Ajout automatisé de vulnérabilités à grande échelle

Partager

LAVA : Ajout automatisé de vulnérabilités à grande échelle

Publish Lava Package and Container

Lava Tests

L'évaluation et l'amélioration des outils de recherche de bugs sont actuellement difficiles en raison d'une pénurie de corpus de référence (c'est-à-dire de logiciels comportant des bugs connus avec des entrées déclenchantes). LAVA tente de résoudre ce problème en injectant automatiquement des bugs dans les logiciels. Chaque bug LAVA est accompagné d'une entrée qui le déclenche, alors que les entrées normales ont une probabilité extrêmement faible de le faire. Ces vulnérabilités sont synthétiques mais, nous soutenons, restent réalistes, dans le sens où elles sont intégrées profondément dans les programmes et sont déclenchées par de véritables entrées. Notre travail constitue la base d'une approche pour générer à la demande de grands corpus de vulnérabilités de référence, permettant une évaluation rigoureuse des outils et fournissant une cible de haute qualité pour les développeurs d'outils.

LAVA est le fruit d'une collaboration entre le MIT Lincoln Laboratory, NYU et Northeastern University.

Démarrage rapide

Docker

La dernière version de la branche master de LAVA est automatiquement construite en tant qu'image Docker basée sur Ubuntu 22.04 et publiée sur Docker Hub. La plupart des utilisateurs voudront utiliser le conteneur lava qui dispose de PANDA et LAVA installés avec leurs dépendances d'exécution, mais sans artefacts de compilation ni code source afin de réduire la taille du conteneur.

Pour utiliser le conteneur lava, vous pouvez le récupérer depuis Docker Hub :

$ docker pull pandare/lava

Ou le construire depuis ce dépôt :

$ DOCKER_BUILDKIT=1 docker build lava .

Ubuntu, Debian

Installation locale

Sur un système exécutant Ubuntu 22.04, vous devriez pouvoir simplement exécuter bash install.sh. Notez que ce script d'installation installera des paquets et apportera des modifications à votre système. Vous pouvez supprimer les binaires avec sudo apt-get remove lava.

Une fois l'installation du binaire terminée, vous pouvez installer localement en exécutant pip install ..

REMARQUE : le paquet Python nécessite un fichier SQL généré à partir de la compilation des binaires, placé dans python/src/pyroclastic/data/lava.sql. Sans ce fichier, le paquet Python ne fonctionnera pas correctement.

Installation standard

Alternativement, vous pouvez installer manuellement les dépendances de LAVA puis compiler depuis les sources. Téléchargez les paquets Debian situés dans les releases. Installez ensuite le paquet Python pip install pyroclastic.

Étapes finales

Utilisation de host.json

Ensuite, exécutez init_host pour générer un host.json dans votre répertoire ~/.lava. Ce fichier est utilisé par LAVA pour stocker les paramètres spécifiques à votre machine. Vous pouvez modifier ces paramètres si nécessaire, mais les valeurs par défaut devraient fonctionner, voir vars.py.

Quelques valeurs à garder en tête sont les suivantes :

  • pguser Il s'agit du nom de l'utilisateur de la base de données, actuellement par défaut postgres
  • host est le nom de la base de données Postgres SQL contenant tous les bugs LAVA. Actuellement, il est par défaut database, bien que si vous avez installé LAVA localement, vous devriez probablement le changer en localhost

REMARQUE : vous avez également besoin de deux variables d'environnement pour la base de données Postgres SQL :

  • POSTGRES_PASS Il s'agit du mot de passe de l'utilisateur Postgres SQL`
  • POSTGRES_USER Il s'agit du nom d'hôte de la base de données Postgres SQL

Configurations de projet

Les configurations de projet sont situées dans le répertoire target_configs, où chaque configuration se trouve à target_configs/projectname/projectname.json. Les chemins spécifiés dans ces fichiers de configuration sont relatifs aux valeurs définies dans votre fichier host.json.

Configuration de la base de données Postgres SQL

Comme mentionné, vous devez créer un utilisateur Postgres SQL. Vous pouvez utiliser un script pour utiliser les variables d'environnement afin de :

  • Créer l'utilisateur avec le nom d'utilisateur et le mot de passe fournis via les variables d'environnement.
  • Mettre à jour la base de données Postgres SQL sur l'hôte pour accepter le trafic provenant de sources externes (par exemple, le conteneur Docker LAVA)

Utilisation

Enfin, vous pouvez exécuter lava pour réellement injecter des bugs dans un programme. Fournissez simplement le nom d'un projet présent dans le répertoire target_configs, par exemple :

lava -ak toy

Vous devriez maintenant avoir une copie boguée de toy !

Si vous souhaitez injecter des bugs dans une nouvelle cible, vous devrez probablement apporter quelques modifications. Consultez How-to-Lava pour obtenir des conseils.

Documentation

Consultez le dossier docs pour commencer.

Auteurs

LAVA est le résultat de plusieurs années de développement par de nombreuses personnes ; une liste partielle (par ordre alphabétique) des contributeurs figure ci-dessous :

  • 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

Catégories