Live-Webinar auf EnglischWebinar mit Jason Lee, Mi., 14. Okt.Your newest insider is an AI agent.Jason LeeFormer CISO, Zoom & SplunkAnmelden

Nur die Lücken, die ein Angreifer erreicht.

Jeder Fund vom Einstiegspunkt bis zur Zeile verfolgt, mit seiner Korrektur.

checkout-apiSASTDemo-Projekt
  • HochSQL-Injectionusers.controller.ts:10

    CWE-89, erreichbar über GET /users/:id

    db.query(`SELECT * FROM users WHERE id=${id}`)db.query("SELECT * FROM users WHERE id = $1", [id])

    Fix bereitParametrisierte Abfrage, in derselben Sitzung neu geschrieben

Erreichbare Schwachstellen, jede mit ihrer Korrektur.

  • Erreichbare Lücken

    1. GET /users/:id
    2. users.controller.ts:10
    3. db.query()
  • Ihre Richtlinie

    • Team Payments Beim Pull Request blockieren
    • Team Growth Nur warnen
  • Datenflüsse, die Ihr Framework kennen

    • Expressreq.params.id
    • Djangorequest.GET["id"]
    • Spring@PathVariable id
  • Ein Fix zu jedem Finding

    Ein Patch in Ihrem Editor oder ein signierter Pull Request mit Regressionstest.

Neun von zehn Muster-Alarmen sind Fehlalarme.

91 %

der Schwachstellen, die musterbasierte Scanner in fast 3.000 Open-Source-Repositories meldeten, waren False Positives.

Ghost Security, Exorcising the SAST Demons, 2025

Ein Muster-Scanner

  • Alarm: Mögliche SQL-Injectionusers.controller.ts:10
  • Alarm: Mögliche SQL-InjectionPOST /avatar
  • Alarm: Mögliche SQL-InjectionGET /export

CybeDefend

  • Erreichbar: SQL-Injectionusers.controller.ts:10
  • Verworfen: Markierte Zeile, erreicht keinen SinkPOST /avatar
  • Verworfen: Markierte Zeile, erreicht keinen SinkGET /export

Von Ihrem Agenten behoben, vor dem Commit.

Ihr Agent liest diese Funde beim Schreiben und behebt sie vor dem Commit.

  1. SASTScannt das Repository bei jedem Push.Gefunden
  2. VibeDefendGibt das Finding an Ihren Coding-Agenten.Bereitgestellt
  3. Ihr AgentBehebt es in der Sitzung.Behoben
  4. CommitGeht ohne die Lücke rein.Sauber
  • Claude Code
  • Cursor
  • Windsurf
  • GitHub Copilot
  • OpenAI Codex

Beginnen Sie mit einem Repository.

Verbinden Sie GitHub, GitLab, Bitbucket oder Azure DevOps, wählen Sie ein Repository, und der erste Scan startet.

Im Detail

Jedes Finding: der Pfad, die Zeile, der Fix.
  • Erreichbare Lücken

    Verfolgt von einem Einstiegspunkt wie GET /users/:id bis zum Sink.

  • Der Exploit-Pfad

    Route, Datei und Zeile, damit jeder im Team es nachstellen kann.

  • Datenflüsse, die Ihr Framework kennen

    Express, Spring, Django, Rails, Laravel, ASP.NET, Gin, Fastify und die gängigen ORMs.

  • Ein Fix zu jedem Finding

    Ein Patch in Ihrem Editor oder ein signierter Pull Request mit Regressionstest.

  • Ihre Richtlinie

    Schweregrad und Umfang pro Team. Im Pull Request blockieren oder nur warnen.

Alles, was er prüft

Was unser SAST sieht und Ihres nicht.

Ein echter Fund pro Sprache, mit der markierten Zeile und ihrem Fix.

  • JavaScript (Express)

    Cross-Site-Scripting. Der Name aus dem Query-String landet unmaskiert im HTML.

    HochCWE-79
    res.send(`<h1>Hi ${req.query.name}</h1>`);res.send(`<h1>Hi ${escapeHtml(req.query.name)}</h1>`);
  • TypeScript (Fastify)

    Umgehung der Autorisierung (IDOR). Jeder angemeldete Nutzer liest jede Rechnung, indem er die ID ändert.

    HochCWE-639
    return db.invoice.findUnique({ where: { id } });return db.invoice.findFirst({ where: { id, ownerId: req.user.id } });
  • Python (Django)

    SQL-Injection. Der Suchbegriff wird direkt ins SQL eingefügt, ein Anführungszeichen schreibt die Abfrage um.

    KritischCWE-89
    cursor.execute(f"SELECT * FROM books WHERE title = '{q}'")cursor.execute("SELECT * FROM books WHERE title = %s", [q])
  • Go (Gin)

    Path Traversal. Ein Name wie ../../etc/passwd verlässt den Ordner uploads.

    HochCWE-22
    c.File(filepath.Join("uploads", name))c.File(filepath.Join("uploads", filepath.Base(name)))
12 weitere Sprachen, je ein Fund
  • Java (Spring)

    Externe XML-Entitäten. Der Parser löst externe Entitäten auf, ein Upload kann so lokale Dateien lesen.

    HochCWE-611
    var doc = dbf.newDocumentBuilder().parse(f.getInputStream());dbf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
  • Kotlin (Spring)

    Schwacher Passwort-Hash. MD5 ist schnell und ungesalzen: geleakte Hashes sind billig zu knacken.

    HochCWE-916
    val md = MessageDigest.getInstance("MD5")users.save(form.email, encoder.encode(form.password))
  • C# / .NET (ASP.NET)

    Open Redirect. returnUrl kann jede Website sein, der Login endet so auf der Seite eines Angreifers.

    MittelCWE-601
    return Redirect(returnUrl);return LocalRedirect(returnUrl);
  • Ruby (Rails)

    Mass Assignment. permit! akzeptiert jedes Attribut, auch admin.

    HochCWE-915
    @user.update(params.require(:user).permit!)@user.update(params.require(:user).permit(:name, :email))
  • PHP (Laravel)

    Unsichere Deserialisierung. Ein präpariertes Cookie wird zu lebenden Objekten deserialisiert.

    KritischCWE-502
    $cart = unserialize($request->cookie('cart'));$cart = json_decode($request->cookie('cart'), true);
  • Rust

    OS Command Injection. Der Dateiname erreicht eine Shell: ein Name mit ; führt einen Befehl aus.

    KritischCWE-78
    Command::new("sh").arg("-c").arg(cmd).status()Command::new("convert").args([name, "thumb.png"]).status()
  • Swift

    Token im Klartext gespeichert. Das Session-Token liegt in UserDefaults und ist aus einem Geräte-Backup lesbar.

    MittelCWE-312
    UserDefaults.standard.set(reply.token, forKey: "token")try keychain.save(reply.token, account: "token")
  • Scala

    Schwacher Zufall für ein Reset-Token. scala.util.Random ist vorhersagbar, Reset-Tokens lassen sich erraten.

    HochCWE-338
    val token = Random.alphanumeric.take(32).mkStringval token = UUID.randomUUID().toString
  • Elixir (Phoenix)

    Cross-Site Request Forgery. Browser-Routen nehmen POSTs von jeder Website an, ohne CSRF-Token zu prüfen.

    HochCWE-352
    plug :fetch_sessionplug :protect_from_forgery
  • Solidity

    Reentrancy. Ether verlässt den Vertrag, bevor der Kontostand sinkt, withdraw lässt sich erneut aufrufen.

    KritischCWE-841
    payable(msg.sender).call{value: amount}("");balances[msg.sender] -= amount;payable(msg.sender).transfer(amount);
  • C / C++

    Pufferüberlauf. Ein Name mit mehr als 31 Bytes läuft über den Stack-Puffer hinaus.

    KritischCWE-120
    strcpy(name, argv[1]);snprintf(name, sizeof name, "%s", argv[1]);
  • HTML

    Fehlende Integritätsprüfung. Kein Integritäts-Hash: eine manipulierte CDN-Datei läuft mit vollem Zugriff auf die Seite.

    MittelCWE-353
    <script src="https://cdn.example/chart.js"></script><script src="/static/vendor/chart.js"></script>
Echtzeit-Code-Security, direkt bei Ihrem Code.

Fehler und Warnungen häufen sich, während der Agent schreibt. Abgefangen vor dem Pull Request.

  • Echtzeit-Feedback

    Scannen und sichern Sie Ihren Code in Echtzeit, schon in Agent-time, nicht erst in der nächtlichen CI.

  • Hybrid-KI-Technologie

    Unsere Lösung kombiniert Large Language Models mit klassischer Taint- und Reachability-Analyse.

  • Collaboration-Tools

    Findings landen in Jira, GitHub Issues, GitLab Issues und Slack.

  • Umfassende Sprachunterstützung

    Achtzehn Sprachen, jedes ernstzunehmende Web-Framework.

  • Automatisierte Fixes und Remediation

    KI-generierte Patches landen direkt in der IDE oder als signierter PR mit angehängtem Regressionstest.

  • Anpassbare Policies

    Schweregrad, Geltungsbereich und Zuschnitt pro Team anpassen. Im PR blockieren oder nur warnen.

  • Entwicklerzentriertes Reporting

    Jedes Finding enthält eine dreizeilige Erklärung in einfachen Worten, den reproduzierbaren Exploit-Pfad, Datei und Zeile sowie den vorgeschlagenen Patch.

Vom Fund zur Korrektur
  • Die Zeile ist markiert.

    Ausnutzbar und erreichbar, kein bloßer Mustertreffer.

  • Beurteilt im Loop.

    Ihre Regeln geladen, ein Urteil vor dem Speichern.

  • Korrigiert an der Zeile.

    Der Agent schreibt sie in derselben Sitzung um.

Häufige Fragen zu CybeDefend SAST.

Wie unterscheidet sich CybeDefend SAST von klassischen Scannern wie Semgrep, Snyk Code oder Checkmarx?
Klassisches SAST läuft bei jedem Commit und begräbt echte Schwachstellen unter Rauschen. Als Ghost Security 2025 musterbasierte Scanner über fast 3.000 Open-Source-Repositories laufen ließ, waren mehr als 91 % der gemeldeten Schwachstellen False Positives. CybeDefend arbeitet in Agent-time auf dem Diff, den Ihr KI-Agent gerade schreiben will, noch bevor die Datei gespeichert ist. Wir kombinieren Reachability-Tracing (erreicht dieser Taint-Pfad wirklich einen Sink?), Datenflussmodelle, die Express, Spring, Django, Rails, ASP.NET und die wichtigsten ORMs kennen, und ein Scoring des Exploit-Pfads, das Findings nach echter Ausnutzbarkeit statt nach der Zahl der Mustertreffer ordnet. In produktiven Repos bleibt unsere verifizierte Liste so kurz, dass die Triage Minuten statt Tage dauert. Zu jedem Finding liefern wir außerdem einen verifizierten, KI-generierten Fix, während die meisten klassischen Scanner beim Alert aufhören. Das Ergebnis: drastisch weniger False Positives, Sicherheitsregeln, die greifen, bevor es den PR überhaupt gibt, und eine automatisierte Behebung, die Ihr Agent in derselben Sitzung anwenden kann.
Welche Sprachen und Frameworks unterstützt CybeDefend SAST?
Achtzehn Sprachen: JavaScript, TypeScript, Python, Go, Java, Kotlin, Rust, C# / .NET, Ruby, PHP, Swift, Scala, Elixir, Solidity, dazu C / C++, HTML und weitere. Framework-spezifische Datenflussmodelle decken Express, Spring, Django, Rails, Phoenix, Laravel, ASP.NET, Gin, Fastify und die wichtigsten ORMs ab. Neue Frameworks kommen jeden Monat dazu.
Lässt sich CybeDefend SAST in meine IDE und meine CI einbinden?
Ja. Wir liefern einen nativen MCP-Server, über den jeder MCP-kompatible Agent (Claude Code, Cursor, Windsurf, GitHub Copilot, Gemini) die Bewertungen direkt erhält. Eigene Plugins gibt es für VS Code und die JetBrains-Familie (IntelliJ, PhpStorm, WebStorm, PyCharm, DataGrip, Rider, CLion, RustRover, GoLand, RubyMine, AppCode). Für GitHub Actions und GitLab CI gibt es eine vollwertige CI-Integration; eine REST-API und eine CLI decken jedes weitere System ab, das bei Ihnen läuft.
Was ist mit False Positives?
Hybride KI und Reachability-Tracing drücken die False Positives in der verifizierten Liste gegen null. Findings, die die Engine nicht bestätigen kann, werden als 'reachable but cold' oder 'unreachable' markiert und herabgestuft, sie lösen nie einen Alarm aus. Das Ergebnis in echten Kunden-Repos: drastisch weniger False Positives über SAST, SCA, IaC und Secrets hinweg, und die verifizierte Liste bleibt so kurz, dass die Triage Minuten statt Tage dauert.