// docs / baas security / umbrella scanner
Skener napačnih konfiguracij BaaS: najdite javne podatkovne poti, preden to storijo uporabniki
Ponudniki Backend-as-a-Service — Supabase, Firebase, Clerk, Auth0, Appwrite, Convex — varnostno odpovedo v isti obliki: platforma izda razumne privzete vrednosti, razvijalec (ali UI-orodje za kodiranje) poseže po bližnjici, in med nepristnim napadalcem in podatki stranke se odpre javna pot. Skener napačnih konfiguracij BaaS je edino orodje, ki to pot sondira od zunaj, kakor bi to počel napadalec. Ta članek kartira pet ponavljajočih se razredov napačnih konfiguracij, razloži, kako deluje krovni FixVibov BaaS-pregled, primerja štiri glavne ponudnike in BaaS-ozaveščeni skener postavi nasproti splošnih DAST-orodij.
Zakaj imajo napačne konfiguracije BaaS ponavljajočo se obliko
Vsaka platforma BaaS sledi isti arhitekturi: upravljano zaledje s tankim odjemalskim SDK, ki z njim govori iz brskalnika. Odjemalec, obrnjen k brskalniku, potrebuje neke vrste poverilnico — anon-ključ, objavljivi ključ, ID Firebase-projekta — da se proti zaledju identificira. Ta poverilnica je namensko javna; varnost arhitekture sloni na tem, da zgodaj določene kontrole dostopa na ravni platforme (RLS, pravila, seznami dovoljenih) opravljajo svoje delo.
UI-orodja za kodiranje gradijo na tej arhitekturi, ne da bi ponotranjila plast nadzora platforme. Pravilno povežejo odjemalski SDK, sprejmejo permisivna privzeta pravila platforme (ki obstajajo zaradi prijaznosti do tutorialov) in izdajo. Ponavljajoča se oblika je: javna poverilnica + popustljivo privzeto pravilo + manjkajoča prepustitev = izpostavljenost podatkov. Pet razredov napačnih konfiguracij spodaj so vsi različice te oblike.
Pet ponavljajočih se razredov napačnih konfiguracij
Ti se pojavljajo pri vsakem BaaS-ponudniku. Popoln pregled pri vsakem uporabljenem ponudniku pokrije vseh pet:
Razred 1: Napačen ključ v brskalniškem snopu
Brskalnik izda skrivnostni/skrbniški ključ (Supabase service_role, zasebni ključ Firebase Admin SDK, Clerk sk_*, skrivnostni ključ odjemalca Auth0) namesto javnega/anon-ekvivalenta. Brskalnik postane neomejen skrbniški odjemalec. Pokriva ga FixVibov pregled bundle-secrets.
Razred 2: Plast nadzora dostopa onemogočena ali popustljiva
RLS je izklopljena, pravila Firebase so if true, seznam Auth0-povratnih klicev je z nadomestnim znakom. Poverilnica v brskalniku je pravilna — vendar meja na ravni platforme, ki bi jo morala omejevati, svojega dela ne opravlja.
Razred 3: Anonimna branja občutljivih virov
Anonimno berljive zbirke Firestore, anonimno naštevljiva vedra Supabase Storage, anonimno dosegljiv Auth0-skrbniški API. Pregled sprašuje: „brez poverilnic, kaj lahko preberem?"
Razred 4: Artefakti test-načina v produkciji
Testni ključi (pk_test_*, sb_test_*) v produkcijski uvedbi; razvojni Firebase-aplikacije, dosegljive iz živega imena domene; testno-najemniške aplikacije Auth0 s šibkejšimi nastavitvami od produkcije. Pregled primerja izvajalne ključe s pričakovanimi produkcijskimi predponami.
Razred 5: Manjka preverjanje podpisa webhooka
Webhooki Clerk, Stripe in Supabase vsi podpisujejo svoje tovore. Rokovalnik, ki podpisa ne preveri, je primitiv za pisanje v bazo podatkov za vsakega napadalca, ki ugiba URL. Zaznano prek oblike odziva — nepodpisana zahteva, ki dobi 200, pomeni, da je preverjanje preskočeno.
Kako deluje krovni FixVibov BaaS-pregled
FixVibova faza BaaS teče v treh stopnjah, vsaka proizvede ločene najdbe:
- <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.
- Stopnja 2 — sonde, specifične za ponudnika. Za vsakega zaznanega ponudnika skener izvede preverjanje, specifično za tega ponudnika:
baas.supabase-rlssondira PostgREST;baas.firebase-rulessondira Firestore + RTDB + Storage;baas.clerk-auth0potrjuje predpono pakiranih ključev; pregled bundle-secrets potrjuje, da niso odtekle nobene poverilnice nivoja service. Vsaka sonda teče neodvisno — najdba pri Supabase ne ustavi Firebase-pregleda. - Stopnja 3 — navzkrižna korelacija med ponudniki. Skener navzkrižno preveri najdbe. Odtekel Supabase service-role ključ ob manjkajoči RLS je hujši kot vsaka najdba zase — poročilo to izpostavi. Več ponudnikov identitete (Clerk + Auth0 + lastna avtentikacija) v isti aplikaciji je strukturna najdba, označena za pregled.
Vsaka sonda je pasivna: največ eno anonimno branje na vir, z zabeleženo obliko odziva, vendar vsebina vrstic nikoli ne strani ali shrani. Sonde za pisanje in spreminjanje so omejene s preverjenim lastništvom domene — nikoli ne tečejo proti neverificiranim ciljem.
Kaj skener najde po ponudniku
Vsak BaaS-ponudnik ima drugačno površino in drugačno strategijo pregleda. Tu je, kar je pokrito:
- Supabase: manjkajoča RLS na tabelah, anonimno naštevljiva vedra shrambe, odtekel
service_role-JWT ali ključsb_secret_*v snopu, izpostavljene sheme prek anonimnega izpisa OpenAPI. Glejte Skener Supabase RLS in Kontrolni seznam za shrambo. - Firebase: pravila
if truev Firestore, Realtime Database in Cloud Storage; anonimno naštevljiva vedra Storage; manjkajoče uveljavljanje App Check. Glejte Skener pravil Firebase in Razlaga pravila if-true. - Clerk: pakirani skrivnostni ključi
sk_*,pk_test_*v produkciji, manjkajoče preverjanje podpisa webhooka, nadomestni dovoljeni izvori. Glejte Kontrolni seznam Clerk. - Auth0: pakirane skrivnosti odjemalca, omogočena Implicit-odobritev, nadomestni URL-ji za povratni klic / odjavo, manjkajoč PKCE na SPA. Glejte Kontrolni seznam Auth0.
Kako se BaaS-skener primerja s splošnimi DAST- in SAST-orodji
BaaS-ozaveščen skener opravi specifično delo, ki ga druga orodja ne. Primerjava:
| Vidik | FixVibe (BaaS-ozaveščeni DAST) | Splošni DAST (Burp / ZAP) | SAST / SCA (Snyk / Semgrep) |
|---|---|---|---|
| Pokritost BaaS | Domorodni pregledi za Supabase, Firebase, Clerk, Auth0, Appwrite | Generičen spletni pregled; brez sond, specifičnih za ponudnika | Statična analiza samo repozitorija; brez potrditve v produkciji |
| Čas postavitve | URL → zaženi → rezultati v 60 sekundah | Ure: konfiguracija pajka, avtentikacije, obsega | Dan: integracija v CI repozitorija |
| Kaj dokaže | Izvajalna izpostavljenost v produkciji s HTTP-dokazi | Ranljivosti spletnih aplikacij (XSS, SQLi); BaaS prek ročne konfig. | Kodni vzorci, ki se lahko izdajo ali ne |
| Pregled snopa JavaScript | Dešifrira JWT-je, ujema predpone skrivnosti, prečesava kose | Omejeno — samo grep, osnovan na nizih | Da, vendar le na strani repozitorija, ne v uvedbi |
| Neprekinjeno skeniranje | Mesečno / ob uvedbi prek API + MCP | Ročno; razpored konfigurirate sami | Na vsak commit (dobro za kodo, slepo za izvajanje) |
| Cena za posameznika / malo ekipo | Brezplačni paket; plačljivo od 19 $/mesec | Burp Pro 499 $/leto; ZAP brezplačen, a visoka stopnja lažno pozitivnih | Snyk brezplačen / Semgrep brezplačen; plačljivi paketi od 25 $/razvijalca |
Iskren obseg: česa ta skener ne nadomešča
BaaS-ozaveščen DAST-skener je osredotočeno orodje, ne celovit varnostni program. Ne:
- Ne nadomešča SAST ali SCA. Statična analiza najde CVE-je odvisnosti (Snyk, Semgrep) in ranljivosti na ravni kode (SonarQube), ki jih DAST-skener ne more. Uporabljajte oboje.
- Ne nadomešča ročnih penetracijskih testov. Človeški pentester najde napake poslovne logike, robne primere avtorizacije in verižene ranljivosti, ki jih noben skener ne more. Pred večjo izdajo ali skladnostnim pregledom najemite pentesterja.
- Ne pregleda vaše kode ali repozitorija za skrivnosti v Git-zgodovini. Pregled bundle-secrets pokriva, kar je trenutno izdano, ne, kar je bilo zgodovinsko zaveženo. Za higieno repozitorija uporabite
git-secretsaligitleaks. - Ne pokriva ne-BaaS zalednih storitev. Če vaša aplikacija uporablja lastno zaledje (Express, Rails, Django, FastAPI), FixVibe skenira njeno HTTP-površino, vendar ne sondira baze podatkov ali infrastrukture za njo. To je ozemlje splošnega DAST + SAST.
Pogosto zastavljena vprašanja
Ali krovni pregled deluje, če moja aplikacija uporablja dva BaaS-ponudnika (npr. Supabase + Clerk)?
Da — prstno odtisovanje ponudnika in sonde po ponudniku so neodvisne. Skener oba zazna, izvede oba nabora pregledov in poroča navzkrižne korelacije med ponudniki (npr. Supabase-JWT-predloga iz Clerk, ki izda email kot zahtevek, ob manjkajoči RLS).
Kako se to razlikuje od zagona Burp Suite Pro proti moji aplikaciji?
Burp je splošna DAST-delovna miza. Iz škatle Burp ne ve, kaj je PostgREST, Firestore ali Auth0-pot povratnega klica — ročno morate konfigurirati obseg, pisati razširitve in interpretirati odzive. FixVibe pride z vgrajenimi BaaS-sondami in BaaS-oblikovanim oblikovanjem dokazov. Burp zmaga pri splošni pokritosti spletnih aplikacij (XSS, SQLi, poslovna logika); FixVibe zmaga pri najdbah, specifičnih za BaaS.
Kaj pa App Check (Firebase) ali attestacija (Apple / Google)?
App Check pri vsaki sondi oportunističnih zunanjih skenerjev vrne 403 — pravilen izid za zlonamerni bot. FixVibe-pregled iz neatestiranega odjemalca se obnaša enako. Če imate omogočen App Check in FixVibe še vedno poroča najdbe, pomeni, da so vaša pravila odprta tudi za atestirane odjemalce, kar je dejansko tveganje. App Check + pravilna pravila je vzorec večplastne obrambe.
Ali skener lahko preveri moj popravek?
Da — po uporabi popravka znova zaženite. ID-ji preverjanj (npr. baas.supabase-rls) so stabilni med zagoni, tako da lahko najdbe primerjate: najdba, ki je bila v zagonu 1 odprta in je v zagonu 2 odsotna, je dokaz, da je popravek prijel.
Naslednji koraki
Zaženite brezplačen FixVibe-pregled proti svojemu produkcijskemu URL-ju — pregledi v fazi BaaS so v vsakem paketu, vključno z brezplačnim. Za poglobitve, specifične za ponudnika, posamezni članki v tem razdelku obravnavajo vsakega ponudnika podrobno: Supabase RLS, Izpostavljenost service-role ključa Supabase, Supabase Storage, Pravila Firebase, Firebase if-true, Clerk in Auth0.
