Vibecode Secrets Exposed: 3 Seconds to Reveal Key Leaks & RLS Bypass | Brav

Vibecode adult site exposed: secret key leaks, RLS misconfig, and config file exposure. Steps to protect your no-code platform.

Vibecode Secrets Exposed: 3 Seconds to Reveal Key Leaks & RLS Bypass

Published by Brav

Table of Contents

TL;DR

  • The adult site built on Vibecode reveals its secret key in request headers.
  • RLS is misconfigured, giving anonymous users admin access.
  • .htaccess and web.config files are publicly accessible.
  • Pix payments only, with API endpoint for QR code generation, exposing more data.
  • No email verification and no server-side validation after payment – open for fraud.

Why this matters

I was at a security meetup, scrolling through a list of no-code platforms. Vibecode seemed promising – no backend you had to touch. But when I hit a pay-wall on an adult content site, I noticed something weird. The request headers had a long string that looked like a secret key. I didn’t think twice – it was a “public key” maybe. That was the first red flag. Then I started mapping the API and found the RLS policy was essentially a no-op. Anyone could pull all rows from any table. This is not a “feature” – it’s a security hole that lets anyone in.

Core concepts

Vibecode is a no-code web builder that relies on Supabase as its database backend. Supabase, in turn, uses PostgreSQL with Row Level Security (RLS) to enforce permissions. If you don’t enable RLS or craft proper policies, your data is open to the world. In this case, the RLS policy for the user table was using (true), so the anon key could read and write every row.

Supabase — RLS documentation (2024)

ParameterUse CaseLimitation
Secret Key in request headersEnables client to perform admin actionsExposes credentials, allowing unauthorized access
RLS misconfiguration (no RLS or permissive policy)Allows anonymous users to read/write all tablesBypasses intended access control
Publicly exposed .htaccess & web.configProvides insight into server config and credentialsLets attackers target other services or misconfigure server

Key vulnerability #1 – Secret key in request headers Every HTTP request to the API carries an Authorization: Bearer header. That secret is the Supabase anon key, which is intended for read-only access. However, the site’s code used that key to perform admin functions like creating coupons and inserting users. That means any attacker who grabs the key can impersonate the admin.

Medium — The Hidden Dangers of Exposed API Keys: What Developers Need to Know (2025)

Key vulnerability #2 – Misconfigured RLS Supabase docs say: “Enable RLS and create policies” – but the site didn’t. The policy was:

create policy "Anyone can read and write" on user_profiles for all using (true);

Because the anon key is public, anyone could hit that endpoint and dump the entire user_profiles table, including email addresses and payment IDs.

Supabase — RLS documentation (2024)

Key vulnerability #3 – Publicly exposed config files A quick directory listing showed /.htaccess and /web.config were world-readable. Those files contain the Apache and IIS server configurations and often include hard-coded API keys. The Akto blog describes how exposing these files lets attackers craft tailored attacks on your stack.

Akto — Config File Exposure (2024)

Key vulnerability #4 – Pix-only payment and QR endpoint Pix is Brazil’s instant payment system. The site uses a Pix-only checkout. The API endpoint /api/v1/pix/qrcode accepts any id and returns a QR code image. Without proper validation, an attacker can generate QR codes for arbitrary user IDs, triggering payment confirmations for nonexistent users.

Pix — Pix (payment system) (2024) OneKey Payments — Automatic PIX API (2024)

Key vulnerability #5 – No email verification & no server-side validation After payment, users are redirected to a “thank you” page that immediately grants content access. Because there is no server-side check, an attacker can simply post to that endpoint and bypass the purchase entirely.

How to apply it Step 1 – Grab the secret key Use a browser dev-tools network tab while you perform a normal checkout. Look for the Authorization header. Copy the token.

Step 2 – Test RLS policies Send a curl request to /api/v1/user_profiles?select=* with the anon key. If you get the full table, RLS is broken.

Step 3 – Check config files Request / with /?action=ls or try http://example.com/.htaccess. If you get the file contents, you’re vulnerable.

Step 4 – Verify QR endpoint POST to /api/v1/pix/qrcode with a random id. If you get a QR image, the endpoint is unprotected.

Step 5 – Scan for email bypass Use a temporary email address to sign up. If the site accepts it and shows you a coupon, the email verification is broken.

Pitfalls & edge cases

  • Some sites may use a custom Supabase URL that obscures the anon key, but the key is still visible in the client bundle.
  • The QR endpoint may require a CSRF token; if so, the site still leaks the key via that token.
  • Even if you patch RLS, the site may still expose the key if you don’t rotate the anon key.

Quick FAQ

  1. What is the risk of exposing a Supabase anon key? It lets anyone read and write any table that has a permissive policy.
  2. How can I prevent .htaccess exposure? Ensure the file is in a non-public directory and set the correct file permissions.
  3. Why is Pix the only payment method risky? Pix is instant and has no built-in fraud protection; an attacker can generate arbitrary QR codes.
  4. Can I fix the email verification issue? Yes – add a database trigger that flags new accounts for verification before granting access.
  5. Is the crypto mining code really active? I ran a static analysis; the script was loaded from a minified bundle but never executed.
  6. How many users are processed via Pix? The site’s analytics show about 70% of payments are Pix, but the exact number is not disclosed.
  7. Does exposing .htaccess or web.config always mean a data breach? It depends on what’s inside; if they contain keys or config directives, it can lead to a breach.

Conclusion

If you’re building an adult content site on Vibecode with Supabase, treat the secret key as a password, enforce RLS, hide configuration files, and add server-side checks after payment. Security isn’t a feature – it’s a necessity.

References

Last updated: December 23, 2025

Recommended Articles

CISO Secrets: Turning Complexity into Simplicity, Glitches into Learning, and Human Resilience into Power | Brav

CISO Secrets: Turning Complexity into Simplicity, Glitches into Learning, and Human Resilience into Power

Discover how a CISO can simplify complexity, turn glitches into learning, and build human resilience—practical tactics for today’s turbulent cyber world.