FixVibe

// docs / baas security / umbrella scanner

Scanner di configurazioni errate BaaS: trova percorsi di dati pubblici prima degli utenti

I provider Backend-as-a-Service — Supabase, Firebase, Clerk, Auth0, Appwrite, Convex — falliscono tutti in sicurezza nello stesso modo: la piattaforma spedisce default ragionevoli, lo sviluppatore (o lo strumento di codifica IA) prende una scorciatoia, e un percorso pubblico si apre tra un attaccante non autenticato e i dati dei clienti. Uno scanner di configurazioni errate BaaS è l'unico strumento che sonda quel percorso dall'esterno come farebbe un attaccante. Questo articolo mappa le cinque classi ricorrenti di configurazione errata, spiega come funziona la scansione BaaS ombrello FixVibe, confronta i quattro provider principali e contrappone lo scanner consapevole del BaaS contro gli strumenti DAST generali.

Perché le configurazioni errate BaaS hanno una forma ricorrente

Ogni piattaforma BaaS segue la stessa architettura: un backend gestito con un sottile SDK client che parla con esso dal browser. Il client browser-facing ha bisogno di qualche credenziale — una chiave anon, una chiave pubblicabile, un ID progetto Firebase — per identificarsi al backend. Quella credenziale è intenzionalmente pubblica; la sicurezza dell'architettura poggia sul fatto che i controlli di accesso a livello di piattaforma (RLS, regole, allowlist) facciano il loro lavoro.

Gli strumenti di codifica IA costruiscono sopra questa architettura senza interiorizzare lo strato di controlli della piattaforma. Cablano l'SDK client correttamente, accettano le regole permissive di default della piattaforma (che esistono per amichevolezza-tutorial) e spediscono. La forma ricorrente è: credenziale pubblica + regola permissiva di default + override mancante = esposizione di dati. Le cinque classi di configurazione errata sotto sono tutte varianti di questa forma.

Le cinque classi ricorrenti di configurazione errata

Queste appaiono in ogni provider BaaS. Una scansione completa copre tutte e cinque contro ogni provider in uso:

Classe 1: chiave sbagliata nel bundle del browser

Il browser spedisce la chiave secret/admin (Supabase service_role, chiave privata SDK Admin Firebase, Clerk sk_*, client secret Auth0) invece dell'equivalente pubblico/anon. Il browser diventa un client admin senza vincoli. Coperto dalla verifica segreti-nel-bundle di FixVibe.

Classe 2: strato di controllo accessi disabilitato o permissivo

RLS è spento, le regole Firebase sono if true, la lista callback Auth0 ha wildcard. La credenziale nel browser è quella corretta — ma il confine a livello di piattaforma che doveva vincolarla non fa il suo lavoro.

Classe 3: letture anonime di risorse sensibili

Collezioni Firestore leggibili anonimamente, bucket Supabase Storage elencabili anonimamente, API di gestione Auth0 accessibile anonimamente. La scansione chiede: "senza credenziali, cosa posso leggere?"

Classe 4: artefatti di test-mode in produzione

Chiavi di test (pk_test_*, sb_test_*) in un deploy di produzione; app Firebase in dev-mode raggiungibili dal dominio live; applicazioni Auth0 tenant di test con impostazioni più deboli della produzione. La scansione confronta le chiavi runtime contro i prefissi di produzione attesi.

Classe 5: verifica della firma del webhook mancante

I webhook Clerk, Stripe e Supabase firmano tutti i loro payload. Un handler che non verifica la firma è una primitiva di scrittura database per qualsiasi attaccante che indovini l'URL. Rilevato via forma della risposta — una richiesta non firmata che ottiene un 200 significa che la verifica è saltata.

Come funziona la scansione BaaS ombrello FixVibe

La fase BaaS di FixVibe gira in tre stadi, ciascuno produce risultati distinti:

  1. <strong>Stage 1 — provider fingerprinting.</strong> The scanner crawls the deployed app, parses every JavaScript chunk, and identifies which BaaS providers the app uses. Each provider has a distinctive runtime signature: Supabase uses <code>*.supabase.co</code>; Firebase uses <code>firebase.initializeApp({ projectId: ... })</code>; Clerk uses <code>pk_*</code> keys with a known prefix; Auth0 uses <code>clientId</code> and <code>domain</code>. The scanner records which providers are present and extracts the project identifiers.
  2. Stadio 2 — sondaggi provider-specific. Per ogni provider rilevato, lo scanner esegue il check provider-specific: baas.supabase-rls sonda PostgREST; baas.firebase-rules sonda Firestore + RTDB + Storage; baas.clerk-auth0 valida il prefisso delle chiavi nel bundle; il check segreti-nel-bundle valida che nessuna credenziale di livello servizio sia trapelata. Ogni sondaggio gira indipendentemente — un risultato Supabase non blocca la scansione Firebase.
  3. Stadio 3 — correlazione cross-provider. Lo scanner incrocia i risultati. Una chiave di service-role Supabase trapelata accanto a RLS mancante è più grave di uno qualsiasi dei due risultati da solo — il report lo mette in evidenza. Più provider di identità (Clerk + Auth0 + auth personalizzata) nella stessa app è un risultato strutturale segnalato per revisione.

Ogni sondaggio è passivo: al massimo una lettura anonima per risorsa, con la forma della risposta registrata ma il contenuto delle righe mai paginato o memorizzato. I sondaggi di scrittura e modifica sono soggetti a verifica della proprietà del dominio — non vengono mai eseguiti contro target non verificati.

Cosa trova lo scanner per provider

Ogni provider BaaS ha una superficie diversa e una strategia di scansione diversa. Ecco cosa è coperto:

  • Supabase: RLS mancante sulle tabelle, bucket di storage elencabili anonimamente, JWT service_role trapelato o chiave sb_secret_* nel bundle, schemi esposti via elenco OpenAPI anonimo. Vedi Scanner RLS Supabase e Checklist Storage.
  • Firebase: regole if true su Firestore, Realtime Database e Cloud Storage; bucket Storage elencabili anonimamente; assenza di App Check. Vedi Scanner di regole Firebase e Spiegazione della regola if-true.
  • Clerk: chiavi segrete sk_* nel bundle, pk_test_* in produzione, verifica della firma del webhook mancante, origini permesse con wildcard. Vedi Checklist Clerk.
  • Auth0: client secret nel bundle, grant Implicit abilitato, URL callback / logout con wildcard, PKCE mancante su SPA. Vedi Checklist Auth0.

Come si confronta uno scanner BaaS con strumenti DAST e SAST generali

Uno scanner consapevole del BaaS fa lavoro specifico che altri strumenti non fanno. Il confronto:

AspettoFixVibe (DAST consapevole del BaaS)DAST generale (Burp / ZAP)SAST / SCA (Snyk / Semgrep)
Copertura BaaSCheck nativi per Supabase, Firebase, Clerk, Auth0, AppwriteCrawl web generico; nessun sondaggio provider-specificAnalisi statica solo del repo; nessuna validazione di produzione
Tempo di setupURL → esegui → risultati in 60 secondiOre: configurare spider, auth, scopeGiorno: integrare nel CI del repo
Cosa dimostraEsposizione runtime di produzione con evidenza a livello HTTPVulns app web (XSS, SQLi); BaaS via config manualePattern di codice che possono o non possono essere deployati
Ispezione del bundle JavaScriptDecodifica JWT, abbina prefissi di secret, percorre i chunkLimitata — solo grep basato su stringheSì, ma solo lato repo, non deployato
Scansione continuaMensile / al deploy via API + MCPManuale; configura tu il calendarioPer commit (buono per il codice, cieco al runtime)
Prezzo per solo / piccolo teamPiano gratuito; a pagamento da $19/meseBurp Pro $499/anno; ZAP gratuito ma molti falsi positiviSnyk gratuito / Semgrep gratuito; piani a pagamento da $25/dev

Scope onesto: cosa questo scanner non sostituisce

Uno scanner DAST consapevole del BaaS è uno strumento focalizzato, non un programma di sicurezza completo. Non:

  • Sostituisce SAST o SCA. L'analisi statica trova CVE di dipendenze (Snyk, Semgrep) e vulnerabilità a livello di codice (SonarQube) che uno scanner DAST non può. Esegui entrambi.
  • Sostituisce penetration test manuali. Un pentester umano trova difetti di logica di business, casi limite di autorizzazione e vulnerabilità concatenate che nessuno scanner può. Assumi un pentester prima di un lancio importante o di un audit di compliance.
  • Audita il tuo codice o repo per segreti nella storia git. Il check segreti-nel-bundle copre ciò che è attualmente deployato, non ciò che è stato storicamente committato. Usa git-secrets o gitleaks per l'igiene del repo.
  • Copre servizi backend non-BaaS. Se la tua app usa un backend personalizzato (Express, Rails, Django, FastAPI), FixVibe scansiona la sua superficie HTTP ma non sonda il database o l'infrastruttura dietro. Quello è territorio DAST + SAST generale.

Domande frequenti

La scansione ombrello funziona se la mia app usa due provider BaaS (p. es., Supabase + Clerk)?

Sì — fingerprinting del provider e sondaggi per provider sono indipendenti. Lo scanner rileva entrambi, esegue entrambe le suite di check e segnala correlazioni cross-provider (p. es., un template JWT Supabase da Clerk che spedisce email come claim accanto a RLS mancante).

In cosa differisce dall'eseguire Burp Suite Pro contro la mia app?

Burp è un workbench DAST generale. Out of the box, Burp non sa cos'è PostgREST, Firestore o il percorso callback Auth0 — devi configurare manualmente lo scope, scrivere estensioni e interpretare le risposte. FixVibe viene con sondaggi BaaS integrati e formattazione dell'evidenza in forma BaaS. Burp vince sulla copertura generale di app web (XSS, SQLi, logica di business); FixVibe vince sui risultati BaaS-specific.

E App Check (Firebase) o attestation (Apple / Google)?

App Check fa restituire 403 alle scansioni esterne opportunistiche a ogni sondaggio — il risultato corretto per un bot malevolo. Una scansione FixVibe da un client non-attestato si comporta nello stesso modo. Se hai App Check abilitato e FixVibe segnala comunque risultati, significa che le tue regole sono aperte anche ai client attestati, che è il rischio reale. App Check + regole corrette è il pattern di defense-in-depth.

Lo scanner può verificare la mia correzione?

Sì — rieseguilo dopo aver applicato la correzione. Gli ID dei check (p. es., baas.supabase-rls) sono stabili tra le esecuzioni, quindi puoi diffare i risultati: un risultato che era open nell'esecuzione 1 e assente nell'esecuzione 2 è la prova che la correzione è andata a buon fine.

Prossimi passi

Esegui una scansione FixVibe gratuita contro la tua URL di produzione — i check di fase BaaS sono in ogni piano, inclusa la versione gratuita. Per approfondimenti provider-specific, i singoli articoli di questa sezione coprono ogni provider in dettaglio: RLS Supabase, Esposizione chiave di servizio Supabase, Storage Supabase, Regole Firebase, Firebase if-true, Clerk, e Auth0.

// scansiona la tua superficie baas

Trova la tabella aperta prima che lo faccia qualcun altro.

Inserisci una URL di produzione. FixVibe enumera i provider BaaS con cui parla la tua app, identifica i loro endpoint pubblici e riporta cosa un client non autenticato può leggere o scrivere. Gratis, senza installazione, senza carta.

  • Piano gratuito — 3 scansioni/mese, senza carta d'iscrizione.
  • Fingerprinting BaaS passivo — nessuna verifica del dominio necessaria.
  • Supabase, Firebase, Clerk, Auth0, Appwrite e altri.
  • Prompt di correzione IA su ogni risultato — incollali in Cursor / Claude Code.
Esegui scansione BaaS gratuita

nessuna registrazione richiesta

Scanner di configurazioni errate BaaS: trova percorsi di dati pubblici prima degli utenti — Docs · FixVibe