Torna agli aggiornamenti
New releaseAug 20, 2026

lava v3.3.0

LAVA: Aggiunta automatizzata di vulnerabilità su larga scala

Condividi

LAVA: Aggiunta Automatica di Vulnerabilità su Larga Scala

Publish Lava Package and Container

Lava Tests

Valutare e migliorare gli strumenti di rilevamento dei bug è attualmente difficile a causa della scarsità di corpora di verità di base (cioè software con bug noti e input che li attivano). LAVA tenta di risolvere questo problema iniettando automaticamente bug nel software. Ogni bug LAVA è accompagnato da un input che lo attiva, mentre gli input normali è estremamente improbabile che lo facciano. Queste vulnerabilità sono sintetiche ma, sosteniamo, comunque realistiche, nel senso che sono incorporate in profondità nei programmi e vengono attivate da input reali. Il nostro lavoro costituisce la base di un approccio per generare su richiesta grandi corpora di vulnerabilità di verità di base, consentendo una valutazione rigorosa degli strumenti e fornendo un obiettivo di alta qualità per gli sviluppatori di strumenti.

LAVA è il prodotto di una collaborazione tra il MIT Lincoln Laboratory, la NYU e la Northeastern University.

Avvio Rapido

Docker

L'ultima versione del ramo master di LAVA viene automaticamente costruita come immagine docker basata su Ubuntu 22.04 e pubblicata su Docker Hub. La maggior parte degli utenti vorrà usare il container lava che ha PANDA e LAVA installati insieme alle loro dipendenze runtime, ma nessun artefatto di build o codice sorgente per ridurre le dimensioni del container.

Per usare il container lava puoi prelevarlo da Docker Hub:

$ docker pull pandare/lava

Oppure costruiscilo da questo repository:

$ DOCKER_BUILDKIT=1 docker build lava .

Ubuntu, Debian

Installazione Locale

Su un sistema con Ubuntu 22.04, dovresti essere in grado di eseguire semplicemente bash install.sh. Nota che questo script di installazione installerà pacchetti e apporterà modifiche al tuo sistema. Puoi rimuovere i binari con sudo apt-get remove lava.

Una volta terminata l'installazione del binario, puoi installare localmente eseguendo pip install python/.

NOTA che il pacchetto Python richiede un file SQL generato dalla compilazione dei binari che viene inserito in python/src/pyroclastic/data/lava.sql. Senza questo file, il pacchetto Python non funzionerà correttamente.

Installazione Normale

In alternativa, puoi installare manualmente le dipendenze di LAVA e poi compilare dal sorgente. Scarica i pacchetti Debian situati nelle release. Poi installa il pacchetto python pip install pyroclastic.

Passaggi Finali

Utilizzo di host.json

Successivamente, esegui init_host per generare un host.json nella tua directory ~/.lava. Questo file viene utilizzato da LAVA per memorizzare le impostazioni specifiche della tua macchina. Puoi modificare queste impostazioni secondo necessità, ma i valori predefiniti dovrebbero funzionare, vedi vars.py.

Alcuni valori da tenere a mente sono i seguenti:

  • pguser Questo è il nome dell'utente del database, attualmente predefinito a postgres
  • host è il nome del database Postgres SQL con tutti i bug LAVA. Attualmente predefinito a database, anche se se hai installato LAVA localmente, probabilmente dovresti cambiarlo in localhost

NOTA: Sono necessarie anche due variabili d'ambiente per il database Postgres SQL:

  • POSTGRES_PASS Questa è la password per l'utente Postgres SQL`
  • POSTGRES_USER Questo è l'hostname per il database Postgres SQL

Configurazioni del Progetto

Le configurazioni del progetto si trovano nella directory target_configs, dove ogni configurazione si trova in target_configs/projectname/projectname.json. I percorsi specificati all'interno di questi file di configurazione sono relativi ai valori impostati nel file host.json.

Configurazione del database Postgres SQL

Come accennato, dovresti creare un utente Postgres SQL. Puoi usare uno script per usare le variabili d'ambiente per quanto segue:

  • Crea l'utente con il nome utente e la password forniti dalle variabili d'ambiente.
  • Aggiorna il database Postgres SQL sull'host per accettare traffico da fonti esterne (ad es. container Docker LAVA)

Utilizzo

Infine, puoi eseguire lava per iniettare effettivamente bug in un programma. Basta fornire il nome di un progetto che si trova nella directory target_configs, ad esempio:

lava -ak toy

Ora dovresti avere una copia buggata di toy!

Se vuoi iniettare bug in un nuovo target, probabilmente dovrai apportare alcune modifiche. Consulta How-to-Lava per una guida.

Documentazione

Dai un'occhiata alla cartella docs per iniziare.

Autori

LAVA è il risultato di diversi anni di sviluppo da parte di molte persone; un elenco parziale (in ordine alfabetico) dei contributori è riportato di seguito:

  • 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

Categorie