Pacchetto npm fezbox: malware nascosto nei QR code ruba password dai browser

di Redazione
0 commenti

Il caso del pacchetto npm fezbox ha messo in allarme l’intera comunità degli sviluppatori e sollevato interrogativi profondi sulla sicurezza della supply chain open-source. Dietro l’apparenza di una innocua utility library JavaScript/TypeScript, in grado di offrire funzioni helper per progetti web, si celava in realtà un malware sofisticato, progettato per rubare credenziali sensibili dai cookie del browser sfruttando una tecnica innovativa basata su QR code offuscati con steganografia. L’episodio, documentato nel settembre 2025 dal Socket Threat Research Team, rappresenta un salto qualitativo nell’arsenale degli attaccanti che mirano a colpire lo sviluppo software su larga scala, con conseguenze potenzialmente devastanti per progetti e aziende che fanno affidamento sull’ecosistema npm.

Un pacchetto apparentemente innocuo

Fezbox si presentava come un modulo di supporto, esportando funzioni comuni e ben documentate in JavaScript e TypeScript, corredato da un README convincente. Prometteva efficienza, tipizzazione integrata, test inclusi e persino un modulo dedicato alla gestione dei QR code. Tutto nella descrizione era studiato per trasmettere affidabilità e spingere gli sviluppatori a integrarlo nei propri progetti. Il pacchetto era addirittura tradotto dal cinese semplificato, elemento che lasciava intendere una provenienza asiatica e un target internazionale. Dietro questa facciata, però, il codice nascondeva logiche maligne minificate, progettate per eseguire soltanto in ambienti client-side, evitando così di destare sospetti in contesti server o in analisi superficiali. La vera minaccia emergeva solo dopo un’attenta ispezione e una fase di de-offuscamento.Il funzionamento del malware La peculiarità di fezbox è l’uso di una offuscazione multi-layer. Prima di tutto il codice impiegava stringhe invertite per nascondere l’URL reale, rendendo difficile un’analisi statica immediata. Una volta ricostruito l’indirizzo, il pacchetto scaricava da Cloudinary un’immagine in formato JPEG che conteneva, all’interno del QR code, il payload maligno codificato tramite steganografia. Questo stratagemma consentiva di nascondere lo script malevolo all’interno di un file apparentemente legittimo, superando i controlli automatici. Il payload, una volta decifrato, eseguiva una funzione asincrona che andava a splittare i cookie del browser, cercando voci specifiche contenenti username e password. I dati così raccolti venivano inviati, in formato JSON, a un endpoint remoto ospitato su my-nest-app-production.up.railway.app, attraverso una richiesta HTTP POST. Gli header “application/json” rendevano la trasmissione indistinguibile da una normale comunicazione legittima. Per aumentare le possibilità di eludere sandbox e controlli automatizzati, il malware aspettava 120 secondi prima di attivarsi e implementava un sistema condizionale che gli permetteva di entrare in azione soltanto in alcuni casi, eseguendo il furto di dati due volte su tre in ambienti di produzione. Questo approccio riduceva il rischio che strumenti di analisi statica o dinamica rilevassero comportamenti sospetti in fase di test.

Tecniche di evasione e innovazione

L’elemento più preoccupante non è solo il furto in sé, ma la creatività dimostrata dagli attaccanti. L’uso di QR code come veicolo di steganografia è un approccio raro, ma potenzialmente molto efficace, perché sfrutta un formato comune e apparentemente innocuo, spesso considerato sicuro. L’aggiunta di stringhe “decoy” e di funzioni no-op (senza operazioni reali) serviva a confondere ulteriormente gli analisti.

image 402
Pacchetto npm fezbox: malware nascosto nei QR code ruba password dai browser 7

Questo livello di sofisticazione dimostra che i threat actor stanno evolvendo non solo sul piano tecnico, ma anche sul piano strategico: invece di puntare a exploit immediati e rumorosi, preferiscono operazioni silenziose, che sfruttano la fiducia intrinseca negli ecosistemi open-source e si muovono con pazienza per raccogliere informazioni preziose.

Identità dell’attore e infrastruttura

Secondo l’analisi di Socket, il pacchetto era stato pubblicato da un autore con l’alias janedu, associato all’indirizzo email [email protected]. Un dettaglio che, se da un lato appare banale, dall’altro fornisce un punto di partenza importante per le attività di OSINT e attribution. Il fatto che l’infrastruttura di comando e controllo fosse ospitata su un servizio noto come Railway rafforza l’idea di una campagna mirata ma non necessariamente su larga scala industriale: piuttosto un esperimento avanzato o una prova di concetto portata avanti da un gruppo emergente. Nonostante il pacchetto fosse attivo sul registro npm al momento della scoperta, la segnalazione di Socket ha portato rapidamente alla richiesta di rimozione e alla sospensione dell’account. Ciò non ha impedito che alcuni sviluppatori potessero scaricarlo e integrarlo nei propri progetti, aumentando il rischio di compromissioni.

Impatto e limiti dell’attacco

Un aspetto interessante di questa vicenda è che il successo effettivo del malware risulta limitato dal fatto che oggi la maggior parte delle applicazioni non conserva più password in chiaro nei cookie. La tecnica usata da fezbox si basa infatti sulla presenza di credenziali literal, una pratica ormai sconsigliata e poco diffusa. Questo non riduce però la gravità del caso: al contrario, dimostra che l’obiettivo principale degli attori era testare una nuova metodologia di infezione e valutare la sua efficacia in contesti reali. Gli sviluppatori e le aziende che fanno uso massiccio di pacchetti npm per costruire le proprie applicazioni sono comunque esposti a rischi considerevoli. Un singolo modulo malevolo può aprire la strada a compromissioni estese, soprattutto in ambiti come blockchain, fintech o applicazioni AI, dove i cookie e i token hanno un valore critico.

La risposta della comunità e di npm

L’incidente ha rilanciato il dibattito sulla fiducia nell’ecosistema open-source e sulla necessità di rafforzare i controlli sui pacchetti pubblicati. Npm, già in passato teatro di campagne simili, si trova a dover bilanciare apertura e sicurezza. La comunità degli sviluppatori ha risposto condividendo Indicatori di Compromissione (IOC) e discutendo su come riconoscere “red flags” nei README o nelle descrizioni dei pacchetti. Socket, dal canto suo, ha messo a disposizione i propri strumenti per proteggere i workflow: la GitHub App che scansiona le pull request in tempo reale, la CLI che verifica i pacchetti prima dell’installazione e l’estensione browser che lancia avvisi sui download sospetti. L’uso combinato di queste soluzioni consente di ridurre i rischi, ma la vicenda conferma che gli attaccanti sono sempre un passo avanti, pronti a sfruttare la fiducia della comunità come punto debole.

Una minaccia alla supply chain globale

Il caso fezbox non va interpretato come un episodio isolato, ma come parte di un trend più ampio di attacchi alla supply chain software. Inserire codice maligno in librerie open-source permette agli attori malevoli di diffondere le proprie backdoor in migliaia di progetti contemporaneamente, sfruttando la rete di dipendenze che caratterizza lo sviluppo moderno. È una strategia che ricorda le grandi campagne di typosquatting e di compromissione viste negli anni precedenti su npm e PyPI. La differenza, oggi, è l’uso di tecniche di offuscazione sempre più avanzate e creative, che alzano l’asticella della difficoltà di detection. La steganografia via QR code, ad esempio, potrebbe diventare un nuovo standard per campagne future, soprattutto se si dimostrerà efficace contro i sistemi di sicurezza automatizzati.

Raccomandazioni per gli sviluppatori

Gli esperti sottolineano alcune raccomandazioni fondamentali per ridurre i rischi:

  • Scansionare regolarmente le dipendenze con strumenti automatizzati.
  • Verificare la provenienza dei pacchetti e la reputazione degli autori.
  • Controllare il codice minificato quando possibile, cercando anomalie o logiche sospette.
  • Evitare di conservare credenziali sensibili nei cookie, applicando best practice di sicurezza.
  • Collaborare con la comunità, condividendo segnalazioni e indicatori di compromissione.

In definitiva, la lezione principale è che nessun pacchetto, per quanto apparentemente innocuo, può essere considerato sicuro senza un processo di validazione adeguato. Il pacchetto npm fezbox rappresenta un campanello d’allarme per chiunque sviluppi software basato su componenti open-source. L’uso creativo della steganografia via QR code e delle tecniche di offuscazione multilivello dimostra che i threat actor sono pronti a sperimentare approcci sempre più complessi per aggirare i controlli. Anche se l’attacco ha avuto un successo limitato in termini pratici, il valore principale di questo episodio risiede nel messaggio lanciato alla comunità: la supply chain è un obiettivo privilegiato, e gli sviluppatori devono adottare un approccio proattivo e multilivello alla sicurezza. Il caso fezbox, quindi, non è solo la storia di un pacchetto malevolo, ma il simbolo di una sfida più grande: proteggere la fiducia che sta alla base dell’open-source. Una fiducia che oggi più che mai necessita di strumenti avanzati, collaborazione tra attori e un innalzamento degli standard di sicurezza per garantire che innovazioni come l’AI e la blockchain non diventino prede facili per chi intende sfruttare le vulnerabilità del sistema.

Articoli correlati