← All advisories
VV-166highData leakage2026-10-16

Bootlegger's Claude-built dashboard sent store and financial data to anyone who loaded its login page

An internal web dashboard at South African coffee chain Bootlegger, reportedly vibe-coded with Claude and hosted on Railway, showed a login screen but already included its data in the page it sent. Anyone with the URL could read names and contact details for 132 locations, plus some performance and financial data, from the page source.

01.

What it is

MyBroadband (16 October 2026) reports that Bootlegger's CEO appears to have encouraged or directly built the dashboard with Claude. In a July LinkedIn post he described vibe-coding nightly and mandating Claude for his 15 direct reports.

According to the anonymous discloser, the URL was found because employees posted photos of their laptop screens on Instagram with the site visible.

The app showed a login screen, but the data was shipped down with the login page. MyBroadband verified that the page source contained names and contact information linked to 132 Bootlegger locations, along with some performance and financial data.

Neither the CEO nor Bootlegger commented, but the Railway app was taken down after MyBroadband's query.

02.

How to check

  1. Log out (or use a private window), load your app's login page and view the page source and the network tab. Is any real data in the HTML, inline JSON or API responses before you sign in?
  2. Call your API endpoints with no session cookie or token. They should return 401/403, not data.
  3. Search for your internal tool's hostname online. "Internal" URLs leak through screenshots, links and logs.
03.

How to fix

  1. Enforce auth on the server: the server must check the session before it renders or returns any data. A login screen drawn in the browser is not access control.
  2. Load data only after sign-in, from endpoints that check who's asking and return only what that user may see.
  3. Put internal dashboards behind an access layer (SSO, a VPN or your host's private networking) rather than relying on an obscure public URL.
  4. When you have an AI build an internal tool, ask it to explain where auth is enforced, and test logged-out access yourself before sharing the link.
# Logged-out checks: neither should contain real records
curl -s https://your-dashboard.example.com/login | grep -iE 'email|phone|revenue|"stores"' | head
curl -s -o /dev/null -w '%{http_code}\n' https://your-dashboard.example.com/api/stores   # expect 401/403
04.

Sources

Related on VibeVulns
More advisories for this tool
The weekly email

One email a week. Only what changed.

Every new security hole in AI coding tools, MCP servers, app builders and the stacks they generate (Next.js, Supabase, Node, PHP), each with how to check your app and the fix. No roundups of things you already read.

Free, one email a week. Read the latest issue first if you like. One-click unsubscribe in every email. We never sell or share addresses.