Pacchetto npm malevolo prende di mira gli sviluppatori Twilio tramite una finta sonda

Pacchetto npm malevolo prende di mira gli sviluppatori Twilio tramite una finta sonda

ReversingLabs ha trovato un pacchetto npm che fingeva di essere una sonda di sicurezza Twilio ma poteva rubare variabili d'ambiente, incluse le credenziali dell'account Twilio.

Un pacchetto npm malevolo chiamato tw-pkgprobe-7731 è stato trovato mentre si spacciava per uno strumento di sicurezza per sviluppatori che integrano Twilio nelle loro applicazioni, mentre cercava silenziosamente di raccogliere dati sensibili dalle loro macchine. Il pacchetto è stato pubblicato sul registro npm, il magazzino online centrale per i pacchetti di codice JavaScript, da un account chiamato twdepprobe7731 a metà agosto 2026. La ricercatrice di ReversingLabs Lucija Valentić ha descritto i risultati in un rapporto, osservando che 11 versioni sono state rilasciate in circa 45 minuti nello stesso giorno, e l'account che le ha pubblicate non esiste più al momento del rapporto.

La prima versione cercava di sembrare una sonda di ricerca sulla sicurezza autorizzata. I commenti all'interno del pacchetto lo descrivevano come una sonda di ricerca autorizzata per il programma bug-bounty di Twilio su HackerOne, sostenendo che funziona solo all'interno della sandbox serverless packager di Twilio e raccoglie il contesto locale del processo e dell'host, scrivendolo accanto a sé senza alcuna azione distruttiva. Quando eseguito, il pacchetto controlla prima se è in esecuzione all'interno di un ambiente di sviluppo Twilio. Se il controllo fallisce, esce immediatamente. Se il controllo passa, raccoglie variabili d'ambiente, che sono piccole informazioni utilizzate dai programmi come dettagli dell'account, insieme a dettagli di sistema come storage montato, cartelle temporanee e varie impostazioni di configurazione. Tutto ciò che raccoglie viene poi inviato a una destinazione esterna tramite un webhook, ovvero il programma invia automaticamente i dati a un URL controllato dall'attaccante.

Le versioni successive, numerate 1.0.1, 1.0.2 e 1.0.3, hanno cambiato focus verso gli sviluppatori che utilizzano le API di Twilio. Queste versioni cercavano cartelle collegate a specifici SID dell'account Twilio, gli identificatori di stringa che etichettano ogni account Twilio. Il codice evitava di intraprendere qualsiasi azione se trovava una cartella con un nome SID specifico. Se venivano trovate cartelle target corrispondenti, il pacchetto scansionava i pacchetti npm installati e la cartella node_modules, dove i progetti JavaScript conservano le loro dipendenze, e iniettava un pacchetto proof-of-concept personalizzato creando nuovi file package.json e index.js al suo interno. In altre parole, cercava di impiantare codice aggiuntivo nel progetto di uno sviluppatore quando venivano soddisfatte le condizioni giuste.

La versione 1.0.4 è andata oltre. ReversingLabs ha scoperto che questa release aggiungeva la capacità di rubare due particolari variabili d'ambiente: process.env.ACCOUNT_SID e process.env.AUTH_TOKEN. Questi sono i valori che identificano un account Twilio e dimostrano che una richiesta è autorizzata. Se un attaccante ottiene entrambi, può potenzialmente controllare l'account Twilio della vittima abbastanza da autorizzare la fatturazione e attivare comunicazioni. Il rapporto spiega che le versioni del pacchetto non seguivano le linee guida pubblicate da Twilio per la ricerca di bug su HackerOne, e la ricercatrice ha affermato che questi pacchetti violano chiaramente le linee guida di base per la ricerca sulla sicurezza stabilite da Twilio, il che suggerisce che i pacchetti avessero intenti malevoli.

Le ultime tre versioni, numerate 1.0.8, 1.1.0 e 1.1.1, hanno fatto un passo indietro inaspettato. Sono tornate al comportamento di probing di base visto nella primissima versione e hanno abbandonato le funzioni malevole aggiunte nelle release precedenti. Le ultime due versioni hanno anche eseguito raccolta di informazioni open-source, o OSINT, contattando diversi hostname legati a Twilio: support-api.us1.twilio[.]com, kafka-ui.au1.twilio[.]com e litellm.ai-services.corp.twilio[.]com. Hanno persino tentato di recuperare i metadati di Amazon Web Services dall'indirizzo speciale 169.254.169[.]254/latest/meta-data/, che può esporre informazioni sul server cloud. Poiché il pacchetto cambiava direzione così spesso, i ricercatori affermano che non è chiaro quale fosse il vero obiettivo finale e se sia stato pubblicato come parte di un programma bug bounty.

Nonostante il tentativo di fondere codice dannoso e innocuo, l'autore non ha fatto alcuno sforzo reale per nascondere le parti malevole. Non c'era offuscamento, cioè il codice non era stato rimescolato per renderlo difficile da capire, e nessun typosquatting, cioè il creatore non ha usato un nome molto simile a un pacchetto fidato per ingannare gli sviluppatori. L'account npm di pubblicazione non ha nemmeno tentato di sembrare un editore legittimo. ReversingLabs ha notato che questo è diverso dalle campagne precedenti e suggerisce che un attore meno sofisticato sia stato responsabile dello sforzo mirato agli sviluppatori Twilio. Per chiunque costruisca o esegua software che dipende da pacchetti npm, questo caso è un promemoria che una descrizione plausibile e un commento dall'aspetto professionale all'interno del codice non sono sufficienti a stabilire fiducia.

I proprietari di siti e i team IT dovrebbero trattare la selezione dei pacchetti come una decisione di sicurezza, non solo una comodità. Controllare l'account dell'editore, la sua età e la sua cronologia di rilascio prima dell'installazione può intercettare false sonde prima che vengano eseguite. I lettori che gestiscono i propri siti web possono anche ridurre parte di questo rischio scegliendo un provider di hosting come AEU Hosting che gestisce aggiornamenti di sicurezza e monitoraggio per ambienti WordPress gestiti, così una dipendenza malevola ha meno spazio per diffondersi.

Come Proteggerti

  1. Se il tuo sito web o la tua app utilizza pacchetti di codice da npm, tieni un elenco scritto di ogni pacchetto e aggiornali solo dalla fonte ufficiale dopo aver controllato attentamente il nome del pacchetto e l'editore.
  2. Prima di installare qualsiasi nuovo pacchetto, cerca l'account dell'editore; se l'account è appena stato creato, non ha cronologia o non esiste più, fermati e scegli un altro pacchetto o chiedi aiuto a uno sviluppatore.
  3. Non inserire password reali o codici segreti dell'account in variabili d'ambiente che uno strumento di sviluppo potrebbe leggere; usa permessi temporanei e limitati e sostituiscili subito se sospetti che qualcosa sia stato installato da una
  4. Se usi Twilio per messaggi o chiamate, controlla il tuo account per spese o messaggi inaspettati e attiva avvisi di fatturazione per scoprire rapidamente se qualcuno usa credenziali rubate.
  5. Aggiungi un controllo automatico dei pacchetti al tuo processo di sviluppo in modo che qualsiasi pacchetto nuovo o inaspettato venga segnalato prima che il suo codice venga eseguito, e tratta qualsiasi modifica inaspettata ai file dei pacch

I Termini Spiegati

  • npm package Una raccolta di codice pubblicata sul registro npm che gli sviluppatori possono aggiungere a un progetto JavaScript per farlo funzionare o ottenere una funzionalità.
  • environment variables Piccole informazioni memorizzate su un computer o server che i programmi usano, come password, identificatori di account o impostazioni.
  • Twilio account SID Una stringa di caratteri che identifica in modo univoco un account Twilio, simile a un numero di conto.
  • exfiltration L'atto di inviare segretamente dati rubati a una posizione esterna controllata da un attaccante.
  • webhook Un modo per un programma di inviare automaticamente dati a un altro servizio online o URL quando accade qualcosa.
  • node_modules La cartella in cui npm memorizza tutti i pacchetti extra da cui dipende un progetto JavaScript.
  • OSINT Open-source intelligence, informazioni raccolte da fonti disponibili pubblicamente come siti web e strumenti online.
  • obfuscation La pratica di rimescolare il codice per renderlo difficile da capire, spesso usata per nascondere comportamenti malevoli.

Servizi AEU correlati