Auditoría de código fuente: qué es y cómo se hace
Una auditoría de código fuente es la revisión del código de tu aplicación por alguien que no lo escribió, para encontrar fallas de seguridad, errores, partes frágiles y riesgos de mantenimiento, y entregarte una lista priorizada de qué corregir. A diferencia de probar la app desde fuera, aquí se lee cómo está hecha por dentro: cómo valida el login, cómo consulta la base de datos, dónde guarda llaves y qué librerías usa.
Qué se revisa en una auditoría de código de una aplicación
Seguridad
- Autenticación y permisos: que cada ruta del servidor verifique quién llama y si puede hacer lo que pide.
- Inyecciones: consultas a la base de datos armadas pegando texto del usuario, comandos del sistema, HTML sin escapar.
- Secretos: llaves o contraseñas escritas en el código o en el historial de Git.
- Manejo de archivos: subidas sin validar tipo y tamaño.
- Configuración de la base de datos: en Supabase, las políticas RLS y las funciones con privilegios.
- Pagos y webhooks: que se verifique la firma de Stripe o Mercado Pago, que el precio venga del servidor y no del navegador.
Calidad y mantenimiento
- Código duplicado o muerto.
- Funciones gigantes que nadie entiende.
- Falta de pruebas en lo crítico (cobros, permisos).
- Manejo de errores: ¿la app falla en silencio o avisa?
- Estructura: ¿se puede seguir construyendo encima sin romper todo?
Dependencias
- Librerías con vulnerabilidades conocidas.
- Paquetes abandonados o innecesarios.
- Versiones muy viejas del framework.
Herramientas que se usan (y su límite)
| Tipo | Ejemplos | Qué encuentra |
|---|---|---|
| Auditoría de dependencias | npm audit, pip-audit, Dependabot |
Librerías con fallas conocidas |
| Búsqueda de secretos | gitleaks, secret scanning de GitHub | Llaves en el código y en el historial |
| Análisis estático (SAST) | Semgrep, CodeQL | Patrones peligrosos conocidos |
| Linters | ESLint, Ruff | Errores comunes y estilo |
Puedes correr algunos tú mismo:
# Dependencias con fallas conocidas (proyectos de Node)
npm audit --omit=dev
# Buscar llaves en el repositorio y su historial
gitleaks detect --source . -v
El límite: estas herramientas encuentran patrones conocidos, pero no entienden tu negocio. No saben que un vendedor no debe ver las comisiones de otro, o que el descuento no debe pasar de 20%. Esas fallas de lógica, que son las más dañinas en apps hechas con IA, solo se encuentran leyendo el código con criterio.
Cómo se hace, paso a paso
- Acuerdo y alcance: qué repositorios, qué partes son prioritarias, confidencialidad.
- Contexto: qué hace la app, quiénes la usan, qué datos maneja, dónde está publicada.
- Acceso de lectura al repositorio y, si se puede, a un entorno de pruebas.
- Revisión automática con las herramientas de arriba.
- Revisión manual de las rutas críticas: login, permisos, pagos, carga de archivos, panel de admin.
- Informe con hallazgos, gravedad, ubicación en el código y cómo corregir.
- Re-revisión de las correcciones.
Código hecho con IA: lo que más aparece
Cuando el código lo generaron Lovable, Bolt, Cursor, v0 o un chat de IA, se repiten ciertos patrones:
- Permisos solo en la pantalla: el botón está oculto, pero la API acepta la petición de cualquiera.
- Llaves secretas en el frontend “para que funcionara”.
- Políticas RLS con
using (true). - Mismo código copiado cinco veces con pequeñas diferencias, que se rompe al cambiar una.
- Errores tragados (
catch {}vacío) que esconden fallas. - Dependencias agregadas de más.
Puedes reconocer algunos con cómo detectar código hecho con IA, y ver cómo corregirlos en corregir código con IA.
Cómo prepararte
- Ten el código en un repositorio (GitHub, GitLab). Si está solo en Lovable o Bolt, conéctalo primero: conectar Lovable a GitHub.
- Junta las credenciales de un entorno de prueba y cuentas con distintos roles.
- Haz una lista de lo que más te preocupa (pagos, datos de clientes, admin).
- Ten a la mano dónde está publicada y qué servicios usa (Supabase, Stripe, etc.).
Qué esperar del resultado
No esperes “tu código está perfecto”; casi ningún código lo está. Lo útil es saber:
- Qué es crítico y debe corregirse antes de seguir.
- Qué es importante pero puede planearse.
- Qué es mejora a mediano plazo.
Y si vale la pena seguir construyendo sobre esa base o conviene rehacer partes.
Auditoría de código, pentest y revisión de código: diferencias
Se confunden mucho y no sustituyen una a la otra:
| Revisión | Qué mira | Cuándo sirve |
|---|---|---|
| Auditoría de código fuente | El código por dentro: lógica, permisos, secretos, dependencias | Antes de lanzar, al heredar un proyecto o tras construirlo con IA |
| Pentest (prueba de penetración) | La app desde fuera, como la vería un atacante, con permiso del dueño | Para confirmar qué se puede explotar en el sistema publicado |
| Revisión de código (code review) | Cada cambio nuevo antes de integrarlo | En el día a día de un equipo |
Una auditoría encuentra problemas que un pentest no alcanza a ver (por ejemplo, una función peligrosa que hoy no está conectada a ninguna pantalla), y un pentest encuentra fallas de configuración del servidor que no están en el código. Si te interesa la parte externa, lee sobre pentesting en México.
Cuándo conviene hacer una auditoría de código
- Vas a lanzar con usuarios reales, pagos o datos personales.
- Heredaste el proyecto de un freelancer o agencia y no sabes qué hay dentro.
- La app la construyó una IA casi por completo y nadie ha leído el código.
- Vas a buscar inversión o vender la empresa: es común que te pregunten por el estado técnico del producto.
- Hubo un incidente (datos filtrados, cobros raros) y necesitas saber si hay más huecos.
Si tu duda principal es el costo, revisa cuánto cuesta una auditoría de seguridad informática y qué debe traer el informe de auditoría.
En resumen
Una auditoría de código fuente lee tu aplicación por dentro para encontrar fallas de seguridad, errores y riesgos de mantenimiento que no se ven usando la app. Las herramientas automáticas ayudan, pero las fallas de lógica solo se encuentran con revisión humana. Si tu app la construyó una IA y quieres saber si es segura y mantenible antes de crecerla, en Black Engine lo revisamos contigo por WhatsApp; también puedes ver qué incluye una auditoría de seguridad web.
Preguntas frecuentes
¿Qué es una auditoría de código fuente?
Es la revisión del código de una aplicación por alguien que no lo escribió, para encontrar fallas de seguridad, errores, deuda técnica y riesgos de mantenimiento, con recomendaciones concretas.
¿Necesito entregar mi código para una auditoría?
Sí, normalmente acceso de lectura al repositorio. Se puede firmar un acuerdo de confidencialidad antes.
¿Sirve auditar código hecho con IA?
Sí, y es de los casos donde más sirve: la IA genera código que funciona pero con atajos de seguridad, duplicación y partes que nadie entiende.
¿Qué diferencia hay con un pentest?
La auditoría de código revisa el código por dentro. El pentest prueba la aplicación desde fuera, como lo haría un atacante. Se complementan.