Die Sicherheit Ihrer Coding-Agenten, mit einem Befehl.
Regeln eingehalten, gefährliche Aktionen blockiert, Code vor dem Commit behoben und jeder Agent für Ihr Team sichtbar.
npx -y @cybedefend/vibedefend@latest installRegion EU oder USA, bei der Installation gewählt. Der Guard entscheidet auf Ihrem Rechner.
8-mal weniger gebrochene Regeln.
Ihre Regeln, vor jeder Änderung geliefert.
Geschäftsregeln, aus Ihrem Code gelernt, und Sicherheitsregeln für Ihren Stack, passend zur Datei, die er bearbeitet.
Claude Code schreibt
billing/refund.tsasync function refund(order, amount) { if (amount > 500) await approvals.second(order); await payments.refund(order, amount); return receipt(order); }
Erstattungen über 500 € brauchen eine zweite Freigabe.
Einmal freigegeben von Sofia M.Mit Ihrer Regel geschrieben, bevor die Änderung greift.
Gefährliche Befehle werden nie ausgeführt.
Schema-Drops, sudo, Lesezugriffe auf Secrets und Force-Pushes werden abgelehnt; der Agent erfährt, warum, und nimmt einen anderen Weg.
OpenAI Codex will ausführen
rm -rf ./storage/uploads
- Gelesen
- Gegen Ihre Guards geprüft
- Abgelehnt
- Ausgeführt
Blockiert: geschützter Pfad, Nutzer-Uploads
Behoben vor dem Commit.
Wenn der Agent fertig ist, werden seine Änderungen gescannt und er behebt jeden Befund. Die Befunde Ihres Projekts sind in seiner Sitzung.
SQL Injection, erreichbar
CWE-89, src/db/users.repo.ts:42"SELECT * FROM users WHERE id = $1", [id]Vom Agenten vor dem Commit behoben
Dann bewiesen, nicht angenommen.
Nach dem Commit prüft BLSA die Geschäftslogik und belegt jedes Urteil: die Regel, den Pfad, die Zeile.
Erstattungen über 500 € brauchen eine zweite Freigabe.BLSA, Beweismodus
POST /refundsEinstiegspunkt
approvals.second(order)Die Prüfung der Regel
payments.refund(order)Läuft nach der Prüfung
Hält: freigegeben, bevor gezahlt wird
Alles, was er tut, auf einer Karte.
Jede gelieferte Regel, jede Ablehnung und jede Korrektur, ihrem Agenten und ihrem Entwickler im Brain zugeordnet.
Cursorsrc/billing/cart-checkout.ts3 Regeln geliefert
DROP TABLE invoices;Blockiert
CWE-89, src/db/users.repo.ts:42Befund behoben
Sofia M. zugeordnet, im Brain
Niemand hat es Ihrem Agenten gesagt. Jetzt weiß er es.
Ein Befehl. Alle Agenten. Keine Kreditkarte.
npx -y @cybedefend/vibedefend@latest installIm Detail
Dann bewiesen, nicht angenommen.
Nach dem Commit prüft BLSA (Business Logic Security Analysis, entwickelt mit dem CNRS und dem Labor CRIStAL) die Geschäftslogik der Änderung, und sein Beweismodus zeigt, warum jedes Urteil hält oder bricht: die Regel, den Pfad durch den Code, die Zeile. BLSA steht heute unseren Design-Partnern offen.
Die acht Fehler in der Geschäftslogik, die es verhindert
der API-Schwachstellen nutzen die Geschäftslogik aus, keine bekannte CVE.
Wallarm, API ThreatStats 2026
Datenleck zwischen TenantsTenant-Filter in AbfragenCWE-639
Abfrage per id ohne Tenant-Filter: Jeder angemeldete Kunde kann diese Bestellung lesen.
vorher
// GET /api/orders/:id const order = await db.order.findUnique({ where: { id: req.params.id }, }); return res.json(order);
nachher
// 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);
Regel: Tenant-Filter in Abfragen
Umgehung der ErstattungsgrenzeAutorisierungsgrenze bei RückerstattungenCWE-840
Rückerstattung ohne Rollenprüfung und ohne Obergrenze: Jeder Betrag kann auf jeden Intent erstattet werden.
vorher
router.post('/refund', async (req, res) => { await stripe.refunds.create({ payment_intent: req.body.intent, amount: req.body.amount, }); return res.json({ ok: true }); });
nachher
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 }); });
Regel: Autorisierungsgrenze bei Rückerstattungen
Fehlende IdempotenzIdempotenzschlüssel für WebhooksCWE-837
Kein Idempotenzschlüssel: Wird dasselbe Stripe-Event erneut zugestellt, wird die Bestellung doppelt gebucht.
vorher
app.post('/webhook/stripe', async (req, res) => { await orders.markPaid(req.body.id); await ledger.append({ type: 'charge', ... }); res.send('ok'); });
nachher
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'); });
Regel: Idempotenzschlüssel für Webhooks
PII in LogsPII-Richtlinie in LogsCWE-532
Der komplette req.body geht in die Logs: E-Mail und Passwort im Klartext bei Ihrem Log-Anbieter.
vorher
logger.info('signup', { user: req.body });
nachher
logger.info('signup', { userId: hash(req.body.email), region: req.body.region, });
Regel: PII-Richtlinie in Logs
Auth-Middleware übersprungenAuth-Middleware auf Routen verpflichtendCWE-306
Route ohne Auth-Middleware gemountet: /admin/users ist ohne Session erreichbar.
vorher
// public.routes.ts router.get('/admin/users', listAllUsers);
nachher
// admin.routes.ts (auth + rbac applied at mount) router.use(requireSession, requireRole('admin')); router.get('/users', listAllUsers);
Regel: Auth-Middleware auf Routen verpflichtend
Feature-Flag-Rolloutsichere Defaults für Feature-FlagsCWE-1188
Fehlendes Flag = true als Default: Der Export schaltet sich in der Produktion selbst ein.
vorher
if (flags.allow_anyone_to_export ?? true) { return exportAll(); }
nachher
if (flags.allow_anyone_to_export === true && req.user.role === 'admin') { audit.log('export.all', req.user); return exportAll(); }
Regel: sichere Defaults für Feature-Flags
Kein Rate-LimitRate Limiting beim LoginCWE-307
Kein Limit für Anmeldeversuche auf /login: Brute-Force-Angriffe auf Zugangsdaten sind unbegrenzt möglich.
vorher
router.post('/login', loginHandler);
nachher
router.post('/login', rateLimit({ windowMs: 60_000, max: 8, keyGenerator: ipAndEmail }), loginHandler);
Regel: Rate Limiting beim Login
Export über alle TenantsTenant-Filter bei Admin-ExportenCWE-285
findMany ohne Tenant-Filter: Der CSV-Export liefert die Nutzer aller Kunden.
vorher
router.get('/admin/export', requireAdmin, async (_req, res) => { const rows = await db.user.findMany({}); res.csv(rows); });
nachher
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); });
Regel: Tenant-Filter bei Admin-Exporten
Vier Ebenen, eine Installation.
Bereitgestellte Regeln
Geschäftsregeln aus Ihrem Code und Ihre Sicherheitsregeln, vor jeder Änderung bereitgestellt.
Claude Code schreibt
src/billing/cart-checkout.ts
const total = new Decimal128(cart.sum); const rows = await db.query( "SELECT * FROM carts WHERE id = $1", [id] );
Geldbeträge nutzen Decimal128, nie Number.
Aus src/billing.ts:14 gewonnenJede Abfrage mit Nutzereingaben wird parametrisiert.
OWASP Top 10Vor der Änderung bereitgestellt
Secret-Wächter
Direkte Secret-Lesezugriffe werden verweigert; der Agent bekommt stattdessen die verwaltete Referenz.
Cursorwebhooks.ts
cat .env | grep STRIPEBlockiert: direkter Secret-Zugriff
Stattdessen
process.env.STRIPE_WEBHOOK_SECRETnpm test -- webhooksTests laufen durch
Fürs Team protokolliert
Aktions-Wächter
Destruktive Befehle, Schema-Drops und geschützte Pfade werden gestoppt, bevor sie ausgeführt werden.
OpenAI Codex
rm -rf dist/Erlaubt: Build-Ausgabe
rm -rf .cache/Erlaubt: Cache
rm -rf ./storage/uploadsBlockiert: geschützter Pfad, Nutzer-Uploads
Fürs Team protokolliert
Live-Findings
Findings aus SAST, SCA, Secrets, IaC und CI/CD, live in der Sitzung, damit der Agent sie behebt.
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
Im Kontext des Agenten, live
Ihre Frameworks, als Regeln bereitgestellt.
Die Sicherheitsregeln, die der Agent bekommt, folgen den Frameworks, die Ihre Auditoren prüfen.
- OWASP Top 10
- SOC 2
- DSGVO
- ISO 27001
Kostenlos testen, an Ihrem eigenen Code.
Ohne Kreditkarte. Für den nächsten Schritt machen wir ein Pilotprojekt mit Ihrem Team und legen den Preis gemeinsam fest.
Bevor Sie installieren.
In der kontrollierten Studie von CybeDefend vom 24. August 2026 wendete derselbe Agent mit VibeDefend 89 % der präzisen Regeln an, gegenüber 12 % ohne Tool und 13 % mit einer von Hand gepflegten Regeldatei.