← All advisories
Advisory VV-005critical2025-07

Base44: private apps open to anyone with the app_id (Wiz)

Undocumented register and verify-OTP endpoints accepted a non-secret app_id, letting anyone create a verified account on private, SSO-only apps. Patched by Wix within 24 hours.

01.

What it is

Wiz found api/apps/{app_id}/auth/register and api/apps/{app_id}/auth/verify-otp exposed without authentication. The app_id was visible in the app URL and in manifests/{app_id}/manifest.json.

Wiz confirmed the bypass across several enterprise apps (internal chatbots, knowledge bases, PII & HR). Wix patched it server-side within 24 hours and found no evidence of exploitation; customers did not need to act.

02.

How to check

  1. No action is required for this specific bug (server-side fix).
  2. General lesson: treat IDs in URLs as public. Make sure every endpoint enforces your app’s privacy settings server-side.
03.

How to fix

  1. Fixed by Base44/Wix. For your own APIs: authorize on the server for every request, never rely on an ID being hard to guess.
// Anti-pattern: "secret" IDs as access control
app.post('/api/apps/:appId/register', register); // anyone who sees appId can call this

// Pattern: check the app's policy server-side before doing anything
app.post('/api/apps/:appId/register', async (req, res) => {
  const appCfg = await getApp(req.params.appId);
  if (appCfg.private || !appCfg.signupEnabled) return res.status(403).end();
  return register(req, res);
});
04.

Sources

The weekly email

One email a week. Only what changed.

New advisories, CVEs and fixes for Lovable, Bolt, v0, Replit, Base44 and Cursor apps. No roundups of things you already read.