Notícias
Notícias
5 min de leitura
26 de setembro de 2026

Seu SaaS expôs dados (customer misconfigured). Sua culpa?

Supabase customers expuseram dados (configuração errada). Seu SaaS + database = similar risk. Customer errou, mas você é responsável?

Equipe OpenClaw

Equipe OpenClaw · Time de Engenharia & Produto

A Equipe OpenClaw é formada por engenheiros, designers e especialistas em IA dedicados a construir a melhor plataforma de agentes conversacionais para negócios brasileiros. Combinamos expertise…


Seu SaaS expôs dados (customer misconfigured). Sua culpa?

Você é founder de SaaS.

Você construiu plataforma (AI agents, chatbots, automation).

Plataforma usa database (PostgreSQL, MongoDB, ou Firebase).

Clientes usam sua plataforma (conectam dados, configuram features).

Você think: "Clientes são responsáveis por segurança deles (least privilege, firewall, etc)."

Then você read news (setembro 2026):

Headline: "Some Supabase customers are publicly exposing reams of people's data to the web" │ What's happening: ├─ Supabase (database-as-a-service): Customers using it ├─ Customers built: AI-generated apps, "vibe-coded" apps (quick, not careful) ├─ Problem: Database misconfigured (public access, wrong permissions) ├─ Result: Customer data publicly accessible (on the internet) ├─ Who's responsible? (Customer misconfigured, but whose platform?) │ Key question: ├─ "If Supabase customers exposed data due to bad config..." ├─ "Could my customers do the same (with my platform)?" ├─ "Who gets blamed? Customer or me?" ├─ "My reputation at risk? Legal liability at risk?" │ Your thought: ├─ "My platform is secure (I didn't misconfigure)" ├─ "Customer is responsible (they configured wrong)" ├─ "I'm not liable (I provided the tool, not the misuse)" │ But reality: ├─ Customer data exposed (your platform mentioned in news) ├─ Media: "[Your SaaS] customers exposed data" ├─ Customers think: "[Your platform] is insecure" ├─ Your reputation: Damaged (even though customer was at fault) ├─ Your liability: Possibly exposed (did you have security warnings?) │

The problem: Your SaaS is a platform (customers build on it). Customers can misconfigure security. When they do, data gets exposed. Media blames platform ("[Your SaaS] exposed data"). Customers blame platform ("[Your SaaS] is insecure"). Your reputation is damaged (even though customer was at fault). Your legal liability might be real (did you warn them? did you set secure defaults?). You're caught in the middle (responsible for security, but customers control configuration). Supabase shows this clearly: Customers misconfigured database, data leaked, Supabase gets blamed.


O problema real (why customer misconfiguration is YOUR problem)

Dilema 1: Customers don't understand security (but they control configuration)

=== SECURITY KNOWLEDGE GAP === │ What happens: ├─ Customer: "I'll build a quick app with this SaaS" ├─ Customer: "I'll connect my database (using your defaults)" ├─ Customer: "I'll deploy to production (without thinking about security)" ├─ Customer: "App is live (with default open database)" │ What customer doesn't know: ├─ Database has default settings (might be too open) ├─ Default settings expose data (public read access) ├─ Production data should be locked down (not left open) ├─ Security configuration requires thought (not default) │ What you (platform builder) assumes: ├─ "Customers know how to configure databases" ├─ "Customers understand least privilege (data access)" ├─ "Customers will read security docs (before deploying)" ├─ "Customers will test permissions (before going live)" │ Reality: ├─ Customers don't read security docs ├─ Customers don't understand least privilege ├─ Customers ship with default configs (because "it works") ├─ Customers expose data (accidentally) │ Suabase example: ├─ Customers misconfigured database ├─ Data became public (default open access) ├─ 53 databases exposed (multiple customers) ├─ Supabase didn't misconfigure (customers did) ├─ But Supabase got blamed (platform is responsible) │ Your risk: ├─ Customers will misconfigure your platform ├─ Data will get exposed (customer's fault) ├─ You'll get blamed (platform responsibility) ├─ Your reputation will be damaged (even though customer was at fault) │

Dilema 2: Default settings determine 80% of customer behavior

=== DEFAULTS ARE DESTINY === │ How defaults work: ├─ Platform ships with defaults (secure or insecure) ├─ 80% of customers never change defaults (too lazy, too complex) ├─ 10% of customers read docs and configure properly ├─ 10% of customers misconfigure (wrong settings, bad luck) │ If defaults are INSECURE: ├─ 80% of customers have insecure apps (default exposed) ├─ 10% configure slightly better (but still risky) ├─ 10% get it right (secure) ├─ Result: 90% have exposed data (from defaults) ├─ You get blamed (defaults were insecure) │ If defaults are SECURE: ├─ 80% of customers have secure apps (default locked down) ├─ 10% configure looser (intentionally, for their use case) ├─ 10% misconfigure (but secure by default helps) ├─ Result: 10-20% have exposed data (from misconfig) ├─ You're protected (defaults were secure) │ Supabase situation: ├─ Supabase defaults: Probably too open (for ease of use) ├─ Result: Customers who use defaults = exposed data ├─ If Supabase had secure defaults: Problem would be smaller │ Your situation: ├─ What are your defaults? (Open access? Restricted?) ├─ 80% of customers will use defaults (won't change) ├─ If defaults are open: 80% will expose data ├─ You're responsible (you set the defaults) │

Dilema 3: "Vibe-coding" is fastest way to expose data

=== VIBE-CODING SECURITY DISASTER === │ Vibe-coding means: ├─ Build quickly (no planning) ├─ Use defaults (don't customize) ├─ Ship to production (without testing) ├─ Hope it works (no security thinking) ├─ Iterate later (security is "later") │ Why vibe-coders expose data: ├─ Speed > Security ("ship fast, fix later") ├─ Defaults = OK ("platform defaults are secure, right?") ├─ Testing = waste ("just deploy, we'll see") ├─ Security docs = noise ("don't have time to read") ├─ Permissions = confusing ("just make it open") │ Example workflow: ├─ Developer: "I need to build chatbot app (24 hours)" ├─ Developer: "I'll use your AI + database (plug & play)" ├─ Developer: "I'll connect customer data (copy-paste SQL)" ├─ Developer: "I'll deploy (default settings, no review)" ├─ Result: App is live (database is public, data is exposed) ├─ Blame: "Your platform is insecure" (but developer was careless) │ Why you're liable: ├─ You provided the platform (developer used it) ├─ You set the defaults (developer accepted them) ├─ You didn't warn them (security docs are hidden) ├─ Developer shipped with defaults (and exposed data) ├─ Customer data is now public (your platform, customer's reputation damaged) │ Who gets sued: ├─ Customer data exposed? Check. ├─ LGPD complaint filed? Check. ├─ Regulator asks: Who's responsible? (Platform or developer?) ├─ Answer: Both (shared responsibility) ├─ You get liability (platform security) ├─ Developer gets liability (configuration) │

Dilema 4: You can't monitor what customers configure (shared responsibility trap)

=== SHARED RESPONSIBILITY ILLUSION === │ What you think: ├─ "I built secure platform" ├─ "Customers control configuration" ├─ "If they misconfigure: Their responsibility" ├─ "I have no liability (they did the bad config)" │ What actually happens: ├─ Customer misconfigures ├─ Data leaks ├─ Regulator asks: "Who's responsible?" ├─ Answer: "Shared responsibility" │ ├─ You: Didn't provide secure defaults │ ├─ You: Didn't warn customers (security docs) │ ├─ You: Didn't monitor (could have caught it) │ ├─ You: Didn't enforce (could have blocked open access) │ ├─ Customer: Misconfigured │ ├─ Customer: Didn't read warnings │ ├─ Customer: Didn't test (before going live) │ Where you're liable: ├─ LGPD (Brazil): Processor responsibility (you process data on platform) ├─ GDPR (EU): Controller + Processor (shared liability) ├─ Negligence claim: Did you warn customers? (probably not enough) ├─ Fines: Even if customer misconfigured, you can be fined │ Supabase situation: ├─ Supabase: Platform, had customers' data ├─ Customers: Misconfigured, exposed data ├─ Liability: Shared (Supabase is processor, customers are controller) ├─ Supabase can't escape (even though customer misconfigured) │ Your situation: ├─ You're the platform (customers' data is on your infrastructure) ├─ Customers misconfigure (open access, public buckets, etc) ├─ You're liable (shared responsibility) ├─ You can't avoid it (just by saying "customer's fault") │

Dilema 5: AI-generated apps make misconfiguration MORE likely

=== AI-GENERATED = NO SECURITY THINKING === │ Traditional app development: ├─ Developer: Thinks about security ├─ Developer: Reads docs, understands risks ├─ Developer: Tests permissions ├─ Result: App is reasonably secure (developer was careful) │ AI-generated app development: ├─ "Build me a chatbot with customer data" ├─ AI: Generates code (fast, no security thinking) ├─ Developer: Reviews generated code (doesn't understand it) ├─ Developer: "Looks good, ship it" ├─ Result: App has default open database (AI didn't think about security) │ Why AI-generated is riskier: ├─ No security thinking (AI optimizes for "works", not "secure") ├─ No security knowledge (LLM trained on open source = often insecure) ├─ No security review (developer doesn't understand generated code) ├─ Default open (easier for AI to generate, less secure for users) │ Supabase customers: ├─ Used AI to generate apps (quick, easy) ├─ AI generated with default open database (because it's easier) ├─ Developer shipped without thinking ("AI generated it") ├─ Data exposed (default open database) ├─ Blame AI? Blame developer? Blame Supabase? (All three) │ Your situation: ├─ If your platform is used by AI generators (Cursor, Copilot) ├─ AI will generate insecure apps (defaults, no security thinking) ├─ Developers will ship without reviewing (trust the AI) ├─ Your customers will expose data (from AI-generated apps) ├─ You get blamed (platform security responsibility) │


Root cause: You're responsible for defaults (not just infrastructure)

Why defaults are your responsibility

=== DEFAULTS = YOUR RESPONSIBILITY === │ What regulators think: ├─ "Platform provides infrastructure" ├─ "Platform sets default security settings" ├─ "80% of customers use defaults" ├─ "If defaults are insecure = platform is responsible" │ What courts think: ├─ "Platform had opportunity to set secure defaults" ├─ "Platform chose not to (for ease of use, maybe)" ├─ "Customer misconfigured (but platform defaults made it easy)" ├─ "Platform bears responsibility for default choices" │ What customers think: ├─ "This platform is from reputable company" ├─ "Default settings must be secure (or company would fix it)" ├─ "I'll use defaults (no need to configure)" ├─ "Data got exposed (platform is insecure)" │ Legal liability: ├─ LGPD Article 32: Security measures required (defaults count) ├─ GDPR Article 32: Data protection by design (defaults count) ├─ Negligence: Did you set defaults with security in mind? ├─ Foreseeability: Could you predict customers would misconfigure? (Yes) │


Solution: Secure-by-default + warnings + monitoring

Strategy 1: Secure defaults (lock down by default, open by choice)

=== SECURE DEFAULTS === │ Principle: ├─ Default to MOST RESTRICTIVE (no access) ├─ Customer explicitly enables features ├─ Each feature enables only what's needed ├─ Progress bar: "Security reduced by 20%" (when customer opens up) │ Example (database access): ├─ Default: No public access (database is private) │ └─ Customer can access only via authenticated API ├─ Option 1: "Make read-only public" (customer chooses) │ └─ Anyone can READ (but not modify) │ └─ Warning: "Data will be public" (must confirm) ├─ Option 2: "Make public read-write" (customer must really want it) │ └─ Anyone can READ and WRITE │ └─ Warning: "Data is completely exposed" (must confirm 2x) │ Benefit: ├─ Default-using customers: Secure (by default) ├─ Intentional customers: Can open up (but get warnings) ├─ Accidental exposure: Prevented (by default restriction) │

Strategy 2: On-boarding security checklist

=== SECURITY CHECKLIST === │ When customer connects database: ├─ Step 1: "Select data sensitivity level" (public vs private) ├─ Step 2: "Review default permissions" (show current settings) ├─ Step 3: "Confirm security settings" (must click through) ├─ Step 4: "Test access (read-only)" (verify data isn't exposed) ├─ Step 5: "Acknowledge LGPD responsibility" (customer must agree) │ Example checklist items: ├─ ☐ "I've limited database access to authenticated users only" ├─ ☐ "I've tested that public cannot access my database" ├─ ☐ "I understand LGPD requires me to protect customer data" ├─ ☐ "I've enabled encryption for sensitive fields" ├─ ☐ "I've set up access logs (to audit who accesses data)" │ Benefit: ├─ Forces customer thinking (can't ship without checking) ├─ Creates documentation (customer confirms understanding) ├─ Provides defense (customer acknowledged risk) │

Strategy 3: Automatic security scanning + alerts

=== SECURITY MONITORING === │ What to scan: ├─ Database permissions (is it public? should be private?) ├─ API keys (are they exposed in code/logs?) ├─ Access logs (who's accessing what? normal patterns?) ├─ Data sensitivity (customer marked as "private" but configured open?) │ What to alert: ├─ "Warning: Your database is public (should be private)" ├─ "Warning: API key detected in app code (should be in env vars)" ├─ "Warning: Unusual access pattern (1000x normal access)" ├─ "Warning: Sensitive data field (marked private) is public" │ When to block: ├─ Customer tries to mark data "sensitive" but leaves public ├─ System prevents (customer must choose: truly open or lock down) ├─ Override possible (customer must acknowledge risk in writing) │ Benefit: ├─ Catches misconfiguration early (before data leaks) ├─ Alerts customer ("fix this before going to production") ├─ Provides evidence (you warned them, they ignored, their liability) │

Strategy 4: Explicit customer responsibility acknowledgment

=== RESPONSIBILITY ACKNOWLEDGMENT === │ What to get from customer: ├─ "I understand [SaaS] processes customer data on my behalf" ├─ "I am responsible for configuring access correctly" ├─ "I acknowledge I've read security documentation" ├─ "I understand misconfiguration could expose data" ├─ "I agree to indemnify [SaaS] for negligent misconfiguration" │ When to get it: ├─ Onboarding (before they connect any data) ├─ Before production (before going live) ├─ Annually (refresh their understanding) │ Benefit: ├─ Legal protection (documented that you warned them) ├─ Shared responsibility clarity (their responsibility is documented) ├─ Customer engagement (thinking about security) │

Strategy 5: Provide templates + examples (secure by example)

=== SECURE TEMPLATES === │ What to provide: ├─ "Secure database setup" (template configuration) ├─ "Least privilege access" (example permissions) ├─ "Checklist before production" (security verification) ├─ "Common mistakes to avoid" (what NOT to do) ├─ "Security troubleshooting" (how to fix leaks) │ Example: ├─ "Chatbot with customer data: Secure setup" │ ├─ Database: Customers table (private, encrypted) │ ├─ API: Only authenticated users can access │ ├─ Permissions: Chat agent reads only (no write) │ ├─ Logs: All access logged (audit trail) │ ├─ Backup: Encrypted at rest │ Benefit: ├─ Customers follow example (lower misconfiguration risk) ├─ Shows best practice (you care about security) ├─ Reduces liability (you provided secure example) │


Practical implementation (this month)

Week 1: Audit current defaults (3-4 hours)

  1. Security review (2 hours): ├─ What are platform defaults? (list all) ├─ Are they secure? (would data be exposed if customer uses them?) ├─ What could go wrong? (list 10 ways customer could expose data) ├─ What's protected by default? (what's not protected?)

  2. Risk assessment (1-2 hours): ├─ How many customers use defaults? (estimate %) ├─ How many are exposed? (estimate risk) ├─ What's the damage if leak happens? (reputation, liability, fines) ├─ What's the cost to fix? (engineering hours)

Week 2-3: Implement secure defaults + checklist (8-12 hours)

  1. Change defaults (4-6 hours): ├─ Database access: Default to PRIVATE (not public) ├─ API keys: Require environment variables (not in code) ├─ Permissions: Default to RESTRICTED (expand intentionally) ├─ Logging: Enabled by default (audit trail) ├─ Encryption: Enabled for sensitive fields

  2. Add checklist (2-3 hours): ├─ Onboarding flow with security steps ├─ Confirmation checkboxes (customer must understand) ├─ Production deployment gate (security signed off)

  3. Add scanning (2-3 hours): ├─ Automated checks for open access ├─ Alerts to customer ("fix this") ├─ Dashboard showing security posture

Week 4+: Monitoring + documentation (ongoing)

  1. Monitoring (30 min/week): ├─ Review alerts (are customers fixing issues?) ├─ Identify at-risk customers (manual review) ├─ Reach out ("your database might be exposed")

  2. Documentation (2-3 hours): ├─ Write security guide (how to configure properly) ├─ Publish examples (secure templates) ├─ Create FAQ (common mistakes)


Conclusão

Simple verdade:

Supabase customers exposed data due to misconfiguration. Not Supabase's fault. But Supabase gets blamed (platform reputation damaged, legal liability exposed). You're in same boat: Your customers will misconfigure security. Data will leak. You'll get blamed (even though customer was at fault). You're responsible for defaults (not just infrastructure). 80% of customers use defaults (won't customize). If defaults are insecure = 80% of customers expose data = you're liable. You need to: (1) Set secure defaults. (2) Add security checklist. (3) Monitor for misconfiguration. (4) Get customer acknowledgment. Not doing this = accepting risk (when it's preventable).

3 facts:

  1. Defaults determine security (80% of customers don't change them). If your defaults are open = 80% of customers have open databases = data is exposed = you're liable (even though customer is at fault). Changing defaults to secure = prevents 80% of leaks. One platform change = 80% risk reduction. Worth it.

  2. AI-generated apps make misconfiguration MORE likely (no security thinking in generated code). If your platform is used by AI code generators = risk is higher (AI generates insecure defaults). You need STRONGER defaults (because AI won't fix them). Scanning + alerts become critical (catch generated insecurity).

  3. Shared responsibility doesn't protect you (even if customer misconfigured, you're still liable). Regulators think: "Platform set defaults, platform is responsible." Courts think: "Platform could have prevented this, platform is liable." Your defense: "We warned them" (documentation, checklists, acknowledgments). Without warnings = no defense (they'll sue you).

3 action items (this week):

  1. Audit your defaults (2 hours, today). What are the default settings? Are they secure? Would data be exposed if customer uses them without customizing? Document it. If defaults are open: You have problem.**

  2. Identify your risk (1 hour, today). How many customers use your platform? How many use defaults (don't customize)? If >50%: You have exposure. Estimate: What % could expose data? If >10%: Risk is real.**

  3. Plan security defaults (2 hours, this week). What should be default (PRIVATE)? What should customer enable (OPEN)? How should you warn them? Create plan: 1-2 weeks to change defaults + add checklist. Do it before leak happens (not after).**


Próximos passos

Na OpenClaw, ajudamos SaaS builders implement secure-by-default (prevent customer misconfiguration leaks):

  • Security Audit: Review current defaults (are they secure?)
  • Risk Assessment: How many customers are exposed? (estimate)
  • Secure Defaults: Change defaults to private/restricted
  • Onboarding Checklist: Security steps before going live
  • Automated Scanning: Detect misconfiguration (public access, exposed keys)
  • Alert System: Notify customer ("fix this before it leaks")
  • Security Dashboard: Show customer their security posture
  • Templates: Secure setup examples (copy-paste safety)
  • Documentation: Security guide + FAQ (how to configure)
  • Monitoring: Daily check for at-risk customers
  • Acknowledgment: Customer signs responsibility doc
  • Incident Response: Plan for if leak happens (notification, mitigation)

Secure-by-Default | Customer Misconfiguration Prevention | SaaS Data Exposure Risk | Platform Security Responsibility →


Publicado em 26 de setembro de 2026

Leia também