JA_NPM

Caso di studio sulle inondazioni NPM: “Giù nella tana del coniglio alla ricerca di un tè”

At Xygeni, nell'ultimo anno ci siamo impegnati a implementare un sistema completo che monitora i registri pubblici dei pacchetti open source per rilevare attività sospette o codice intrinsecamente dannoso.

Questa infrastruttura ci permette di analizzare in tempo reale tutti i pacchetti pubblicati quotidianamente. Inoltre, ci consente di monitorare comportamenti anomali degli utenti.

Mentre la presenza di codice dannoso nei registri dei pacchetti è ben nota, ci sono altri comportamenti strani o insoliti che passano completamente inosservati agli utenti abituali di questi registri. Anche per chi di noi li osserva da vicino, non è facile trovare una ragione o una spiegazione a tale comportamento.

Ciò che caratterizza il team Xygeni è la nostra tenacia nell'affrontare un problema, quindi abbiamo approfondito questo argomento.

Tutto è iniziato con un picco statistico

Come accennato in precedenza, come parte della nostra infrastruttura, monitoriamo molti parametri di attività nei registri pubblici dei pacchetti open source.

Negli ultimi giorni di marzo, la mia collega di lavoro Carmen ha lanciato l'allarme. Abbiamo iniziato a osservare una deviazione sostanziale in il numero di pacchetti pubblicati su NPM. Dopo un'analisi iniziale, abbiamo scoperto che questa deviazione era dovuta principalmente a un numero relativamente piccolo di utenti, la cui frequenza di pubblicazione dei pacchetti era improvvisamente aumentata vertiginosamente.

Ciò ci ha spinto a rivedere il nostro processo e i dati associati all’interno della piattaforma. Fortunatamente, la nostra revisione ha stabilito che i dati sembravano corretti, ma anche questo era un po’ sconcertante!

Dopo un'ulteriore ispezione, abbiamo scoperto che questi pacchetti condividevano diverse caratteristiche comuni:

  • Gli editori erano utenti appena creati, vecchi di non più di uno o due mesi al massimo.
  • I pacchetti avevano nomi apparentemente casuali, probabilmente generati utilizzando un dizionario. Possiamo trovare nomi di pacchetti con nomi strani come huge_mite-smiletea, erick-mangut94-sukiwir, esotico_rettile-appteadev or ovvio_tuna-appteadev. Includeremo un'appendice con alcuni esempi delle risorse che abbiamo trovato.
  • Il contenuto di questi pacchi era molto simile, spesso identico.

In questo contesto, abbiamo osservato che uno dei pacchetti includeva uno script Python, forse per caso, che sembra essere utilizzato per pubblicare automaticamente i pacchetti.

npm

Svelare la rete

L'attività di pubblicazione per alcuni di questi editori nell'ultimo mese si è svolta secondo il seguente grafico temporale:

 

attacco npm

Ecco le statistiche complete relative a questo evento che possiamo condividere:

controllo npm

Dalla revisione individuale di alcuni pacchetti associati a questi utenti non è emerso nulla di rilevante. Ciò ci ha portato ad analizzare il quadro generale di tutti loro, alla ricerca di modelli che potrebbero fornire indizi su questo successo.

Dopotutto, abbiamo una buona manciata di pacchetti da analizzare:

attacco npm 2

Questi sono i punti chiave che possiamo evidenziare dall’analisi:

  • Molti dei pacchetti NPM sono correlati. Alcuni sono indicati come dipendenze di altri.
  • Nonostante siano pacchetti strani e probabilmente nessuno sappia della loro esistenza, alcuni hanno molti download settimanali. È difficile accettare che un utente normale possa voler scaricare pacchetti come 0mc03esisd
  • Alcuni hanno repository associati. A volte i proprietari di questi repository sembrano essere account fittizi, simili a quelli di npm.

Nota: gli utenti caricano pacchetti aggiuntivi a ondate, quindi i dati forniti potrebbero variare leggermente.

attacco npm 2

Questo è un esempio di uno dei repository correlati. Contiene il codice di alcuni dei pacchetti pubblicati. Anche alcuni altri file, come a tea.yaml file.

Incontro con l'attore/i

È difficile stabilire se si tratti del lavoro di un singolo autore o di più collaboratori. Tuttavia, abbiamo alcune prove che restringono l’origine di questa attività:

  • Lingua: alcuni commenti nel codice sono in indonesiano.
attacco npm 3
  • Ubicazione: alcuni proprietari dei repository associati indicano la loro ubicazione in Indonesia.
  • Anche la località che possiamo identificare attraverso i metadati delle attività su GitHub punta all'Indonesia.
NPM_JA

Tè delle cinque

Dato che l'Indonesia era una colonia britannica, sarebbe stato perfetto qui per prendere un tè. Ma in questo caso si tratta di un tipo di tè un po' particolare.

Ti ricordi di tea.yaml file che abbiamo visto all'inizio? All'epoca non mostravamo il loro contenuto, ma appariva così:

attacco npm 4

Questi file sembrano essere correlati a Protocollo del tè. Ma cos'è esattamente? Abbiamo raggiunto https://tea.xyz/blog/250k-grant-for-open-source-developers, che parla dello scopo:

Tea sta scuotendo il mondo digitale affrontando l’annosa questione dei compensi inadeguati per gli sviluppatori open source. Risolvere questo problema è più urgente che mai, motivo per cui abbiamo deciso di distribuire 250 dollari in sovvenzioni prima del lancio del protocollo. Questa fase iniziale mira a supportare i manutentori di progetti open source che hanno un impatto materiale sull’ecosistema del software open source e un teaRank superiore a 30 davanti al testnet incentivato del protocollo tea.

Secondo i documenti del protocollo del tè: 

"Affinché un progetto possa essere registrato sul Protocollo del tè è necessario un file tea.yaml che funge da costituzione del progetto per governare il numero di contributori e il numero di voti necessari per eseguire determinate azioni."

 

Dopo aver effettuato l'accesso alla rete del tè, abbiamo cercato di trovare uno dei pacchetti che sospettiamo stia gonfiando la sua reputazione. L'abbiamo trovato:

Questo sembra spiegare cosa sta succedendo qui: alcuni utenti gonfiano i loro progetti open source con popolarità fittizia per dirottare teaRank e ottenere i vantaggi forniti dall'associazione del tè. Dopotutto, il denaro è la forza trainante più antica, insieme al sesso. 

Conclusione e considerazioni finali

Sebbene non sia stata trovata alcuna prova di codice dannoso in questi pacchetti NPM e probabilmente non intendevano che qualcuno li utilizzasse, potrebbero potenzialmente violare diversi Termini di servizio (TOS) di NPM, GitHub o dell'associazione del tè. Tuttavia, ciò non rientra nell'ambito del nostro lavoro (tuttavia sono stati avvisati e verranno intraprese le azioni che riterranno opportune). L’uso abusivo di queste piattaforme influenzerà in qualche modo noi e le nostre organizzazioni.

Ciò che è chiaro è che qualsiasi pacchetto open source apparentemente innocuo può nascondere comportamenti difficili da comprendere senza informazioni contestuali complete.

Come sviluppatore, trovo difficile controllare manualmente tutti i pacchetti open source utilizzati nelle applicazioni che sviluppiamo e manteniamo con un certo livello di sicurezza. Senza l’aiuto di uno strumento che automatizzi questo controllo, l’attività potrebbe consumare innumerevoli ore dei nostri team.

C’è sempre la possibilità di guardare dall’altra parte, confidando che i regni open source siano luoghi sicuri. Per fortuna credo che oggi questa mentalità non sia molto diffusa; questo caso è stato praticamente innocuo, ma recentemente abbiamo riscontrato un incidente molto più grave con il XZ Porta sul retro, e non è stato l'unico.

Se hai letto fin qui, spero che tu abbia apprezzato tutte le complessità di questo curioso evento. Non dimenticare di dedicare qualche minuto a rivedere il contributo che Xygeni può apportare alla sicurezza della tua organizzazione.

Appendice: elenco delle risorse correlate da includere nell'articolo finale

NPM utenti più rilevanti in base al numero di pacchetti pubblicati: vndra, wanzaty, artknight404, seblakkuah, Mikrositer, kellyman17

Un piccolo esempio dei loro pacchetti correlati: mikrositer, cryndex, arts-dao, seblakkuah, vndrabnb, vndrave, depfif, depsik, depeit, depnin, Dopon, kellymanteasproject.

Alcuni dei repository GitHub correlati contenenti file tea.yml:

sca-tools-software-strumenti-di-analisi-della-composizione
Dai priorità, risolvi e proteggi i rischi del tuo software
Prova gratuita 7-day
Nessuna carta di credito richiesta

Proteggi lo sviluppo e la consegna del tuo software

con la suite di prodotti Xygeni