La seguridad de tus agentes, en un solo comando.
Reglas cumplidas, acciones peligrosas bloqueadas, código corregido antes del commit y cada agente visible para tu equipo.
npx -y @cybedefend/vibedefend@latest installRegión UE o EE. UU., elegida al instalar. El guard decide en tu máquina.
8 veces menos reglas incumplidas.
Tus reglas, servidas antes de cada edición.
Reglas de negocio aprendidas de tu código y reglas de seguridad para tu stack, elegidas para el archivo que edita.
Claude Code está escribiendo
billing/refund.tsasync function refund(order, amount) { if (amount > 500) await approvals.second(order); await payments.refund(order, amount); return receipt(order); }
Los reembolsos de más de 500 € necesitan un segundo aprobador.
Aprobada una vez por Sofia M.Escrito con tu regla, antes de que se aplique el cambio.
Los comandos peligrosos nunca se ejecutan.
Borrados de esquema, sudo, lecturas de secretos y push forzados se rechazan; el agente sabe por qué y busca otro camino.
OpenAI Codex quiere ejecutar
rm -rf ./storage/uploads
- Leído
- Comprobado con tus salvaguardas
- Rechazado
- Ejecutado
Bloqueado: ruta protegida, archivos de los usuarios
Corregido antes del commit.
Cuando el agente termina, sus cambios se escanean y corrige cada hallazgo. Los hallazgos de tu proyecto están en su sesión.
Inyección SQL alcanzable
CWE-89, src/db/users.repo.ts:42"SELECT * FROM users WHERE id = $1", [id]Corregido por el agente antes del commit
Después, probado, no supuesto.
Tras el commit, BLSA comprueba su lógica de negocio y demuestra cada veredicto: la regla, el camino, la línea.
Los reembolsos de más de 500 € necesitan un segundo aprobador.BLSA, modo prueba
POST /refundsPunto de entrada
approvals.second(order)El control de la regla
payments.refund(order)Se ejecuta tras el control
Se cumple: aprobado antes de pagarse
Todo lo que hace, en un solo mapa.
Cada regla servida, cada rechazo y cada corrección, vinculados a su agente y a su desarrollador en el Brain.
Cursorsrc/billing/cart-checkout.ts3 reglas servidas
DROP TABLE invoices;Bloqueada
CWE-89, src/db/users.repo.ts:42Hallazgo corregido
Vinculado a Sofia M., en el Brain
Nadie avisó a tu agente. Ahora lo sabe.
Un comando. Todos tus agentes. Sin tarjeta.
npx -y @cybedefend/vibedefend@latest installEn detalle
Después, probado, no supuesto.
Tras el commit, BLSA (Business Logic Security Analysis, desarrollado con el CNRS y el laboratorio CRIStAL) comprueba la lógica de negocio del cambio, y su modo prueba muestra por qué cada veredicto se cumple o falla: la regla, el camino en el código, la línea. Hoy BLSA está abierto a nuestros design partners.
Los ocho fallos de lógica de negocio que evita
de las vulnerabilidades de API explotan la lógica de negocio, no una CVE conocida.
Wallarm, API ThreatStats 2026
Fuga multi-tenanttenant scoping en las consultasCWE-639
Consulta por id sin filtro de tenant: cualquier cliente autenticado puede leer este pedido.
antes
// GET /api/orders/:id const order = await db.order.findUnique({ where: { id: req.params.id }, }); return res.json(order);
después
// GET /api/orders/:id const order = await db.order.findUnique({ where: { id: req.params.id, tenantId: req.user.tenantId }, }); if (!order) return res.status(404).end(); return res.json(order);
Regla: tenant scoping en las consultas
Reembolso sin controltecho de autorización en los reembolsosCWE-840
Reembolso creado sin comprobar rol ni techo: sale cualquier importe hacia cualquier intent.
antes
router.post('/refund', async (req, res) => { await stripe.refunds.create({ payment_intent: req.body.intent, amount: req.body.amount, }); return res.json({ ok: true }); });
después
router.post('/refund', requireRole('finance'), async (req, res) => { const intent = await getOwnedIntent(req.user, req.body.intent); const amount = clampRefund(intent, req.body.amount); await stripe.refunds.create({ payment_intent: intent.id, amount }); return res.json({ ok: true }); });
Regla: techo de autorización en los reembolsos
Idempotencia ausenteclave de idempotencia en los webhooksCWE-837
Sin clave de idempotencia: el mismo evento de Stripe reenviado abona el pedido dos veces.
antes
app.post('/webhook/stripe', async (req, res) => { await orders.markPaid(req.body.id); await ledger.append({ type: 'charge', ... }); res.send('ok'); });
después
app.post('/webhook/stripe', async (req, res) => { const key = req.headers['idempotency-key']; if (await seen.has(key)) return res.send('dup'); await orders.markPaid(req.body.id); await ledger.append({ type: 'charge', key, ... }); await seen.add(key, '24h'); res.send('ok'); });
Regla: clave de idempotencia en los webhooks
PII en los logspolítica de PII en los logsCWE-532
El req.body entero va a los logs: email y contraseña en claro en tu proveedor de logs.
antes
logger.info('signup', { user: req.body });
después
logger.info('signup', { userId: hash(req.body.email), region: req.body.region, });
Regla: política de PII en los logs
Middleware de auth omitidomiddleware de auth obligatorio en las rutasCWE-306
Ruta montada sin el middleware de auth: se llega a /admin/users sin sesión.
antes
// public.routes.ts router.get('/admin/users', listAllUsers);
después
// admin.routes.ts (auth + rbac applied at mount) router.use(requireSession, requireRole('admin')); router.get('/users', listAllUsers);
Regla: middleware de auth obligatorio en las rutas
Despliegue de feature flagvalores por defecto seguros en los feature flagsCWE-1188
Flag ausente = true por defecto: la exportación se activa sola en producción.
antes
if (flags.allow_anyone_to_export ?? true) { return exportAll(); }
después
if (flags.allow_anyone_to_export === true && req.user.role === 'admin') { audit.log('export.all', req.user); return exportAll(); }
Regla: valores por defecto seguros en los feature flags
Sin rate limitrate limiting en el loginCWE-307
Sin límite de intentos en /login: fuerza bruta sin freno.
antes
router.post('/login', loginHandler);
después
router.post('/login', rateLimit({ windowMs: 60_000, max: 8, keyGenerator: ipAndEmail }), loginHandler);
Regla: rate limiting en el login
Exportación entre tenantstenant scoping en las exportaciones adminCWE-285
findMany sin filtro de tenant: el CSV devuelve los usuarios de todos los clientes.
antes
router.get('/admin/export', requireAdmin, async (_req, res) => { const rows = await db.user.findMany({}); res.csv(rows); });
después
router.get('/admin/export', requireAdmin, async (req, res) => { const rows = await db.user.findMany({ where: { tenantId: req.user.tenantId }, }); audit.log('export', req.user); res.csv(rows); });
Regla: tenant scoping en las exportaciones admin
Cuatro capas, una instalación.
Reglas servidas
Las reglas de negocio extraídas de tu código y tus reglas de seguridad, servidas antes de cada edición.
Claude Code está escribiendo
src/billing/cart-checkout.ts
const total = new Decimal128(cart.sum); const rows = await db.query( "SELECT * FROM carts WHERE id = $1", [id] );
Los importes usan Decimal128, nunca Number.
Extraída de src/billing.ts:14Toda consulta que mezcla datos del usuario va parametrizada.
OWASP Top 10Servidas antes de la edición
Protección de secretos
Las lecturas directas de secretos se rechazan; el agente recibe la referencia gestionada.
Cursorwebhooks.ts
cat .env | grep STRIPEBloqueado: lectura directa de un secreto
En su lugar
process.env.STRIPE_WEBHOOK_SECRETnpm test -- webhooksLos tests pasan
Registrado para el equipo
Control de acciones
Comandos destructivos, borrados de esquema y rutas protegidas se detienen antes de ejecutarse.
OpenAI Codex
rm -rf dist/Permitido: salida del build
rm -rf .cache/Permitido: caché
rm -rf ./storage/uploadsBloqueado: ruta protegida, archivos de los usuarios
Registrado para el equipo
Hallazgos en vivo
Los hallazgos de SAST, SCA, secretos, IaC y CI/CD, en vivo en la sesión para que el agente los corrija.
GitHub Copilot
SAST
src/db/users.repo.ts:42SQL injection
SCA
package.jsonlodash 4.17.20, CVE-2021-23337
Secrets
config/prod.ymlAWS access key
IaC
infra/main.tfS3 bucket public-read
CI/CD
.github/workflows/deploy.ymlpull_request_target
En el contexto del agente, en vivo
Tus marcos de cumplimiento, servidos como reglas.
Las reglas de seguridad que recibe el agente siguen los marcos que revisan tus auditores.
- OWASP Top 10
- SOC 2
- RGPD
- ISO 27001
Pruébalo gratis en tu propio código.
Sin tarjeta. Para ir más allá, hacemos un piloto con tu equipo y fijamos el precio contigo.
Antes de instalar.
En el estudio controlado de CybeDefend del 24 de agosto de 2026, el mismo agente aplicó el 89 % de las reglas precisas con VibeDefend, frente al 12 % sin herramienta y el 13 % con un archivo de reglas mantenido a mano.