SCAN YOUR CREATE.XYZ APP FOR VULNERABILITIES
ENTER YOUR CREATE.XYZ APP URL
Enter your deployed app URL to check for security vulnerabilities.
Create.xyz turns prompts into published React apps with generated databases, serverless functions, and built-in AI integrations (GPT, Claude, image models). The platform gets one important thing right by default: its built-in AI integrations are proxied server-side, so those keys never reach the browser. The risk concentrates in everything the generator builds on top of that foundation.
A generated serverless function is reachable at its public URL the moment the app is published. Prompts describe features, not access control, so a function ships answering any request until an auth check is explicitly asked for. That is compounded by database queries with no per-user scoping, custom integrations whose keys can land in the client bundle, and AI-backed functions that become free inference for anyone who finds the URL — billed to your account.
There is a Create.xyz-specific twist a scanner is built for: fixes do not always survive regeneration. Re-prompting a page or function regenerates its code, and the new code may drop the auth check or ownership filter you added last week. That makes hardening a recurring task, and a black-box scan against the published URL is the practical way to re-verify it after every edit.
Common vulnerabilities we find in Create.xyz apps
Publicly callable functions
Every generated function is an open endpoint until the prompt asks for an auth check, and the endpoint paths are discoverable in the client bundle. The exploit is a single curl from a logged-out session: curl -i https://your-app.created.app/api/getOrders should return 401, not a JSON body full of orders. The fix is to prompt for an auth check at the top of every function that reads or writes user data, and keep the intentionally public ones on an explicit list.
Unprotected AI endpoints
A function that forwards a request to GPT, Claude, or an image model is paid inference under your account. Without auth and rate limits it becomes a free LLM proxy for anyone who finds the URL — and scripts do find them. The fix is to require a session, cap requests per user per hour tracked server-side, and cap input length before forwarding to the model. This is the single most expensive gap in Create.xyz apps.
Unscoped database access
Generated queries default to fetch-by-ID with no ownership filter. That is BOLA in AI-generated CRUD: sign in as user A, copy a record ID, sign in as user B, request it, and you get user A’s data. The fix is an ownership condition on every query over user-owned data — db.orders.findOne({ id, owner_id: user.id }) — returning 404 when it does not match.
Integration keys in the bundle
The platform’s own AI integrations keep their keys server-side, but a custom integration added via prompt can be generated into a client component, shipping the secret key to every visitor. The fix is to move every secret-key call into a serverless function; only publishable client keys (Stripe publishable, referrer-restricted Maps keys) may ship in the bundle. Grep the bundle for sk-, sk_live_, AIza, and re_ prefixes with the Token Leak Checker, and rotate anything that matched.
Unsanitized rendered content
Create.xyz apps frequently render user- or AI-generated text as Markdown or raw HTML. Stored raw and rendered with dangerouslySetInnerHTML, one user’s <img src=x onerror=alert(1)> runs as script in every other viewer’s browser — stored XSS. The fix is to sanitize at render time (DOMPurify or equivalent), keep the Markdown renderer in safe mode, and treat AI output as untrusted. See LLM-rendered HTML/Markdown.
Information disclosure
Generated error handling tends to return the raw exception message, which leaks query shapes, column names, and internal paths. The fix is to schema-validate at the top of every function and return generic errors — { error: "Internal server error" } to the client, real details to server logs only.
How VibeEval works with Create.xyz
- Enter your published Create.xyz app URL. No repo access — the scan runs against the live app exactly as a visitor reaches it.
- The agent probes the app in the browser. It enumerates function endpoints from the client bundle and network traffic, calls each one logged out to find missing auth, hammers AI-backed endpoints to detect missing rate limits, replays requests across two accounts for BOLA, greps the bundle for leaked integration keys, and submits XSS payloads through user-content fields.
- You get a report you can act on. Each finding carries a severity, the request that demonstrates it, and a paste-ready fix prompt you can feed back into Create.xyz. Re-run it after every regeneration to catch what the AI silently undid.
Manual testing vs VibeEval
| Dimension | Manual review | VibeEval scan |
|---|---|---|
| Time per full pass | Hours of hand-testing every function | Minutes against the published URL |
| Open-function coverage | Depends on remembering every endpoint | Enumerates and calls every discovered function |
| AI-endpoint abuse test | Rarely scripted by hand | Automated rate-limit probing |
| Re-test after regeneration | Almost never happens at prompt pace | One click after every re-prompt |
| Bundle key / XSS checks | Manual grep and payload injection | Checked every pass |
| Business-logic correctness | Strong — a human understands intent | Not a substitute; scanner flags shapes, not intent |
Manual review is still needed for logic a scanner cannot judge — whether a given user should be allowed to perform an action at all. The scanner wins on repeatability, which is the whole game on a platform where every re-prompt can quietly regenerate away a fix you already verified.
Frequently asked questions
Does VibeEval have special support for Create.xyz?
Yes. VibeEval recognizes Create.xyz app patterns and tests for the platform’s failure modes: publicly callable functions, unmetered AI endpoints, unscoped database access, and custom integration keys that drifted into the bundle.
Should I re-scan after regenerating a page?
Yes. Re-prompting a page or function regenerates its code and can silently reintroduce a gap you already fixed — the auth check may not survive “make the dashboard faster.” Treat every regeneration like a deploy and re-scan.
What authentication issues are most common in Create.xyz apps?
Functions that answer without an auth check, ownership checks missing on ID-keyed queries, and AI endpoints callable without a session. All three are discoverable from the published bundle, which is why they get abused.
Are API keys exposed in Create.xyz apps?
The built-in AI integrations are proxied server-side, so those keys stay safe. The risk is a custom integration the generator wired into a client component, which ships the secret key in the bundle. Check the bundle, route the call through a function, and rotate any key that ever appeared client-side.
Related Create.xyz resources
- How to Secure Create.xyz — the step-by-step hardening guide behind these checks.
- Is Create.xyz Safe? — in-depth analysis of the platform’s defaults, including the regeneration problem.
- Create.xyz Security Checklist — the pre-launch checklist version.
- Token Leak Checker — find exposed API keys in your published bundle.
- BOLA in AI-generated CRUD — the ownership-check pattern in depth.
Test your Create.xyz app before launch
Run VibeEval against your published Create.xyz URL for the open-function, AI-endpoint-abuse, unscoped-data, and credential-leak patterns the generator most often leaves in — and re-run after every regeneration. Start testing before you go live.
SCAN YOUR APP
14-day trial. No card. Results in under 60 seconds.