Firebase è una piattaforma di sviluppo di applicazioni mobili e Web sviluppata da Google. Offre una vasta gamma di servizi che semplificano la creazione, il testing, l’analisi e il monitoraggio delle applicazioni. Il Realtime Database è un database cloud in tempo reale che consente agli sviluppatori di archiviare e sincronizzare i dati tra gli utenti in tempo reale. È particolarmente utile per tutti quei progetti che richiedono aggiornamenti istantanei dei dati: si pensi, ad esempio, alle chat in tempo reale e alle app di collaborazione.
Uno strumento come Firebase si compone di numerosi tasselli: tra di essi c’è anche Firestore, un database NoSQL che offre funzionalità avanzate come query complesse, scalabilità automatica e sincronizzazione in tempo reale.
Le Cloud Functions di Firebase consentono agli sviluppatori di scrivere e distribuire codice serverless che si attiva in risposta a specifici eventi, anche all’interno di altri servizi Google Cloud. Sono utili per eseguire operazioni in backend senza dover per forza gestire un server.
Gli strumenti avanzati per monitorare le prestazioni delle applicazioni, l’engagement degli utenti e il loro comportamento, permettono di estrarre dati dettagliati sulle sessioni degli utenti, sugli eventi e molto altro ancora.
Firebase è utilizzato in una vasta gamma di applicazioni, inclusi giochi, app social, piattaforme di e-commerce, app di messaggistica, applicazioni aziendali,… La sua flessibilità e la vasta gamma di servizi, lo rendono una scelta popolare per gli sviluppatori che desiderano accelerare lo sviluppo delle loro applicazioni, migliorando le performance e l’esperienza degli utenti.
Sicurezza dei database Firebase troppo spesso sottovalutata: i risultati sono drammatici
Un gruppo di ricercatori ha recentemente sviluppato una script che va alla ricerca delle basi di dati Firebase richiamate a partire da milioni di nomi di dominio.
Analizzando i dati dei siti e, nello specifico, il contenuto dei file JavaScript richiamati dalle singole pagine Web pubbliche, gli esperti sono andati alla ricerca delle comuni variabili di inizializzazione di Firebase usando un approccio automatizzato.
La situazione è parsa sin da subito drammatica: tanti amministratori hanno purtroppo deciso di prendere delle scorciatoie, dimenticandosi di implementare regole di sicurezza adeguate.
Uno strumento come Firepwn aiuta a verificare le regole di sicurezza di un’applicazione Firebase, concentrandosi sugli aspetti di autenticazione e autorizzazione. Purtroppo, però, lo strumento creato per individuare e sfruttare le vulnerabilità presenti nelle configurazioni di Firebase (disponibile come prodotto open source su GitHub) non viene evidentemente utilizzato da tanti sviluppatori.
Firepwn utilizza i servizi di Google come Firebase Auth, Firestore e Cloud Functions tramite il Client SDK per condurre test di sicurezza approfonditi. Inoltre, consente di scrivere codice JavaScript personalizzato, facendo emergere eventuali lacune di sicurezza.
Vulnerabilità nelle app che usano Firebase espongono milioni di dati personali
Una recente indagine ha messo in evidenza come molte istanze di Firebase, pubblicamente esposte online, mettano a rischio la privacy di milioni di utenti. I ricercatori hanno dapprima sviluppato un rudimentale script in Python per poi perfezionarlo in Go, in modo da velocizzarlo ed esaminare milioni di domini in cerca di eventuali vulnerabilità.
Sempre con l’obiettivo di migliorare le performance, i tecnici hanno fatto uso di uno strumento chiamato Catalyst per automatizzare il processo di individuazione delle vulnerabilità nei siti Web e nello specifico, nei file JavaScript usati per richiamare le istanze di Firebase. Catalyst ha facilitato l’individuazione dell’accesso a basi di dati Firebase controllando la potenziale presenza di dati riservati e informazioni personali.
Quando Catalyst trova l’accesso in lettura a una raccolta di dati Firebase, tenta di valutare autonomamente l’impatto dell’esposizione dei dati raccogliendo un campione di 100 record, controllando il tipo di informazioni contenute ed estrapolandole di conseguenza. Un po’ per provocazione, i ricercatori hanno quindi deciso di avvalersi di Supabase (rivale open source diretto di Firebase, che “sotto il cofano” sfrutta PostgreSQL) per salvare e archiviare i dati “rastrellati”.
I risultati della scansione sono sconvolgenti. I ricercatori hanno individuato oltre 125 milioni di record utente esposti: al loro interno, dati come password in chiaro, informazioni di fatturazione e altre evidenze di tipo strettamente personale (ad esempio nomi e cognomi, indirizzi email e numeri telefonici).
Gli stessi studiosi osservano che i numeri potrebbero risultare sottostimati, poiché la scansione potrebbe non aver rilevato tante altre istanze di Firebase ugualmente “aperte”.
Cosa è successo dopo la scoperta dei problemi di sicurezza legati all’implementazione di Firebase
Dopo la scoperta del problema, il team ha contattato i proprietari dei siti interessati. Tuttavia, solo una piccola percentuale di essi ha risposto e ha adottato le contromisure più opportune per risolvere le vulnerabilità. Solo lo 0,2% dei gestori dei siti Web interessati da configurazioni “pericolose” di Firebase ha offerto una ricompensa per la segnalazione responsabile delle vulnerabilità.
La nuova scoperta mette in evidenza l’importanza di una corretta configurazione delle regole di sicurezza su piattaforme come Firebase. Anche se strumenti come Firepwn e Catalyst possono aiutare a individuare vulnerabilità, è fondamentale che gli sviluppatori adottino le pratiche consigliate per garantire la sicurezza dei dati degli utenti. Solo attraverso una collaborazione tra ricercatori, sviluppatori e provider di servizi cloud, è davvero possibile proteggere efficacemente la privacy online.
Da dove discende il problema relativo all’utilizzo di configurazioni Firebase non sicure
Le “regole di sicurezza” Firebase rappresentano il meccanismo che consente di limitare l’accesso ai dati nel database in base sulla base di determinate condizioni. Le regole sono definite tramite uno specifico linguaggio e possono essere applicate a livello di database o di singoli nodi. Questo approccio potrebbe risultare “nuovo” per molti sviluppatori.
Soprattutto per i database in tempo reale, le regole di sicurezza Firebase possono apparire difficili da scrivere e comprendere. Questo perché devono tener conto di molteplici fattori, come il tipo di utente, di dati e le azioni consentite. La sintassi da usare può di fatto portare a errori nella definizione delle regole, compromettendo la sicurezza dei dati.
Anche se le regole di sicurezza possono funzionare bene per piccoli progetti o per un numero limitato di utenti, potrebbero non essere altrettanto efficaci quando il volume di dati o il numero di utenti aumenta significativamente. Le regole vanno adattate alle operazione di lettura e scrittura nel database; un’eccessiva complessità o un numero elevato di regole potrebbero rallentare le prestazioni del sistema.
Sebbene il concetto delle regole di sicurezza di Firebase possa essere valido e tecnicamente corretto, ci sono diversi fattori che possono rendere difficile la loro corretta implementazione e gestione, portando a potenziali vulnerabilità.