
Project Aura: audit di sicurezza e introspezione del codice

La tendenza attuale nello sviluppo è quella di utilizzare molti pacchetti nella fase di sviluppo, anche se forniscono solo funzionalità banali e consistono di 11 righe di codice. Quando combiniamo questo con politiche molto liberali di pubblicazione di nuovi pacchetti, ora assistiamo a un aumento degli attacchi dannosi mirati agli sviluppatori. Ci sono stati diversi approcci da parte degli attori delle minacce:
Questi sono solo alcuni esempi delle tecniche con cui uno sviluppatore può compromettersi. Ciò è supportato dal fatto che non esiste un processo di monitoraggio su ciò che viene caricato nei repository come PyPI o NPM, e un colpo di pura fortuna ha scoperto gli incidenti precedenti. Il nostro obiettivo è migliorare questa situazione.
Abbiamo creato un framework progettato per scansionare il codice sorgente su larga scala (come l'intero repository PyPI), alla ricerca di anomalie e potenziali intenti dannosi, oltre che di vulnerabilità. Questo framework è progettato anche per scansionare il codice sorgente su richiesta, ad esempio quando un pacchetto viene installato da uno sviluppatore o semplicemente un qualsiasi insieme di file/directory. L'implementazione attualmente è mirata al linguaggio Python e a PyPI, tuttavia è progettata per offrire la possibilità di includere altri linguaggi (come Javascript e NPM).
La serie di casi d'uso include, ma non è limitata a:
Un motore di analisi ibrida altamente ottimizzato realizza tutto ciò. L'analisi viene eseguita in un ambiente completamente sicuro utilizzando l'analisi statica del codice senza alcuna esecuzione del codice. Il motore principale di Aura analizza l'albero AST parsato dal codice sorgente, eseguendo analisi comportamentali e del flusso di esecuzione del codice. Il motore supporta anche la riscrittura dell'albero AST utilizzando una serie di regole come la propagazione delle costanti, il folding o la valutazione statica; queste sono tecniche che i compilatori usano per ottimizzare il codice. Questo è il motivo per cui questo approccio di analisi è "ibrido": migliora l'analisi statica con una valutazione parziale completamente sicura che ci permette di sconfiggere meccanismi di offuscamento più semplici.
Qui sotto puoi vedere una dimostrazione di diverse tecniche di "offuscamento" del codice sorgente riconosciute dal motore di trasformazione AST di Aura:

Per imparare e iniziare a usare il framework, leggi la documentazione su installazione, configurazione e utilizzo.
La parte principale di Aura è l'analisi del codice sorgente per anomalie o potenziali vulnerabilità. Aura dispone di diversi analizzatori integrati che cercano anomalie come l'uso di eval nello script di setup; altri analizzatori esaminano la struttura del file system (codice non sorgente) cercando, ad esempio, credenziali trapelate, token API hard-coded, ecc. Questi analizzatori generano quelli che chiamiamo hit, che definiscono le anomalie trovate e possono anche includere un punteggio, utilizzato per calcolare l'aura di sicurezza dei dati scansionati. Si consiglia di utilizzare un giudizio ragionevole sulle anomalie presentate in base alla funzionalità dei dati di input. Ad esempio, è del tutto normale per una libreria requests includere chiamate di rete, mentre allo stesso tempo non ci si aspetta che una libreria di elaborazione immagini invii dati sulla rete. È inoltre disponibile il supporto per l'output dei dati in formato JSON, adatto per scansioni massive di repository o per l'integrazione in altri prodotti. Per la descrizione e l'uso di altri componenti, consulta la documentazione.


##Documentazione
Questo progetto è concesso in licenza secondo i termini della licenza GPLv3 - vedi il file LICENSE.txt per i dettagli. Parti di questo framework contengono integrazioni (opzionali) con altri prodotti come la piattaforma r2c, libraries.io, ecc.; che sono soggette alla loro licenza e termini di utilizzo.