La OpenSSF (Open Source Security Foundation), formata dall'organizzazione Linux Foundation e dedicata al miglioramento della sicurezza del software open source, ha presentato un progetto aperto chiamato Package Analysis, che sviluppa un sistema di analisi per identificare il codice dannoso nei pacchetti. Il codice del progetto è scritto in Go e distribuito con licenza Apache 2.0. Una scansione preliminare dei repository NPM e PyPI utilizzando gli strumenti forniti ha permesso di rilevare oltre 200 pacchetti dannosi precedentemente non identificati.
La maggior parte dei pacchetti problematici rilevati manipola la sovrapposizione dei nomi con dipendenze interne non pubbliche dei progetti (attacco di confusione delle dipendenze) o utilizza metodi di type-squatting (assegnazione di nomi simili a quelli di librerie popolari), e inoltre avviano durante l'installazione script che si connettono a host esterni. Secondo gli sviluppatori di Package Analysis, la maggior parte dei pacchetti problematici identificati è probabilmente stata creata da ricercatori di sicurezza che partecipano a programmi di bug bounty, poiché i dati inviati sono limitati al nome utente e al sistema, e le azioni vengono eseguite in modo esplicito, senza tentativi di nascondere il proprio comportamento.
Tra i pacchetti con attività dannosa si segnalano:
- Il pacchetto PyPI discordcmd, in cui è stata registrata l'invio di richieste atipiche a raw.githubusercontent.com, Discord API e ipinfo.io. Questo pacchetto scaricava codice backdoor da GitHub e lo installava nella directory del client Windows di Discord, dopodiché avviava un processo per cercare token Discord nel file system e inviarli a un server Discord esterno controllato dagli aggressori.
- Il pacchetto NPM colorsss, che ha anche tentato di inviare a un host esterno server token dalla propria account Discord.
- Il pacchetto NPM @roku-web-core/ajax — durante l'installazione invia dati sul sistema e avvia un handler (reverse shell) che accetta connessioni esterne e esegue comandi.
- Il pacchetto PyPI secrevthree — avviava un reverse shell all'importazione di un determinato modulo.
- Il pacchetto NPM random-vouchercode-generator — dopo l'importazione della libreria inviava una richiesta a un server esterno, che restituiva un comando e l'orario in cui doveva essere eseguito.
Il lavoro di Package Analysis consiste nell'analisi dei codici sorgente dei pacchetti per stabilire connessioni di rete, accedere a file ed eseguire comandi. Viene inoltre monitorata la modifica dello stato dei pacchetti per identificare l'inserimento di elementi dannosi in una delle versioni di un software inizialmente innocuo. Per il monitoraggio dell'emergere di nuovi pacchetti nei repository e l'implementazione di modifiche a pacchetti precedentemente pubblicati, si utilizza l'insieme di strumenti Package Feeds, che standardizza il lavoro con i repository NPM, PyPI, Go, RubyGems, Packagist, NuGet e Crate.
Package Analysis include tre componenti di base che possono essere utilizzati insieme o separatamente:
- Piano di lavoro per l'analisi dei pacchetti basato sui dati provenienti da Package Feeds.
- Un analizzatore che verifica direttamente il pacchetto e valuta il suo comportamento utilizzando metodi di analisi statica e tracciamento dinamico. La verifica avviene in un ambiente isolato.
- Un caricatore che inserisce i risultati dell'analisi nel repository BigQuery.
Fonte: opennet.ru
