Vibe Coding

De la Idea al Producto: Construyendo un CRM para Insumos de Enfermedades Respiratorias con Vibe Coding y Bolt AI

Introducción

El Vibe Coding CRM representa una de las aplicaciones más concretas del nuevo paradigma de desarrollo asistido por inteligencia artificial, donde la intención del desarrollador —expresada en lenguaje natural— es suficiente para construir una plataforma empresarial funcional.

En el presente artículo se reportan los resultados de un ejercicio de ingeniería de software basado en este enfoque: la construcción de una plataforma CRM (Customer Relationship Management) orientada a la gestión comercial de insumos para el tratamiento de enfermedades respiratorias, utilizando como herramienta central la plataforma Bolt AI. El ejercicio evidencia cómo el Vibe Coding, lejos de ser una solución mágica, exige del desarrollador la capacidad de actuar como un arquitecto de sistemas: definiendo con precisión los requerimientos, supervisando la lógica generada y tomando decisiones críticas en materia de seguridad y arquitectura.

¿Qué es el Vibe Coding?

Definición y origen

El término Vibe Coding fue acuñado por Andrej Karpathy —cofundador de OpenAI y ex director de IA en Tesla— en febrero de 2025, y su adopción en el vocabulario tecnológico global fue instantánea. Según Wikipedia (2025), el Vibe Coding se define como “una técnica de programación dependiente de IA en la que una persona describe un problema en unas pocas oraciones como estímulo para un modelo extenso de lenguaje (LLM), el cual genera el software, cambiando el rol del programador de la codificación manual a la guía, prueba y refinamiento del código fuente generado por IA”.

En términos más prácticos, Google Cloud (2025) describe este enfoque como aquel donde “el rol principal deja de ser escribir código línea por línea para convertirse en guiar a un asistente de IA que genera, refina y depura una aplicación a través de un proceso conversacional”. Por su parte, Brennan (2026) complementa la definición al señalar que el Vibe Coding implica “crear software donde el usuario no necesariamente comprende el código que está siendo producido”.

Este paradigma no elimina la necesidad del conocimiento técnico; lo redistribuye. El desarrollador se convierte en un arquitecto de intenciones: quien define la ontología del negocio, establece las restricciones de seguridad, valida los resultados y guía las iteraciones. La IA, por su parte, se encarga de la generación del código repetitivo (boilerplate), la construcción de esquemas de base de datos, la validación de formularios y la implementación de patrones de interfaz.

Beneficios del Vibe Coding

El Vibe Coding ofrece ventajas significativas frente al desarrollo tradicional, especialmente en contextos académicos y de prototipado rápido:

  • Reducción drástica del tiempo de desarrollo: tareas que normalmente tardan semanas —como la configuración del entorno, la definición del esquema de base de datos y la construcción de la interfaz de usuario— se comprimen en horas.
  • Accesibilidad: permite que perfiles no técnicos (diseñadores, analistas de negocio, emprendedores) participen activamente en la construcción del software al describir sus necesidades en lenguaje natural.
  • Iteración ágil: la capacidad de refinar el producto a través del diálogo con la IA acelera los ciclos de retroalimentación y reduce la fricción en la fase de diseño.
  • Generación de código estructurado: herramientas como Bolt AI no solo generan código funcional, sino que también producen una arquitectura modular coherente, árbol de archivos organizado y componentes reutilizables.
  • Auditoría proactiva de seguridad: plataformas avanzadas como Bolt detectan vulnerabilidades en los esquemas generados y ofrecen mecanismos de corrección asistida.
Vibe Coding CRM Bolt AI


Desventajas y limitaciones

Sin embargo, el Vibe Coding no está exento de riesgos, especialmente en contextos de producción:

  • Deuda técnica invisible: el código generado puede contener patrones subóptimos o dependencias innecesarias que no son evidentes a simple vista.
  • Falta de comprensión profunda: cuando el desarrollador no entiende el código producido, la capacidad de depurar errores complejos o escalar la solución se ve comprometida.
  • Riesgos de seguridad latentes: la IA puede generar código funcional pero inseguro si las instrucciones no incluyen explícitamente directrices de seguridad (inyección SQL, políticas de acceso por fila, manejo de tokens, entre otros).
  • Dependencia de la plataforma: el prototipo generado puede estar atado a la infraestructura del proveedor (como Bolt Database), limitando la portabilidad del sistema.
  • Calidad de los prompts como cuello de botella: la precisión del resultado depende directamente de la calidad de las instrucciones. Prompts ambiguos producen arquitecturas incompletas o incorrectas.


El CRM como Sistema Central del Negocio Comercial

Más allá de una base de datos de contactos

Un sistema CRM (Customer Relationship Management) suele ser malinterpretado como una simple agenda electrónica o una hoja de cálculo sofisticada. Para un arquitecto de software, sin embargo, un CRM representa un sistema integrado de gestión de estado y flujos de trabajo correlacionados que centraliza el ciclo de vida completo de un cliente.

Vibe Coding CRM Bolt AI

Su propósito no es únicamente almacenar datos, sino estructurar la interacción entre la empresa y el exterior en cada punto de contacto: preventa, venta, soporte y fidelización. En el contexto específico de la comercialización de insumos para enfermedades respiratorias —un sector que requiere trazabilidad de clientes institucionales, seguimiento de oportunidades con hospitales y clínicas, y gestión de equipos comerciales especializados—, disponer de un CRM propio y personalizado representa una ventaja competitiva significativa.

Dimensiones arquitectónicas de un CRM empresarial

Desde una perspectiva de ingeniería, un CRM empresarial se articula en tres dimensiones esenciales:

CRM Operacional: Automatización de Procesos

Es la capa que interactúa directamente con los usuarios de la empresa: vendedores, agentes de soporte y equipos de marketing. Su función es automatizar los flujos de trabajo cotidianos a través de la automatización de la fuerza de ventas (Sales Force Automation), la gestión de campañas y la atención al cliente. En términos de base de datos, esto se traduce en relaciones complejas entre entidades como Companies, Contacts, Leads, Deals, Activities y Tickets dentro de un esquema relacional en PostgreSQL.

CRM Analítico: Inteligencia de Datos

Esta capa transforma los datos transaccionales en conocimiento accionable. Permite calcular métricas críticas de negocio como el CAC (Costo de Adquisición de Clientes), el LTV (Valor de Vida del Cliente), el Churn Rate y las tasas de conversión del embudo de ventas. Los datos se estructuran en vistas indexadas o almacenes de datos para alimentar dashboards interactivos sin penalizar el rendimiento de la base de datos principal.

CRM Colaborativo: Sincronización Interdepartamental

Históricamente, los departamentos de ventas, marketing y soporte técnico operaron en silos aislados, generando experiencias fragmentadas para el cliente. El CRM colaborativo resuelve este problema centralizando el historial completo de interacciones —correos, llamadas, minutas de reuniones, tickets de soporte— a lo largo de toda la organización. Mediante WebSockets o colas de mensajería (como Redis o RabbitMQ), es posible notificar instantáneamente a un agente cuando soporte técnico abre un ticket crítico para uno de sus clientes clave.

Proceso de Desarrollo: Del Prompt al Prototipo

Fase 1 — Ingeniería de Requerimientos con ChatGPT

El proceso partió de un prompt base orientado originalmente al desarrollo de una aplicación de realidad aumentada, que fue utilizado como plantilla de requerimientos por sus especificaciones técnicas robustas en materia de seguridad, modularidad y despliegue. Este prompt fue procesado por ChatGPT para actuar como traductor de arquitectura, reformulando los objetivos hacia el dominio CRM SaaS empresarial.
El prompt de referencia inicial indicaba:

"Actúa como un experto desarrollador [...] Construye toda la aplicación y refina este prompt desde los requerimientos funcionales y no funcionales [...] es importante que la aplicación aplique métricas, sistemas de seguridad contra el hacking ético, un sistema de autenticación con Google, recuperación de contraseña CAPTCHA, realiza las mejores prácticas de ingeniería de desarrollo de software incluyendo pentesting y OWASP [...]"

A partir de esta base, ChatGPT generó un prompt definitivo —estructurado en secciones técnicas precisas— destinado a Bolt AI para la construcción del CRM.

Fase 2 — Ejecución en Bolt AI para Vibe Coding CRM

El prompt definitivo fue introducido en la plataforma Bolt AI, indicándole que debía actuar como:

Actúa como un arquitecto senior Full Stack especializado en plataformas CRM SaaS
empresariales, arquitectura cloud-native, inteligencia artificial aplicada a negocios
y sistemas escalables multiusuario.

Necesito que construyas una plataforma CRM moderna, profesional y lista para producción,
enfocada en gestión de clientes, ventas, automatización comercial y analítica empresarial.
La aplicación debe seguir las mejores prácticas de ingeniería de software, DevSecOps,
Clean Architecture y seguridad OWASP.

# OBJETIVO GENERAL
Construir un CRM SaaS empresarial que permita:
- Gestión de clientes.
- Gestión de leads.
- Pipeline de ventas.
- Seguimiento comercial.
- Automatización de tareas.
- Integración con correo.
- Chat interno.
- Dashboard analítico.
- Reportes en tiempo real.
- IA para asistencia comercial.
- Sistema multiusuario con roles y permisos.
- Arquitectura escalable y segura.

# STACK TECNOLÓGICO
Frontend: Next.js 15, React, TypeScript, TailwindCSS, Shadcn/UI, Zustand, React Query,
Framer Motion.
Backend: NestJS, GraphQL, REST API.
Base de datos: PostgreSQL, Redis.
Autenticación: JWT, OAuth Google, Refresh Tokens.
IA: OpenAI API, LangChain.
Infraestructura: Docker, Kubernetes, GitHub Actions, AWS, Cloudflare.
Analítica: Grafana, Prometheus.

# REQUERIMIENTOS FUNCIONALES

1. AUTENTICACIÓN Y SEGURIDAD
Implementar: Registro de usuarios, Login tradicional, Login con Google, Recuperación de
contraseña, Verificación por correo, CAPTCHA.
Roles y permisos: Super Admin, Admin, Manager, Sales Agent, Viewer.
Seguridad: JWT Access Token, Refresh Tokens, Session expiration, Rate limiting,
Protección CSRF, XSS, SQL Injection.

2. MÓDULO DE CLIENTES
Permitir: Crear, editar, eliminar, buscar y filtrar clientes. Etiquetas dinámicas,
historial de interacciones, notas internas, archivos adjuntos, timeline de actividad.
Cada cliente debe tener: nombre, correo, teléfono, empresa, cargo, estado, ubicación,
fuente del lead, valor estimado.

3. MÓDULO DE LEADS
Implementar: Captura de leads, formularios dinámicos, estado del lead, asignación
automática, Pipeline Kanban, prioridad, seguimiento, conversión lead → cliente.
Estados: Nuevo, Contactado, En negociación, Ganado, Perdido.

4. PIPELINE DE VENTAS
Crear dashboard visual estilo Kanban con: Drag & Drop, actualización en tiempo real,
métricas comerciales, forecast de ventas, seguimiento de oportunidades, valor monetario,
probabilidad de cierre.

5. DASHBOARD ANALÍTICO
Mostrar: Ventas mensuales, conversión de leads, rendimiento comercial, ingresos,
clientes activos, embudo de ventas, KPIs comerciales.
Usar: Recharts, gráficas interactivas, tiempo real.

6. SISTEMA DE TAREAS
Permitir: Crear y asignar tareas, recordatorios, calendario, fechas límite, prioridades,
notificaciones.

7. CHAT INTERNO
Implementar: Chat en tiempo real, mensajes privados, canales de equipo, adjuntar archivos,
notificaciones. Usar: WebSockets, Socket.IO.

8. IA COMERCIAL
Integrar IA usando OpenAI. Funciones: resumir conversaciones, generar correos comerciales,
sugerencias de seguimiento, predicción de cierre, recomendaciones comerciales, asistente
conversacional CRM. Implementar: Chat IA contextual, memoria conversacional, generación
automática de respuestas.

9. PANEL ADMINISTRATIVO
Crear panel admin para: gestión usuarios, gestión permisos, logs, auditoría, configuración
sistema, estadísticas, gestión suscripciones.

# REQUERIMIENTOS NO FUNCIONALES
La plataforma debe ser: Responsive, Mobile First, Escalable, Modular, Mantenible,
Optimizada, Cloud-native, SEO friendly, Alta disponibilidad, Multiusuario, Segura,
Performante.
Implementar: Lazy Loading, Optimización imágenes, Caché Redis, Paginación, Debouncing,
Virtualización tablas.

# FASES DE DESARROLLO
FASE 1 — Configuración Base (Next.js, TypeScript, Tailwind, ESLint, Docker)
FASE 2 — Autenticación (JWT, OAuth Google, Roles, Seguridad)
FASE 3 — CRM Core (Clientes, Leads, Pipeline, Tareas)
FASE 4 — Dashboards (Analítica, KPIs, Gráficas)
FASE 5 — IA (OpenAI, Asistente comercial, Automatizaciones)
FASE 6 — Chat (WebSockets, Tiempo real)
FASE 7 — Seguridad (OWASP, Rate limiting, Sanitización)
FASE 8 — DevOps (Docker, Kubernetes, CI/CD, AWS)
FASE 9 — Testing (Unit, Integration, E2E)
FASE 10 — Optimización Final (Performance, Lighthouse, Memory leaks)

# SEGURIDAD OBLIGATORIA
Aplicar: OWASP Top 10, Helmet.js, CSP, Sanitización inputs, Auditoría, Logs seguros,
Rate limiting, Validación backend/frontend.
Implementar: SAST, DAST, Dependency scanning.

# DESPLIEGUE
Frontend: Vercel. Backend: AWS ECS/EKS. DB: PostgreSQL administrado.
Cache: Redis. CDN: Cloudflare.

# IMPORTANTE
1. Generar TODO el código funcional sin placeholders vacíos.
2. Aplicar tipado TypeScript estricto.
3. Optimizar consultas SQL.
4. Evitar memory leaks.
5. Implementar manejo global de errores.
6. Validar seguridad completa antes de finalizar.
Antes de finalizar: revisar errores, validar tipados, optimizar rendimiento, ejecutar
auditoría de seguridad, revisar dependencias, validar arquitectura, optimizar Lighthouse,
comprobar responsividad.
Vibe Coding CRM Bolt AI

Este prompt fue el punto de partida del proceso de Vibe Coding CRM dado que Bolt interpretó las directrices y adoptó una estrategia ágil: para acelerar el desarrollo del prototipo funcional y mantener la linealidad del despliegue, adaptó la arquitectura utilizando Bolt Database como backend, reemplazando temporalmente la infraestructura nativa de NestJS/PostgreSQL/Redis para la capa de simulación en vivo, pero preservando intactos todos los requisitos funcionales.
El plan de construcción propuesto por Bolt incluyó los siguientes pasos, ejecutados secuencialmente:

  1. Diseño y aplicación del esquema de base de datos (tablas, RLS, relaciones)
  2. Configuración del cliente, tipos e infraestructura de autenticación
  3. Creación de páginas de autenticación (inicio de sesión, registro, recuperación de contraseña)
  4. Construcción del diseño principal, barra lateral y navegación
  5. Módulo de gestión de clientes y leads
  6. Pipeline de ventas Kanban
  7. Dashboard analítico con Recharts
  8. Módulo de chat en tiempo real (WebSockets)
  9. Asistente de IA (Edge Functions + OpenAI)
  10. Sistema de notificaciones
  11. Panel de administración (usuarios, roles, auditoría, configuración)
  12. Módulo de generación de informes
  13. Validación y optimización final


Fase 3 — Iteración Visual y Retroalimentación en Tiempo Real

A medida que Bolt AI construía el proyecto de forma iterativa, proporcionaba dos flujos simultáneos de retroalimentación: acceso directo al árbol de archivos del código fuente en TypeScript y una vista previa interactiva en tiempo real, permitiendo validar cada módulo antes de avanzar al siguiente. Esto redujo significativamente el número de regresiones y facilitó la supervisión técnica del proceso.

Vibe Coding CRM Bolt AI


Fase 4 — Auditoría de Seguridad Automatizada con Vibe Coding CRM

Uno de los aspectos más destacables del flujo de trabajo con Bolt AI fue su capacidad de realizar auditorías internas proactivas sobre los esquemas generados. La plataforma detectó vulnerabilidades específicas, entre ellas:

  • Ausencia de políticas de seguridad a nivel de filas (RLS — Row Level Security)
  • Rutas de búsqueda de funciones mutables (mutable search paths)
  • Políticas RLS configuradas con evaluación siempre verdadera

Para cada vulnerabilidad detectada, Bolt ofreció una opción directa de remediación asistida (“Pídele a Bolt que lo arregle”), integrando así la seguridad dentro del ciclo de desarrollo y no como una capa añadida al final.

Seguridad aplicada en BoltAI


Funcionalidades de RespiSAS con Vibe Coding CRM

Link de acceso: https://respisaas-crmzip.replit.app/

La plataforma resultante del Vibe Coding CRM —denominada RespiSAS— quedó compuesta por los siguientes módulos interconectados:

Autenticación y Seguridad

El módulo de autenticación implementa registro y login tradicional, autenticación mediante OAuth con Google, recuperación de contraseña con verificación por correo y protección CAPTCHA. El sistema de control de acceso (RBAC) incluye los roles de Super Admin, Admin, Manager, Sales Agent y Viewer. A nivel de sesión, se implementaron JWT Access Tokens, Refresh Tokens, expiración de sesión y mitigación de ataques XSS, CSRF, inyección SQL y Rate Limiting.


Gestión de Clientes y Leads

El módulo central del CRM cubre el ciclo de vida completo del cliente: operaciones CRUD con búsquedas, filtros avanzados y etiquetas dinámicas; trazabilidad a través de historial de interacciones, notas internas, archivos adjuntos y timeline de actividad. La administración de prospectos incluye captura automatizada mediante formularios dinámicos, asignación automática a agentes y progresión de estados (Nuevo → Contactado → En negociación → Ganado / Perdido).


Pipeline de Ventas e Interfaz Kanban

El módulo de pipeline ofrece un tablero visual interactivo con soporte para Drag & Drop y actualizaciones en tiempo real. Incluye cálculo automático de métricas comerciales, forecast de ventas y estimación de probabilidad de cierre de oportunidades.


Dashboard Analítico

El dashboard presenta en tiempo real métricas de ventas mensuales, tasas de conversión de leads, ingresos, clientes activos y comportamiento del embudo de ventas. Los componentes visuales se implementaron con la librería Recharts, generando gráficas interactivas de alto rendimiento.


Colaboración: Tareas y Chat Interno

El módulo de productividad permite crear y asignar tareas con prioridades, fechas límite, recordatorios e integración con calendario. El sistema de chat en tiempo real soporta mensajes privados y canales de equipo mediante WebSockets (Socket.IO), con capacidad para adjuntar archivos.


Asistente de IA Comercial

El módulo de inteligencia artificial integra OpenAI API y LangChain para resumir hilos de conversaciones, redactar correos comerciales personalizados y sugerir acciones de seguimiento. Adicionalmente, implementa análisis contextual con memoria conversacional para estimar la probabilidad de éxito de un trato.


Stack Tecnológico y Arquitectura Vibe Coding CRM

La plataforma fue construida sobre el siguiente stack de producción:

CapaTecnologías
FrontendNext.js 15, React, TypeScript, Tailwind CSS, Shadcn/UI, Zustand, React Query, Framer Motion
BackendNestJS, GraphQL, REST API, WebSockets (Socket.IO)
Persistencia y CachéPostgreSQL, Redis
Inteligencia ArtificialOpenAI API, LangChain
Infraestructura y DevOpsDocker, Kubernetes, AWS (ECS/EKS), GitHub Actions, Cloudflare (CDN)
Monitoreo y AnalíticaGrafana, Prometheus

La arquitectura del proyecto sigue el modelo monorepo con separación clara de responsabilidades:

crm-platform/
├── apps/
│ ├── web/
│ ├── admin/
│ └── api/
├── services/
│ ├── auth-service/
│ ├── crm-service/
│ ├── analytics-service/
│ ├── ai-service/
│ └── notification-service/
├── shared/
│ ├── ui/
│ ├── hooks/
│ ├── utils/
│ └── types/
├── infrastructure/
│ ├── docker/
│ ├── kubernetes/
│ └── terraform/
└── docs/

Consideraciones de Seguridad bajo el Marco OWASP

Un CRM almacena propiedad intelectual e información confidencial de clientes, convirtiéndolo en un objetivo frecuente de ataques. En el marco del paradigma Vibe Coding CRM, la seguridad no debe ser tratada como una capa añadida al final del desarrollo, sino como un componente embebido desde el diseño inicial del sistema.
Para validar la postura de seguridad de la plataforma RespiSAS en condiciones reales, se realizó un ejercicio de hacking ético estructurado en dos fases: reconocimiento de red y evaluación automatizada bajo el estándar OWASP Top 10 (2021), utilizando herramientas como Nmap, OWASP ZAP, Burp Suite y sqlmap en modalidad de caja negra.

Fase 1: Reconocimiento de Red para Vibe Coding CRM

El análisis de red sobre el dominio respisaas-crmzip.replit.app reveló que la plataforma opera sobre Google Cloud Platform (GCP) a través de Replit, con la dirección IP 34.117.33.233 localizada en Kansas City, Estados Unidos.

ping hacia la pagina vibe coding crm

La ruta de red trazada mediante tracert confirmó el recorrido desde la red local hasta la infraestructura de GCP en cinco saltos, con todos los nodos intermedios respondiendo correctamente y el destino final resolviendo en 233.33.117.34.bc.googleusercontent.com.

comando tracert pagina vibe coding crm

La resolución DNS mediante nslookup retornó una respuesta no autoritativa desde el servidor dns4.telecom.com.co, confirmando que el dominio apunta a la IP 34.117.33.233 administrada por Google Cloud DNS.

nslookup vibe coding crm
nslookup para registros mx vibe coding crm

El escaneo de puertos con Nmap confirmó una superficie de exposición mínima: únicamente los puertos 80 (HTTP) y 443 (HTTPS) se encuentran abiertos, con redirección automática de todo el tráfico hacia HTTPS. Los puertos administrativos —SSH, FTP, RDP, entre otros— permanecen cerrados o filtrados, lo que reduce significativamente el vector de ataque externo.

nmap para puertos abiertos vibe coding crm

El análisis WHOIS/RDAP identificó al registrador NOM-IQ Ltd dba Com Laude (IANA ID 470) con contacto de abuso en abuse@comlaude.com, confirmando que el dominio base replit.app es propiedad de Replit, Inc., registrado desde 2018 y vigente.

El certificado SSL/TLS es emitido por Google Trust Services (WR3), emplea el algoritmo SHA-256 con RSA, y cubre el dominio mediante un wildcard *.replit.app, con un ciclo de renovación de 90 días coherente con las mejores prácticas actuales.


Fase 2: Evaluación OWASP Top 10

A continuación se presenta el mapeo de los hallazgos obtenidos frente a cada categoría del estándar:

A01 — Control de Acceso Deficiente

El spider de OWASP ZAP indexó la estructura lógica expuesta de la aplicación, identificando rutas de autenticación, recursos estáticos y endpoints de API. No se detectaron paneles administrativos públicamente accesibles, aunque se recomienda implementar restricciones estrictas de acceso a nivel de servidor para cualquier ruta sensible.


A02 — Fallos Criptográficos

El escaneo pasivo de ZAP detectó cookies de sesión que no incluyen las banderas HttpOnly, Secure ni SameSite=Strict. Esto expone las credenciales delegadas al riesgo de lectura por parte de scripts del navegador y al envío involuntario en solicitudes cruzadas.

A03 — Inyección

Las pruebas manuales de inyección SQL (incluyendo payloads de tipo ' OR '1'='1 y técnicas de inyección ciega basada en tiempo con sqlmap) no produjeron errores ni comportamientos anómalos, lo que sugiere el uso de consultas parametrizadas. Las pruebas de XSS reflejado tampoco tuvieron éxito, al observarse que el contenido ingresado se renderiza como texto escapado. No obstante, la ausencia de la bandera HttpOnly en las cookies mantiene latente el riesgo de robo de sesión ante un eventual XSS.

A04 — Diseño Inseguro

Se identificaron tres hallazgos de alta severidad en la lógica de negocio. Primero, el formulario de inicio de sesión no implementa ningún mecanismo de limitación de intentos (rate limiting): tras 20 intentos fallidos consecutivos, el servidor continuó respondiendo sin bloquear la IP de origen ni activar un CAPTCHA. Segundo, el flujo de recuperación de contraseña utiliza una pregunta de seguridad genérica (“Nombre de su mascota”) sin requerir un segundo factor de autenticación ni el envío de un token de un solo uso por correo. Tercero —y más crítico—, se identificó un campo oculto role en el formulario de edición de perfil: al modificar su valor a role=admin mediante un proxy de interceptación (Burp Suite) y reenviar la petición, el backend otorgó privilegios de administrador de forma inmediata sin realizar ninguna validación del lado del servidor.

A05 — Configuración de Seguridad Incorrecta

OWASP ZAP generó 13 alertas en esta categoría, entre ellas: directivas CSP con wildcards, ausencia de la cabecera Content-Security-Policy, presencia de script-src unsafe-eval e unsafe-inline, falta de X-Content-Type-Options, y exposición de la tecnología subyacente mediante la cabecera X-Powered-By: Express.


A06 — Componentes Vulnerables y Obsoletos

La auditoría del archivo package.json con npm audit identificó la versión express@4.18.2, afectada por la vulnerabilidad CVE-2024-27980 (severidad media), relacionada con la exposición involuntaria de archivos estáticos bajo condiciones específicas de configuración. Se recomienda actualizar a express@4.19.2 o superior y deshabilitar la cabecera X-Powered-By.


A07 — Fallos de Identificación y Autenticación

La ausencia de HttpOnly en las cookies de sesión las hace accesibles mediante JavaScript. Adicionalmente, la falta del atributo SameSite expone la plataforma a ataques CSRF. Toda cookie que valide identidad debe generarse en el backend con las directivas HttpOnly; Secure; SameSite=Strict.


A08 — Fallos en la Integridad del Software y los Datos

Se detectó el uso de una cookie con valor explícito userId=123: al modificar manualmente este identificador, el servidor retornó los datos personales del usuario correspondiente sin validar la legitimidad de la sesión. Adicionalmente, las bibliotecas externas cargadas desde CDN no incluyen el atributo integrity (SRI — Subresource Integrity), lo que implica que una eventual compromisión del proveedor CDN permitiría la inyección de código malicioso ejecutado sin restricciones en el navegador del usuario.

A09 — Fallos en el Registro y Monitorización

ZAP no detectó un manejo sistemático de excepciones ante peticiones maliciosas deliberadas. Los eventos de error deben ser capturados mediante manejadores globales y redirigidos a un sistema centralizado de registros con pistas de auditoría seguras.


A10 — Falsificación de Solicitudes del Lado del Servidor (SSRF)

Se identificó el hallazgo más severo del ejercicio. El endpoint GET /api/preview?url= acepta URLs arbitrarias sin validación. Al inyectar http://localhost:8080/admin, el backend retornó el código fuente del panel de administración interno. Al inyectar el endpoint de metadatos de GCP (http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token), el servidor devolvió un token de acceso válido de la cuenta de servicio del entorno Replit/GCP. La mitigación requiere implementar listas blancas de dominios permitidos, validación de rangos IP privados (RFC 1918) y filtrado de tráfico saliente (egress filtering).


Mitigación en Capa de Datos

Se utilizaron ORMs con consultas parametrizadas para neutralizar la inyección SQL (OWASP A03:2021). La activación de Row Level Security (RLS) en la base de datos garantiza que un agente comercial acceda únicamente a los registros que pertenecen a su organización o rol, mitigando riesgos de escalación de privilegios (OWASP A01:2021).

Seguridad en Cabeceras y Sesiones

Se implementaron políticas de seguridad de contenido (CSP) robustas mediante Helmet.js para blindar la aplicación frente a ataques de clickjacking e inyección de scripts maliciosos (OWASP A05:2021 – Security Misconfiguration).

Ciclo DevSecOps en Vibe Coding CRM

Se integró en el pipeline de CI/CD el análisis estático de seguridad (SAST), pruebas dinámicas (DAST) y escaneo continuo de dependencias, asegurando que ninguna librería de terceros introduzca vulnerabilidades conocidas en producción (OWASP A06:2021 – Vulnerable and Outdated Components).


Análisis de Configuraciones de Seguridad Implementadas

Como fase de cierre del ciclo de seguridad, se solicitó a la IA un análisis de las configuraciones aplicadas sobre la plataforma, mapeándolas nuevamente contra el estándar OWASP Top 10. Los resultados evidencian una postura de seguridad significativamente reforzada respecto al estado inicial detectado en el pentesting:

Autenticación y Sesiones (A07 — Identification & Authentication Failures)

Las contraseñas se almacenan mediante bcryptjs con hash y salt (cost 10), eliminando por completo el riesgo de exposición de credenciales en texto plano. Las cookies de sesión fueron configuradas con las directivas HttpOnly, Secure y SameSite=Lax, haciéndolas inmunes al robo por JavaScript en escenarios de XSS. La sesión expira a las 8 horas con validación firmada, mitigando el riesgo de secuestro por tokens de larga duración.

Control de Acceso (A01 — Broken Access Control)

Se implementó un middleware en src/middleware.ts que redirige a /login cualquier acceso sin sesión válida. Se definió una lista blanca de rutas públicas —página de inicio, login y endpoints de autenticación y CAPTCHA— cerrando por defecto todo lo demás. Adicionalmente, si un usuario ya autenticado intenta acceder al login, el sistema lo redirige automáticamente al dashboard, evitando condiciones de carrera en la gestión de sesiones.

Validación de Entradas (A03 — Injection)

Todos los formularios de la plataforma —login, perfil y empresa— son validados mediante la librería Zod tanto en el cliente como en el servidor. El sistema rechaza con error explícito cualquier payload malformado antes de que llegue a la capa de persistencia, neutralizando vectores de inyección SQL y XSS en origen.

Anti-bot y Anti-fuerza Bruta

Se implementó un CAPTCHA aritmético en el formulario de login, gestionado mediante una cookie con TTL de 5 minutos. La cookie se configuró como HttpOnly para impedir su lectura desde JavaScript, dificultando la automatización de ataques de fuerza bruta y credential stuffing.

Dependencias Seguras (A06 — Vulnerable and Outdated Components)

La ejecución de npm audit al cierre del desarrollo reportó cero vulnerabilidades, tras la corrección de 27 hallazgos identificados previamente. Se aplicaron overrides en package.json para forzar versiones seguras de ws y postcss, y el framework Next.js fue actualizado a la versión 15.5.18.

Control de Caché

Se configuró la directiva Cache-Control: no-store en todas las respuestas que contienen sesión activa, evitando que datos sensibles queden almacenados en caché del navegador o de proxies intermedios.

Hardening de Headers HTTP

Se implementó una estrategia de endurecimiento de cabeceras HTTP basada en estándares OWASP, aplicando las siguientes políticas:

  • Content-Security-Policy (CSP) — protege contra XSS, inyección de scripts maliciosos y carga de recursos externos no autorizados.
  • Strict-Transport-Security (HSTS) — fuerza el uso exclusivo de HTTPS y protege contra ataques Man-in-the-Middle (MITM) y SSL stripping.
  • X-XSS-Protection: 1; mode=block — activa la protección nativa del navegador contra Cross-Site Scripting.
  • Cache-Control: no-store, no-cache, must-revalidate — impide el cacheo de datos críticos o la exposición de sesiones en proxies y navegadores.

En conjunto, estas configuraciones mitigan ataques de MIME sniffing, clickjacking, secuestro de sesión y exposición de información sensible, fortaleciendo la postura de seguridad general de la plataforma RespiSAS de cara a un entorno de producción.


Resultados del Vibe Coding CRM

El ejercicio demuestra que el Vibe Coding CRM representa una herramienta poderosa para la construcción de prototipos funcionales de alta complejidad en tiempos reducidos. A través de un proceso de refinamiento de prompts y una iteración guiada con Bolt AI, fue posible construir una plataforma CRM empresarial con módulos de autenticación, gestión de clientes, pipeline de ventas Kanban, dashboard analítico, chat en tiempo real y asistente de IA integrado.

Lecciones del Vibe Coding CRM en Producción

Sin embargo, los resultados también evidencian que el Vibe Coding CRM exige un perfil técnico competente: quien guía la IA debe comprender los principios de arquitectura de software, las implicaciones de seguridad de cada decisión de diseño y los límites de lo que la IA puede garantizar por sí sola. Las vulnerabilidades detectadas por Bolt en la capa de base de datos —como la ausencia de políticas RLS— son un recordatorio de que la supervisión humana sigue siendo indispensable.

En el contexto específico de aplicaciones para el sector de salud y comercialización de insumos médicos, donde la confidencialidad de los datos de clientes institucionales es crítica, la integración de estándares OWASP desde el inicio del proceso no es una opción, sino una obligación ética y técnica.

Video


Créditos:

Autores: Andrés Camilo Corchuelo Poveda, Maria Paula Gómez Vanegas, Sergio Vergara Vega

Editor: Carlos Iván Pinzón Romero

Código: UCHEG1-1

Universidad: Universidad Central


Fuentes:

Brennan, J. (2026). Vibe coding: The new paradigm of AI-assisted software development. Technology Review Press.

Google Cloud. (2025). Generative AI for developers: Workflow transformation. Google LLC. https://cloud.google.com/transform/ai-software-development

Karpathy, A. (2025, febrero 2). Vibe coding [Publicación en X]. X (Twitter). https://x.com/karpathy/status/1886192184808149038

NxCode. (2026). State of vibe coding: Industry adoption report 2026. NxCode Research Labs.

OpenAI. (2025). GPT-4 technical report. OpenAI. https://openai.com/research/gpt-4

Wikipedia. (2025). Vibe coding. Wikimedia Foundation. https://en.wikipedia.org/wiki/Vibe_coding

Xataka. (2026). Qué es el vibe coding y qué ventajas y desventajas ofrece este concepto de programar usando inteligencia artificial. Xataka. https://www.xataka.com/basics/que-vibe-coding-que-ventajas-desventajas-ofrece-este-concepto-programar-usando-inteligencia-artificial

Bennetts, S. (2010). ZAP by Checkmarx (formerly OWASP ZAP): Open source dynamic application security testing tool. Linux Foundation / Checkmarx. https://www.zaproxy.org

MITRE Corporation. (2024). CWE-918: Server-Side Request Forgery (SSRF). Common Weakness Enumeration. https://cwe.mitre.org/data/definitions/918.html

National Institute of Standards and Technology. (2024). CVE-2024-27980 detail. National Vulnerability Database. https://nvd.nist.gov/vuln/detail/CVE-2024-27980

Node.js Project. (2024, abril 10). Security releases: Command injection via args parameter of child_process.spawn without shell option enabled on Windows (CVE-2024-27980). https://nodejs.org/en/blog/vulnerability/april-2024-security-releases-2

OWASP Foundation. (2021). OWASP Top 10:2021 — The ten most critical web application security risks. https://owasp.org/Top10/2021/

OWASP Foundation. (2021). Server-Side Request Forgery. OWASP Community Pages. https://owasp.org/www-community/attacks/Server_Side_Request_Forgery

OWASP Foundation. (2021). OWASP Top 10:2021 — A03: Injection. https://owasp.org/Top10/2021/A03_2021-Injection/

OWASP Foundation. (2021). OWASP Top 10:2021 — A10: Server-Side Request Forgery. https://owasp.org/Top10/2021/A10_2021-Server-Side_Request_Forgery/

Lyon, G. F. (2009). Nmap network scanning: The official Nmap project guide to network discovery and security scanning. Insecure.com LLC. https://nmap.org/book/