Patrones de Vibecoding

Errores de seguridad comunes en código generado por IA con herramientas como Cursor, Copilot y Claude. El código funciona, pero muchas veces es inseguro.

10 vulnerabilidades

API Keys Hardcodeadas

critical

API keys, tokens o secretos escritos directo en el código fuente, visibles para cualquiera con acceso al repo — incluyendo repos públicos de GitHub.

CWE-798A02:2021

Sin Validación de Inputs

medium

Datos enviados por el usuario pasados directo a bases de datos o APIs externas sin ninguna validación de tipo, formato o contenido.

CWE-20A03:2021

Contraseñas en Texto Plano

critical

Contraseñas de usuarios guardadas como strings crudos en la base de datos en lugar de hashearse con bcrypt o Argon2.

CWE-256A02:2021

JWT Sin Expiración

high

JWTs firmados sin el claim `exp` que nunca expiran, lo que significa que un token robado da acceso permanente sin forma de revocarlo.

CWE-613A07:2021

Lógica de Auth Solo en Frontend

high

Mostrar u ocultar elementos de UI basándose en el rol del usuario en React, sin ninguna validación server-side — fácilmente bypasseable abriendo DevTools.

CWE-602A01:2021

Endpoints Sin Autenticación

high

API routes que realizan operaciones sensibles — leer datos de usuarios, modificar registros, eliminar recursos — sin ninguna verificación de sesión o token.

CWE-306A01:2021

Mensajes de Error Verbosos

medium

Mensajes de error detallados, stack traces o rutas internas enviados al cliente o logueados públicamente, dándole a los atacantes un mapa de tus internals.

CWE-209A05:2021

Dependencias Desactualizadas con CVEs Conocidos

medium

Paquetes npm u otras dependencias con vulnerabilidades de seguridad publicadas (CVEs) que no se han actualizado, dejando vectores de ataque conocidos abiertos en tu app.

CWE-1104A06:2021

eval() con Input de Usuario

critical

Pasar datos controlados por el usuario a eval(), new Function() o funciones similares de ejecución de código dinámico, habilitando ejecución de código arbitrario en tu servidor.

CWE-94A03:2021

Secretos en .env Commiteado

critical

Un archivo .env con credenciales reales commiteado a git, haciendo todos los secretos permanentemente accesibles para cualquiera con acceso al repo — incluso a través del historial de git.

CWE-540A02:2021