
lava v3.3.0
LAVA: Aggiunta automatizzata di vulnerabilità su larga scala
LAVA: Aggiunta Automatica di Vulnerabilità su Larga Scala
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 inlocalhost
NOTA: Sono necessarie anche due variabili d'ambiente per il database Postgres SQL:
POSTGRES_PASSQuesta è la password per l'utente Postgres SQL`POSTGRES_USERQuesto è 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