Google ha introdotto il sistema di test fuzzing ClusterFuzzLite

Google ha introdotto il progetto ClusterFuzzLite, che consente di organizzare test fuzzing del codice per il rilevamento tempestivo di potenziali vulnerabilità durante il funzionamento dei sistemi di integrazione continua. Attualmente, ClusterFuzz può essere utilizzato per automatizzare il test fuzz delle richieste pull in GitHub Actions, Google Cloud Build e Prow, ma in futuro è previsto il supporto per altri sistemi CI. Il progetto si basa sulla piattaforma ClusterFuzz, nata per coordinare il lavoro dei cluster di fuzzing testing, ed è distribuito con licenza Apache 2.0.

Va notato che dopo che Google ha introdotto il servizio OSS-Fuzz nel 2016, più di 500 importanti progetti open source sono stati accettati nel programma di test fuzzing continuo. Sulla base dei test effettuati sono state eliminate più di 6500 vulnerabilità confermate e corretti più di 21mila errori. ClusterFuzzLite continua a sviluppare meccanismi di test fuzzing con la capacità di identificare i problemi in anticipo nella fase di revisione delle modifiche proposte. ClusterFuzzLite è già stato implementato nei processi di revisione delle modifiche nei progetti systemd e curl e ha permesso di identificare gli errori mancati dagli analizzatori statici e dai linter utilizzati nella fase iniziale di controllo del nuovo codice.

ClusterFuzzLite supporta la revisione del progetto in C, C++, Java (e altri linguaggi basati su JVM), Go, Python, Rust e Swift. Il test fuzzing viene eseguito utilizzando il motore LibFuzzer. È inoltre possibile richiamare gli strumenti AddressSanitizer, MemorySanitizer e UBSan (UnfineBehaviorSanitizer) per identificare errori e anomalie della memoria.

Caratteristiche principali di ClusterFuzzLite: controllo rapido delle modifiche proposte per trovare errori prima dell'accettazione del codice; scaricare report sulle condizioni di incidente; la possibilità di passare a test fuzzing più avanzati per identificare errori più profondi che non sono emersi dopo aver controllato le modifiche al codice; generazione di report di copertura per valutare la copertura del codice durante i test; architettura modulare che consente di selezionare la funzionalità richiesta.

Ricordiamo che il fuzzing testing comporta la generazione di un flusso di tutti i tipi di combinazioni casuali di dati di input che si avvicinano ai dati reali (ad esempio, pagine html con parametri di tag casuali, archivi o immagini con titoli anomali, ecc.), e la registrazione possibile fallimenti nel processo di elaborazione. Se una sequenza si arresta in modo anomalo o non corrisponde alla risposta prevista, è molto probabile che questo comportamento indichi un bug o una vulnerabilità.

Fonte: opennet.ru

Aggiungi un commento