Letzten Monat hat ein Junior-Entwickler bei einem Kundenprojekt eine SQL-Abfrage gepusht, die User-Input direkt in die WHERE-Klausel konkatenierte. Klassische Injection. Der Pull Request hatte zwei Approvals von Senior Engineers. Niemandem ist es aufgefallen.
Das ist nicht ungewöhnlich. Code Review fängt Logik-Bugs, Style-Verstöße, fehlende Tests. Bei Security-Patterns ist es nicht gut. Reviewer scannen nach Intent und Korrektheit - macht dieser Code, was er soll. Sie laufen nicht die OWASP-Kategorien im Kopf durch, während sie einen Diff lesen.
KI-generierter Code macht das schlimmer, nicht besser. Copilot und Claude schreiben Code schnell, und sie schreiben Schwachstellen ungefähr mit der gleichen Rate wie menschliche Entwickler. Das Volumen steigt, die Review-Zeit pro Zeile sinkt, und die Lücke zwischen “Code, der funktioniert” und “Code, der sicher ist” wird größer.
Was wir dagegen getan haben
Ich habe AIVory Guard als JetBrains-Plugin gebaut, das Diffs in Echtzeit scannt. Datei öffnen, bearbeiten, und das Plugin markiert Security-Probleme inline - genauso wie die IDE Syntaxfehler anzeigt. Kein Kontextwechsel, kein separates Tool, kein Warten auf eine CI-Pipeline.
Es erkennt die OWASP Top 10 für LLM-Anwendungen und Webanwendungen: Injection, XSS, Command Injection, Path Traversal, hardcodierte Secrets, unsichere Deserialisierung. Die Dinge, die Menschen übersehen, weil sie beim Review einer Feature-Implementierung nicht an Security denken.
So funktioniert es: Das Plugin liest den lokalen Diff, schickt den geänderten Code an ein Modell, das auf Schwachstellenmuster trainiert ist, und bekommt eine Liste von Problemen mit Zeilennummern und Erklärungen zurück. Der ganze Roundtrip dauert ein paar Sekunden. Man sieht die Warnung, bevor man committet.
Was es nicht fängt
Es ist kein vollständiges Security Audit. Es versteht die Geschäftslogik nicht. Es wird nicht erkennen, dass das Autorisierungsmodell eine Lücke hat oder dass das Session-Handling auf eine Weise falsch ist, die nur im Kontext Sinn ergibt. Es erkennt Patterns - die Low-Hanging Fruits, die den Großteil der realen Sicherheitsvorfälle ausmachen.
Es hat auch False Positives. Eine String-Konkatenation, die wie Injection aussieht, aber tatsächlich eine Log-Nachricht baut. Ein hardcodierter String, der wie ein Secret aussieht, aber ein Test-Fixture ist. Wir haben das Modell getunt, um diese zu reduzieren, aber sie kommen vor. Lieber ein False Positive, das man wegklickt, als eine echte Schwachstelle, die man übersieht.
Setup
Plugin aus dem JetBrains Marketplace installieren, API Key konfigurieren, läuft. Der Free Tier gibt 50 Scans pro Woche, genug um zu sehen, ob es Dinge findet, die euer Team übersieht.
Für die SQL Injection, mit der alles angefangen hat: Guard hätte sie inline markiert, sobald der Entwickler die Query getippt hat. Vor dem Commit, vor dem PR, bevor zwei Senior Engineers sie abgenickt haben. Das ist der Punkt - früh finden, wenn das Fixen nichts kostet.