La sicurezza dei tuoi agenti, in un solo comando.
Regole rispettate, azioni pericolose bloccate, codice corretto prima del commit e ogni agente visibile al tuo team.
npx -y @cybedefend/vibedefend@latest installRegione UE o USA, scelta all'installazione. Il guard decide sulla tua macchina.
8 volte meno regole violate.
Le tue regole, servite prima di ogni modifica.
Regole di business apprese dal tuo codice e regole di sicurezza per il tuo stack, scelte per il file che modifica.
Claude Code sta scrivendo
billing/refund.tsasync function refund(order, amount) { if (amount > 500) await approvals.second(order); await payments.refund(order, amount); return receipt(order); }
I rimborsi sopra i 500 € richiedono un secondo approvatore.
Approvata una volta da Sofia M.Scritto con la tua regola, prima che la modifica entri.
I comandi pericolosi non partono mai.
Drop di schema, sudo, letture di segreti e push forzati vengono rifiutati; l'agente sa perché e prende un'altra strada.
OpenAI Codex vuole eseguire
rm -rf ./storage/uploads
- Letto
- Verificato con le tue protezioni
- Rifiutato
- Eseguito
Bloccato: percorso protetto, file degli utenti
Corretto prima del commit.
Quando l'agente finisce, le modifiche vengono scansionate e corregge ogni problema. I problemi del progetto sono nella sua sessione.
SQL injection raggiungibile
CWE-89, src/db/users.repo.ts:42"SELECT * FROM users WHERE id = $1", [id]Corretto dall'agente prima del commit
Poi provato, non presunto.
Dopo il commit, BLSA verifica la logica di business e dimostra ogni verdetto: la regola, il percorso, la riga.
I rimborsi sopra i 500 € richiedono un secondo approvatore.BLSA, modalità prova
POST /refundsPunto d'ingresso
approvals.second(order)Il controllo della regola
payments.refund(order)Eseguito dopo il controllo
Regge: approvato prima di essere pagato
Tutto ciò che fa, su un'unica mappa.
Ogni regola servita, ogni rifiuto e ogni correzione, ricondotti al suo agente e al suo sviluppatore nel Brain.
Cursorsrc/billing/cart-checkout.ts3 regole servite
DROP TABLE invoices;Bloccata
CWE-89, src/db/users.repo.ts:42Problema corretto
Ricondotto a Sofia M., nel Brain
Nessuno l'ha detto al tuo agente. Ora lo sa.
Un comando. Tutti i tuoi agenti. Nessuna carta di credito.
npx -y @cybedefend/vibedefend@latest installNel dettaglio
Poi provato, non presunto.
Dopo il commit, BLSA (Business Logic Security Analysis, sviluppato con il CNRS e il laboratorio CRIStAL) verifica la logica di business della modifica, e la sua modalità prova mostra perché ogni verdetto regge o cade: la regola, il percorso nel codice, la riga. Oggi BLSA è aperto ai nostri design partner.
Le otto falle di logica di business che evita
delle vulnerabilità API sfruttano la logica di business, non una CVE nota.
Wallarm, API ThreatStats 2026
Fuga di dati tra tenantfiltro per tenant sulle queryCWE-639
Ricerca per id senza filtro tenant: qualsiasi cliente autenticato può leggere questo ordine.
prima
// GET /api/orders/:id const order = await db.order.findUnique({ where: { id: req.params.id }, }); return res.json(order);
dopo
// 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);
Regola: filtro per tenant sulle query
Aggiramento dei rimborsitetto di autorizzazione sui rimborsiCWE-840
Rimborso creato senza controllo di ruolo né tetto: qualsiasi importo può essere rimborsato su qualsiasi intent.
prima
router.post('/refund', async (req, res) => { await stripe.refunds.create({ payment_intent: req.body.intent, amount: req.body.amount, }); return res.json({ ok: true }); });
dopo
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 }); });
Regola: tetto di autorizzazione sui rimborsi
Idempotenza mancantechiave di idempotenza sui webhookCWE-837
Nessuna chiave di idempotenza: lo stesso evento Stripe, se ricevuto di nuovo, accredita l'ordine due volte.
prima
app.post('/webhook/stripe', async (req, res) => { await orders.markPaid(req.body.id); await ledger.append({ type: 'charge', ... }); res.send('ok'); });
dopo
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'); });
Regola: chiave di idempotenza sui webhook
PII nei logpolicy PII nei logCWE-532
L'intero req.body finisce nei log: email e password in chiaro dal tuo provider di logging.
prima
logger.info('signup', { user: req.body });
dopo
logger.info('signup', { userId: hash(req.body.email), region: req.body.region, });
Regola: policy PII nei log
Middleware di auth saltatomiddleware di auth obbligatorio sulle rotteCWE-306
Rotta montata senza il middleware di auth: /admin/users è raggiungibile senza sessione.
prima
// public.routes.ts router.get('/admin/users', listAllUsers);
dopo
// admin.routes.ts (auth + rbac applied at mount) router.use(requireSession, requireRole('admin')); router.get('/users', listAllUsers);
Regola: middleware di auth obbligatorio sulle rotte
Rollout di feature flagdefault sicuri sui feature flagCWE-1188
Flag assente = true per default: l'export si attiva da solo in produzione.
prima
if (flags.allow_anyone_to_export ?? true) { return exportAll(); }
dopo
if (flags.allow_anyone_to_export === true && req.user.role === 'admin') { audit.log('export.all', req.user); return exportAll(); }
Regola: default sicuri sui feature flag
Rate limit assenterate limiting sul loginCWE-307
Nessun limite di tentativi su /login: i tentativi di brute force sulle credenziali sono illimitati.
prima
router.post('/login', loginHandler);
dopo
router.post('/login', rateLimit({ windowMs: 60_000, max: 8, keyGenerator: ipAndEmail }), loginHandler);
Regola: rate limiting sul login
Export su tutti i tenantfiltro per tenant sugli export adminCWE-285
findMany senza filtro per tenant: l'export CSV restituisce gli utenti di tutti i clienti.
prima
router.get('/admin/export', requireAdmin, async (_req, res) => { const rows = await db.user.findMany({}); res.csv(rows); });
dopo
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); });
Regola: filtro per tenant sugli export admin
Quattro livelli, un'installazione.
Regole servite
Le regole di business estratte dal tuo codice e le tue regole di sicurezza, servite prima di ogni modifica.
Claude Code sta scrivendo
src/billing/cart-checkout.ts
const total = new Decimal128(cart.sum); const rows = await db.query( "SELECT * FROM carts WHERE id = $1", [id] );
Gli importi usano Decimal128, mai Number.
Estratta da src/billing.ts:14Ogni query che mescola input dell'utente va parametrizzata.
OWASP Top 10Servite prima della modifica
Protezione dei segreti
Le letture dirette dei segreti sono rifiutate; l'agente riceve il riferimento gestito.
Cursorwebhooks.ts
cat .env | grep STRIPEBloccato: lettura diretta di un segreto
Al suo posto
process.env.STRIPE_WEBHOOK_SECRETnpm test -- webhooksI test passano
Registrato per il team
Protezione delle azioni
Comandi distruttivi, drop di schema e percorsi protetti vengono bloccati prima dell'esecuzione.
OpenAI Codex
rm -rf dist/Consentito: output della build
rm -rf .cache/Consentito: cache
rm -rf ./storage/uploadsBloccato: percorso protetto, file degli utenti
Registrato per il team
Finding in tempo reale
I finding di SAST, SCA, segreti, IaC e CI/CD, in diretta nella sessione perché l'agente li corregga.
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
Nel contesto dell'agente, in diretta
I tuoi framework, serviti come regole.
Le regole di sicurezza che l'agente riceve seguono i framework che controllano i tuoi auditor.
- OWASP Top 10
- SOC 2
- GDPR
- ISO 27001
Provalo gratis sul tuo codice.
Senza carta. Per andare oltre, facciamo un pilota con il tuo team e fissiamo il prezzo con te.
Prima di installare.
Nello studio controllato di CybeDefend del 24 agosto 2026, lo stesso agente ha applicato il 89 % delle regole precise con VibeDefend, contro il 12 % senza strumenti e il 13 % con un file di regole tenuto a mano.