El vibe coding — describir lo que querés en lenguaje natural y dejar que una IA lo construya — pasó de meme a ser la forma en que se publica buena parte de las apps web nuevas. Lovable, Cursor, Bolt, v0 y Replit convierten un prompt en un producto desplegado en una tarde.
El problema: los generadores de código con IA están optimizados para producir algo que funciona, no algo que es seguro. La app carga, la demo anda, el founder publica — y la clave de API expuesta, la base de datos con row-level security apagado y el endpoint de admin sin auth se publican junto con todo lo demás.
Por qué las apps vibe-coded son un riesgo de seguridad
- El modelo copia patrones inseguros. Los LLM se entrenan con código público, incluidos millones de tutoriales que hardcodean claves y saltean la auth "por simplicidad".
- Quien construye no lee el código. Muchos vibe coders no son técnicos. Si la IA escribe
// TODO: agregar auth, nadie agrega la auth. - Los defaults son permisivos. Un proyecto nuevo de Supabase, un CORS abierto, un bucket público — el camino fácil es el inseguro.
- Se publica al instante. No hay staging. La primera versión es la de producción, expuesta a internet.
Las 7 vulnerabilidades más comunes en vibe coding
| # | Vulnerabilidad | Qué falla |
|---|---|---|
| 1 | Secretos expuestos | Claves de API y tokens hardcodeados en el cliente o en .env commiteados |
| 2 | Auth ausente o rota | Endpoints que devuelven datos sin verificar quién pregunta |
| 3 | Row Level Security apagado | RLS de Supabase desactivado: cualquier usuario consulta cualquier fila |
| 4 | Secretos en el cliente | Claves service-role y lógica de admin enviadas al navegador |
| 5 | Sin rate limiting | Login, signup y pagos aceptan requests ilimitados |
| 6 | Input sin validar | Input del usuario que va directo a la query: inyección SQL, XSS |
| 7 | Sin headers / CORS abierto | Sin CSP/HSTS, Access-Control-Allow-Origin: * en APIs autenticadas |
Checklist de seguridad para vibe coding
- Secretos — ninguna clave en el cliente; nada de
.enven git; rotá cualquier clave expuesta. - Auth — cada endpoint de datos verifica la sesión; sin rutas de admin accesibles por usuarios normales.
- Base de datos — RLS activado en todas las tablas; políticas que limitan filas al dueño.
- Input — todo validado en el servidor; queries parametrizadas.
- Rate limiting — login, signup, reset y pagos limitados.
- Headers — HTTPS, CSP, HSTS; CORS restringido a tus propios orígenes.
Cómo escanear tu app vibe-coded
Nurbak escanea la app desplegada y detecta justo estos problemas — secretos expuestos, endpoints sin auth, tablas con RLS apagado, headers faltantes — y te da un informe priorizado. Pegás tu URL y tenés el resultado en segundos.

