// docs / baas security / umbrella scanner
Scaner de configurări greșite BaaS: găsește căi publice de date înainte ca utilizatorii să o facă
Furnizorii Backend-as-a-Service — Supabase, Firebase, Clerk, Auth0, Appwrite, Convex — eșuează cu toții la securitate în aceeași formă: platforma livrează setări implicite rezonabile, dezvoltatorul (sau instrumentul de codare AI) caută o scurtătură, iar o cale publică se deschide între un atacator neautentificat și datele clienților. Un scaner de configurări greșite BaaS este singurul instrument care sondează acea cale din exterior, așa cum ar face-o un atacator. Acest articol mapează cele cinci clase recurente de configurări greșite, explică cum funcționează scanarea BaaS umbrelă FixVibe, compară cei patru furnizori majori și contrastează scanerul conștient de BaaS cu instrumentele DAST generale.
De ce configurările greșite BaaS au o formă recurentă
Fiecare platformă BaaS urmează aceeași arhitectură: un backend gestionat cu un SDK client subțire care comunică cu el din browser. Clientul orientat spre browser are nevoie de un fel de credențial — o cheie anon, o cheie publicabilă, un ID de proiect Firebase — pentru a se identifica la backend. Acea credențial este intenționat publică; siguranța arhitecturii se bazează pe controalele de acces la nivel de platformă (RLS, reguli, allowlist-uri) făcându-și treaba.
Instrumentele de codare AI construiesc pe această arhitectură fără a internaliza stratul de controale al platformei. Cablează SDK-ul clientului corect, acceptă regulile permisive implicite ale platformei (care există pentru a fi prietenoase cu tutorialele) și livrează. Forma recurentă este: credențial public + regulă permisivă implicită + override lipsă = expunere de date. Cele cinci clase de configurări greșite de mai jos sunt toate variante ale acestei forme.
Cele cinci clase recurente de configurări greșite
Acestea apar la fiecare furnizor BaaS. O scanare completă acoperă toate cele cinci împotriva fiecărui furnizor folosit:
Clasa 1: cheia greșită în bundle-ul browser-ului
Browser-ul livrează cheia secret/admin (Supabase service_role, cheia privată Firebase Admin SDK, Clerk sk_*, secretul de client Auth0) în loc de echivalentul public/anon. Browser-ul devine un client admin neconstrâns. Acoperit de verificarea bundle-secrets a FixVibe.
Clasa 2: stratul de control al accesului dezactivat sau permisiv
RLS este off, regulile Firebase sunt if true, lista de callback Auth0 are wildcards. Credențialul din browser este cel corect — dar granița la nivel de platformă care era menită să-l constrângă nu-și face treaba.
Clasa 3: citiri anonime ale resurselor sensibile
Colecții Firestore citibile anonim, bucket-uri de stocare Supabase listabile anonim, Auth0 management API accesibil anonim. Scanarea întreabă: „fără credențiale, ce pot citi?"
Clasa 4: artefacte de mod test în producție
Chei test (pk_test_*, sb_test_*) într-un deploy de producție; aplicații Firebase în dev-mode accesibile din domeniul live; aplicații Auth0 de test-tenant cu setări mai slabe decât producția. Scanarea compară cheile de runtime cu prefixele de producție așteptate.
Clasa 5: verificarea semnăturii webhook-urilor lipsește
Webhook-urile Clerk, Stripe, Supabase își semnează toate payload-urile. Un handler care nu verifică semnătura este o primitivă de scriere în bază pentru orice atacator care ghicește URL-ul. Detectat prin forma răspunsului — o cerere nesemnată care primește un 200 înseamnă că verificarea este săritura.
Cum funcționează scanarea BaaS umbrelă FixVibe
Faza BaaS a FixVibe rulează în trei etape, fiecare producând rezultate distincte:
- <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.
- Etapa 2 — sonde specifice furnizorului. Pentru fiecare furnizor detectat, scanerul rulează verificarea specifică furnizorului:
baas.supabase-rlssondează PostgREST;baas.firebase-rulessondează Firestore + RTDB + Storage;baas.clerk-auth0validează prefixul cheilor livrate în bundle; verificarea bundle-secrets validează că nicio credențial de nivel service nu a scurs. Fiecare sondă rulează independent — un rezultat Supabase nu blochează scanarea Firebase. - Etapa 3 — corelare între furnizori. Scanerul face referințe încrucișate ale rezultatelor. O cheie service-role Supabase scursă alături de RLS lipsă este mai gravă decât oricare singur — raportul scoate asta în evidență. Mai mulți furnizori de identitate (Clerk + Auth0 + autentificare personalizată) în aceeași aplicație este un rezultat structural marcat pentru revizuire.
Fiecare sondă este pasivă: cel mult o citire anonimă per resursă, cu forma răspunsului înregistrată dar conținutul rândurilor niciodată paginat sau stocat. Sondele de scriere și modificare sunt condiționate de proprietatea verificată a domeniului — nu rulează niciodată împotriva țintelor neverificate.
Ce găsește scanerul pe fiecare furnizor
Fiecare furnizor BaaS are o suprafață diferită și o strategie de scanare diferită. Iată ce este acoperit:
- Supabase: RLS lipsă pe tabele, bucket-uri de stocare listabile anonim, JWT
service_rolesau cheiesb_secret_*scursă în bundle, scheme expuse prin listarea OpenAPI anonimă. Vezi Scaner RLS Supabase și Listă de verificare pentru stocare. - Firebase: reguli
if truepe Firestore, Realtime Database și Cloud Storage; bucket-uri Storage listabile anonim; lipsa impunerii App Check. Vezi Scaner de reguli Firebase și Explicație regulă if-true. - Clerk: chei secrete
sk_*livrate în bundle,pk_test_*în producție, lipsa verificării semnăturii webhook-ului, origini permise cu wildcard. Vezi Lista de verificare Clerk. - Auth0: secrete de client livrate în bundle, grant Implicit activat, callback / logout URLs cu wildcard, PKCE lipsă pe SPAs. Vezi Lista de verificare Auth0.
Cum se compară un scaner BaaS cu instrumentele DAST și SAST generale
Un scaner conștient de BaaS face muncă specifică pe care alte instrumente nu o fac. Comparația:
| Aspect | FixVibe (DAST conștient de BaaS) | DAST general (Burp / ZAP) | SAST / SCA (Snyk / Semgrep) |
|---|---|---|---|
| Acoperire BaaS | Verificări native pentru Supabase, Firebase, Clerk, Auth0, Appwrite | Crawl web generic; fără sonde specifice furnizorilor | Analiză statică doar a repo-ului; fără validare în producție |
| Timp de configurare | URL → rulează → rezultate în 60 de secunde | Ore: configurare spider, auth, scope | O zi: integrare în CI-ul repo-ului |
| Ce dovedește | Expunere în runtime de producție cu dovezi la nivel HTTP | Vulnerabilități web (XSS, SQLi); BaaS prin configurare manuală | Tipare de cod care pot sau nu pot fi deployate |
| Inspecția bundle-ului JavaScript | Decodează JWT-uri, se potrivește cu prefixe de secrete, parcurge chunk-uri | Limitat — doar grep bazat pe șir | Da, dar doar la nivel de repo, nu deployat |
| Scanare continuă | Lunar / pe deploy prin API + MCP | Manual; configurează singur programul | Per commit (bun pentru cod, orb la runtime) |
| Preț pentru solo / echipe mici | Plan gratuit; plătit de la $19/lună | Burp Pro $499/an; ZAP gratuit dar cu multe falsuri pozitive | Snyk gratuit / Semgrep gratuit; planuri plătite de la $25/dev |
Domeniu onest: ce nu înlocuiește acest scaner
Un scaner DAST conștient de BaaS este un instrument concentrat, nu un program complet de securitate. Nu:
- Înlocuiește SAST sau SCA. Analiza statică găsește CVE-uri de dependențe (Snyk, Semgrep) și vulnerabilități la nivel de cod (SonarQube) pe care un scaner DAST nu le poate. Rulează ambele.
- Înlocuiește testarea manuală de penetrare. Un pentester uman găsește defecte de logică de business, cazuri marginale de autorizare și vulnerabilități înlănțuite pe care niciun scaner nu le poate. Angajează un pentester înainte de o lansare majoră sau un audit de conformitate.
- Auditează codul sau repo-ul tău pentru secrete în istoricul git. Verificarea bundle-secrets acoperă ceea ce este deployat în prezent, nu ceea ce a fost istoric comis. Folosește
git-secretssaugitleakspentru igiena repo-ului. - Acoperă serviciile de backend non-BaaS. Dacă aplicația ta folosește un backend personalizat (Express, Rails, Django, FastAPI), FixVibe scanează suprafața sa HTTP, dar nu sondează baza de date sau infrastructura din spatele ei. Acela este teritoriul DAST + SAST general.
Întrebări frecvente
Funcționează scanarea umbrelă dacă aplicația mea folosește doi furnizori BaaS (ex: Supabase + Clerk)?
Da — amprentarea furnizorului și sondele per furnizor sunt independente. Scanerul îi detectează pe amândoi, rulează ambele suite de verificare și raportează corelații între furnizori (ex: un șablon JWT Supabase de la Clerk care livrează email ca claim alături de RLS lipsă).
Cu ce este diferit asta față de a rula Burp Suite Pro împotriva aplicației mele?
Burp este un atelier DAST general. Out of the box, Burp nu știe ce este PostgREST, Firestore sau calea de callback Auth0 — trebuie să configurezi manual scope-ul, să scrii extensii și să interpretezi răspunsurile. FixVibe vine cu sonde BaaS încorporate și formatare de dovezi în formă BaaS. Burp câștigă la acoperirea generală a aplicațiilor web (XSS, SQLi, logică de business); FixVibe câștigă la rezultate specifice BaaS.
Cum rămâne cu App Check (Firebase) sau attestation (Apple / Google)?
App Check face ca scanările externe oportuniste să returneze 403 la fiecare sondă — rezultatul corect pentru un bot malițios. O scanare FixVibe de la un client neatestat se comportă la fel. Dacă ai App Check activat și FixVibe încă raportează rezultate, înseamnă că regulile tale sunt deschise și pentru clienții atestați, ceea ce este riscul real. App Check + reguli corecte este tiparul de defense-in-depth.
Poate scanerul să-mi verifice remedierea?
Da — re-rulează după aplicarea remedierii. ID-urile verificărilor (ex: baas.supabase-rls) sunt stabile între rulări, așa că poți compara rezultatele: un rezultat care era open în rularea 1 și absent în rularea 2 este dovada că remedierea a fost aplicată.
Pași următori
Rulează o scanare FixVibe gratuită împotriva URL-ului tău de producție — verificările fazei BaaS sunt livrate pe fiecare plan, inclusiv pe planul gratuit. Pentru aprofundări specifice furnizorului, articolele individuale din această secțiune acoperă fiecare furnizor în detaliu: RLS Supabase, Expunerea cheii de serviciu Supabase, Stocare Supabase, Reguli Firebase, Firebase if-true, Clerk și Auth0.
