In this article
Erkannte Schwachstellen mit Factory AI und Snyk Studio beheben
Das Programmieren mit den Factory AI-Droids macht richtig Spaß. Alles ist stimmig und läuft reibungslos – und es macht richtig Laune; es fühlt sich an wie ein Spiel. Dieses Engagement spürt man nicht nur in der Benutzeroberfläche, sondern auch in den Partnerschaften – eine wichtige Integration besteht mit Linear (dem jüngeren Konkurrenten von Jira, bekannt für eine verbesserte UX mit reaktiven Web-App-Animationen und Tastaturkürzeln). Wenn Tools wie Claude Code, OpenAI Codex und Gemini CLI einem Offline-Word-Dokument entsprechen, dann ist das Angebot von Factory AI ein Online-Google-Drive, das von Anfang an auf die Zusammenarbeit in Teams ausgelegt ist.
![Factory-Startbildschirm mit der Überschrift „FACTORY“, einer Beschreibung der agentenbasierten Softwareentwicklung und der Aufforderung „[ zum Fortfahren die Eingabetaste drücken ]“.](https://res.cloudinary.com/snyk/image/upload/v1761144127/Droid_GIF_goxlos.gif)
Die gut gestaltete Einführung in den Entwicklungsworkflow auf der Website führt Sie Schritt für Schritt durch folgende Aufgaben:
Die Factory-CLI herunterladen
Die Droid-IDE-Erweiterung zu VS Code oder Ihrem bevorzugten Fork hinzufügen (z. B. Cursor oder WindSurf)
Geben Sie Ihrem Droid (den spezialisierten KI-Agenten von Factory AI) im Browser oder in der IDE seine erste Aufgabe.
Wenn Sie Linux verwenden, können Sie die Factory-CLI wie folgt installieren:
curl -fsSL https://app.factory.ai/cli | shDie VS-Code-Erweiterung ist hier verfügbar. Nach der Installation können Sie mit `Ctrl-Shift-P` die Befehlspalette öffnen und Run Factory Droid auswählen.

Was steckt in einem Droid?
Factory AI bietet spezialisierte KI-Agenten für zahlreiche gängige Aufgaben in der Softwareentwicklung. Sie werden als Droids bezeichnet.
Code Droid: Von der Idee bis zu Codeänderungen, die bereit zum Mergen sind. Entwickeln Sie neue Funktionen oder Komponenten anhand klarer Anforderungen. Code Droid versteht Ihre Codebasis und implementiert Funktionen nach den Mustern und Best Practices Ihres Projekts. Verbessern Sie vorhandenen Code, indem Sie komplexe oder ineffiziente Muster erkennen und in übersichtlichere, besser wartbare Lösungen umwandeln, ohne die Funktionalität zu beeinträchtigen und bei gleichzeitiger Leistungssteigerung. Analysieren Sie Fehlerprotokolle, finden Sie die Ursachen und beheben Sie Bugs in Ihrer Codebasis. Erstellen Sie umfassende Unit-Tests, um die Zuverlässigkeit des Codes sicherzustellen und Regressionen in Ihren Anwendungen zu verhindern.
Knowledge Droid: Recherche für die Entwicklung, technische Dokumentation und Onboarding-Leitfäden. Erstellen Sie umfassende Dokumentation für Ihre Codebasis, einschließlich API-Referenzen, Architekturübersichten und Beziehungen zwischen Komponenten, um das Verständnis im Team und das Onboarding zu verbessern. Lassen Sie sich komplexe Systeme, Architekturentscheidungen und Implementierungsdetails Ihrer Projekte verständlich erklären, damit Teammitglieder nachvollziehen können, wie die verschiedenen Komponenten zusammenspielen. Finden und extrahieren Sie schnell konkrete Informationen aus Ihrer Codebasis und Dokumentation – und sparen Sie Zeit bei der Suche nach Implementierungsdetails oder Informationen zu bestimmten Funktionen.
Reliability Droid: Untersuchen Sie Vorfälle, verfassen Sie Ursachenanalysen und debuggen Sie komplexe Systeme mit mehreren Services. Analysieren Sie Produktionsvorfälle anhand von Fehlerprotokollen, Metriken und Systemverhalten, um Muster und mögliche Ursachen für Ausfälle oder Leistungseinbußen schnell zu erkennen. Erstellen Sie umfassende Ursachenanalysen mit Zeitablauf, Folgenabschätzung, Ermittlung der Ursache und vorbeugenden Maßnahmen, die Sie mit Stakeholdern teilen können. Entwickeln Sie robuste Mechanismen zur Fehlerbehandlung, darunter Circuit Breaker, Wiederholungslogik und Muster für einen kontrollierten Funktionsabbau, um die Ausfallsicherheit von Systemen zu verbessern und Kaskadenausfälle zu verhindern.
Product Droid: Planen Sie Funktionen, erstellen Sie PRDs und verwalten Sie Ihre Projekte. Erstellen Sie detaillierte Product Requirements Documents mit Funktionsübersichten, User Stories, Abnahmekriterien, technischen Überlegungen und Implementierungsphasen für neue Produktfunktionen. Verfassen Sie umfassende User Stories mit detaillierten Abnahmekriterien für verschiedene Benutzertypen und Szenarien. So verstehen Entwicklungsteams die Anforderungen aus Sicht der Benutzer. Analysieren Sie Funktionsanfragen und entwickeln Sie Priorisierungsmodelle mit Bewertungen von Wirkung und Aufwand, damit Produktteams fundierte Entscheidungen über die Reihenfolge der Implementierung treffen können.
Dieser zeitgemäße Ansatz für KI-Agenten – eine Bibliothek mit vorgefertigten, spezialisierten Agenten – hilft Nutzern, die begrenzten Kontextfenster ihrer LLMs optimal auszuschöpfen. Ein einzelner Agent, wie ihn Tools wie Claude Code, OpenAI Codex und Gemini CLI anbieten, lässt sich zwar vielseitig für ähnlich zahlreiche Aufgaben einsetzen. Factory AI hat jedoch viel Arbeit investiert, um Entwicklern einen Agenten bereitzustellen, der den Kontext für seinen ganz bestimmten Zweck besonders kompetent verwaltet. Das schließt den ebenfalls in der Bibliothek enthaltenen Allzweck-Droid nicht aus, auf den Sie natürlich für alle Aufgaben zurückgreifen können, die nicht von den speziell vorbereiteten Droids abgedeckt werden.
Erfreulicherweise bindet Factory AI Sie nicht an einen einzelnen LLM-Anbieter. Die bekanntesten Anbieter stehen direkt zur Auswahl (siehe unten). Bei LLMs mit speziellen Varianten, etwa für Schlussfolgerungen, können Sie Ihre Wahl ganz einfach im selben Dialogfeld der Benutzeroberfläche treffen.

MCP-Unterstützung
Wie andere KI-Agenten-CLIs bietet auch die Droid-CLI eine hervorragende Unterstützung für das Model Context Protocol (MCP). Ihren bevorzugten MCP-Server können Sie ganz einfach hinzufügen.

Zum Beispiel lässt sich der offizielle Snyk-MCP-Server wie folgt hinzufügen:
droid mcp add --type stdio SNYK "snyk mcp -t stdio"
Added stdio MCP server SNYK with command: snyk mcp -t stdioDoch was können wir damit anfangen? Welchen Vorteil bietet es, den Funktionsumfang eines bereits leistungsfähigen Droids zu erweitern? Die Unterstützung für Shell-Befehle sowie das Lesen, Schreiben und Bearbeiten von Dateien ist bereits integriert.
Schwachstellen mithilfe von KI-Agenten (Droids) automatisch beheben
Für dieses Beispiel habe ich das Repository von OWASP-Projektleiter adeyosemanputra’s pyGoat geklont. Dieses Projekt enthält absichtlich eine Reihe gut dokumentierter Schwachstellen zu Lernzwecken. Hier sind einige der Schwachstellen, die von Snyks eigener IDE-Erweiterung hervorgehoben werden:

Wir können Droid auch bitten, mithilfe des MCP-Servers einige dieser Schwachstellen aufzulisten. Siehe:
> Please run a code scan on the codebase with Snyk.
⛬ I'll help you run a Snyk code scan on the pygoat codebase. Let me first check the
authentication status and then perform the scan.
PLAN Updated: 3 total (2 pending, 1 in progress, 0 completed)
○ Check Snyk authentication status
○ Run Snyk code scan on pygoat codebase
○ Review and report scan results
[MCP] SNYK:SNYK_AUTH_STATUS
↳stephen.thoemmes
⛬ Great! You're authenticated as stephen.thoemmes. Now I'll run the Snyk code scan on
the pygoat codebase to identify security vulnerabilities.
PLAN Updated: 3 total (1 pending, 1 in progress, 1 completed)
○ Check Snyk authentication status
○ Run Snyk code scan on pygoat codebase
○ Review and report scan results
[MCP] SNYK:SNYK_CODE_SCAN (/home/owler/Documents/Snyk/factory/pygoat)
↳
Testing /home/owler/Documents/Snyk/factory/pygoat ...
✗ [Low] Use of Hardcoded Credentials
Path: introduction/playground/A9/api.py, line 17
Info: Do not hardcode credentials in code. Found hardcoded credential used in a
condition.
…
✗ [High] SQL Injection
Path: introduction/views.py, line 871
Info: Unsanitized input from an HTTP parameter flows into
introduction.models.sql_lab_table.objects.raw, where it is used in an SQL query. This
may result in an SQL Injection vulnerability.
…
✔ Test completed
Organization: stephen.thoemmes
Test type: Static code analysis
Project path: /home/owler/Documents/Snyk/factory/pygoat
Summary:
101 Code issues found
15 [High] 44 [Medium] 42 [Low]
PLAN Updated: 3 total (0 pending, 0 in progress, 3 completed)
○ Check Snyk authentication status
○ Run Snyk code scan on pygoat codebase
○ Review and report scan results
⛬ The Snyk code scan has completed successfully! Here's a summary of the security
findings:
Scan Results Summary
Total Issues Found: 101
• 15 High severity vulnerabilities
• 44 Medium severity vulnerabilities
• 42 Low severity vulnerabilities
Key High-Severity Issues Found:
1. SQL Injection - Multiple instances in views.py
2. Code Injection - eval() usage with unsanitized input
3. Command Injection - subprocess.Popen with unsanitized input
4. Path Traversal - File operations with unsanitized paths
5. XML External Entity (XXE) Injection - Insecure XML parsing
6. Deserialization vulnerabilities - pickle.loads and yaml.load with untrusted data
7. Hardcoded cryptographic keys - JWT keys hardcoded in source
8. Hardcoded secrets - Non-cryptographic secrets in code
Medium/Low Severity Issues:
• Hardcoded passwords and credentials
• CSRF protection disabled on multiple endpoints
• Insecure cookie configurations (missing HttpOnly/Secure flags)
• Weak hashing algorithms (MD5)
• Debug mode enabled in production
• SSRF vulnerabilities
This is a comprehensive security assessment showing that pygoat (being a
deliberately vulnerable application for educational purposes) contains numerous
intentional security flaws across all severity levels, making it an excellent
training platform for learning about web application security vulnerabilities.Abschließend können wir mit ausgewähltem Code Droid das LLM bitten, eine dieser Schwachstellen mit hoher Priorität zu beheben.
> ✗ [High] SQL Injection
Path: introduction/views.py, line 871
Info: Unsanitized input from an HTTP parameter flows into
introduction.models.sql_lab_table.objects.raw, where it is used in an SQL query.
This
may result in an SQL Injection vulnerability. Can you fix this vulnerability and
then re-scan to show that it is fixed?
⛬ I'll help you fix the SQL injection vulnerability on line 871 in
introduction/views.py and then re-scan to verify the fix. Let me first examine the
vulnerable code.
PLAN Updated: 3 total (2 pending, 1 in progress, 0 completed)
○ Examine SQL injection vulnerability on line 871 in views.py
○ Fix the SQL injection vulnerability using parameterized queries
○ Re-run Snyk scan to verify the fix
READ (introduction/views.py, offset: 860, limit: 20)
↳ Read 22 lines.
⛬ Let me see more context around the vulnerable code to understand how the SQL query
is constructed:
READ (introduction/views.py, offset: 840, limit: 40)
↳ Read 42 lines.
⛬ Now I can see the vulnerability clearly. The SQL query on line 855 is constructed
by directly concatenating user input without sanitization. Let me also check the
imports to see what model is being used:
GREP ("from.*models import|import.*mo...", content mode)
↳ Read 1 line.
GREP ("sql_lab_table", content mode)
↳ Read 7 lines.
⛬ Perfect! Now I understand the vulnerability. The code is directly concatenating
user input (name and password) into the SQL query string, making it vulnerable to
SQL injection. Let me fix this by using parameterized queries:
PLAN Updated: 3 total (1 pending, 1 in progress, 1 completed)
○ Examine SQL injection vulnerability on line 871 in views.py
○ Fix the SQL injection vulnerability using parameterized queries
○ Re-run Snyk scan to verify the fix
EDIT (introduction/views.py)
↳ Succeeded. File edited. (+3 added, -2 removed)
╭───────────────────────────────────────────────────────────────────────────────╮
│ 854 │ 854 print(password) │
│ 855 │ 855 │
│ 856 │ 856 if name: │
│ 857 │ - sql_query = "SELECT * FROM introduction_sql_lab_tabl…│
│ │ 857 + # Fixed SQL injection by using parameterized query │
│ │ 858 + sql_query = "SELECT * FROM introduction_sql_lab_tabl…│
│ 858 │ 859 │
│ 859 │ 860 sql_instance = sql_lab_table(id="admin", password="6…│
│ 860 │ 861 sql_instance.save() │
│ │
│... 7 unchanged lines ... │
│ │
│ 868 │ 869 print(sql_query) │
│ 869 │ 870 │
│ 870 │ 871 try: │
│ 871 │ - user = sql_lab_table.objects.raw(sql_query) │
│ │ 872 + user = sql_lab_table.objects.raw(sql_query, [nam…│
│ 872 │ 873 user = user[0].id │
│ 873 │ 874 print(user) │
│ 874 │ 875 │
╰───────────────────────────────────────────────────────────────────────────────╯
⛬ Great! I've successfully fixed the SQL injection vulnerability by:
1. Changing the SQL query construction: Instead of directly concatenating user
input into the SQL string, I'm now using parameterized query placeholders (%s)
2. Using parameterized execution: The raw() method now receives the parameters as a
separate list [name, password], which ensures proper escaping and prevents SQL
injection
Now let's run the Snyk scan again to verify that this specific vulnerability has
been fixed:
PLAN Updated: 3 total (0 pending, 1 in progress, 2 completed)
○ Examine SQL injection vulnerability on line 871 in views.py
○ Fix the SQL injection vulnerability using parameterized queries
○ Re-run Snyk scan to verify the fix
[MCP] SNYK:SNYK_CODE_SCAN (/home/owler/Documents/Snyk/factory/pygoat)
↳
Testing /home/owler/Documents/Snyk/factory/pygoat ...
✗ [Low] Use of Hardcoded Credentials
Path: introduction/playground/A9/api.py, line 17
Info: Do not hardcode credentials in code. Found hardcoded credential used in a
condition.
…
✗ [High] Hardcoded Non-Cryptographic Secret
Path: pygoat/settings.py, line 25
Info: Avoid hardcoding values that are meant to be secret. Found a hardcoded string
used in here.
✔ Test completed
Organization: stephen.thoemmes
Test type: Static code analysis
Project path: /home/owler/Documents/Snyk/factory/pygoat
Summary:
100 Code issues found
14 [High] 44 [Medium] 42 [Low]
PLAN Updated: 3 total (0 pending, 0 in progress, 3 completed)
○ Examine SQL injection vulnerability on line 871 in views.py
○ Fix the SQL injection vulnerability using parameterized queries
○ Re-run Snyk scan to verify the fix
⛬ Perfect! The fix has been successfully verified. Here's what happened:
✅ SQL Injection Vulnerability Fixed!
Before the fix:
• 101 total issues (15 High, 44 Medium, 42 Low)
• SQL Injection vulnerability at introduction/views.py, line 871
After the fix:
• 100 total issues (14 High, 44 Medium, 42 Low)
• The SQL injection vulnerability is no longer reported ✅
Summary of the Fix
I successfully fixed the SQL injection vulnerability by:
1. Replaced vulnerable string concatenation:
```python
# BEFORE (vulnerable):
sql_query = "SELECT * FROM introduction_sql_lab_table WHERE id='"+name+"'AND
password='"+password+"'"
user = sql_lab_table.objects.raw(sql_query)
```
2. With secure parameterized query:
```python
# AFTER (secure):
sql_query = "SELECT * FROM introduction_sql_lab_table WHERE id=%s AND
password=%s"
user = sql_lab_table.objects.raw(sql_query, [name, password])
```
The Snyk scan now shows 1 fewer issue (from 101 to 100), confirming that the
specific SQL injection vulnerability on line 871 has been eliminated. The fix uses
Django's built-in parameter binding which automatically escapes user input and
prevents SQL injection attacks.
Das zeigt das Potenzial eines neuen Paradigmas für DevSecOps-Workflows. Statt Sicherheit als separates Anliegen zu behandeln, das oft erst spät berücksichtigt wird, können wir die Erkennung und Behebung von Schwachstellen jetzt direkt in den Entwicklungsprozess integrieren. Durch die Kombination spezialisierter Factory-AI-Agenten mit MCP-Servern wie dem von Snyk lassen sich Sicherheitsprobleme nicht nur erkennen, sondern auch schnell beheben und auf korrekte Lösungen überprüfen – alles in derselben Oberfläche, in der Entwickler bereits arbeiten.
Die nächsten Schritte mit Factory AI und Snyk Studio
Mit der zunehmenden Verbreitung von MCP und immer mehr MCP-Servern für Sicherheitstools können wir uns Droids vorstellen, die nicht nur Schwachstellen beheben, sondern auch Sicherheitstests erstellen, die Dokumentation an Sicherheitskorrekturen anpassen und sogar Tickets zur manuellen Prüfung komplexer Probleme erstellen. Dank des modularen Aufbaus des Droid-Systems von Factory und des MCP-Protokolls können sich diese Funktionen unabhängig voneinander weiterentwickeln und trotzdem interoperabel bleiben.
Für Teams, die ähnliche Workflows einführen möchten, ist die Einrichtung unkompliziert: Installieren Sie die Factory-CLI, fügen Sie Ihre bevorzugten MCP-Server hinzu und beginnen Sie mit der Behebung von Schwachstellen, um Vertrauen in den automatisierten Prozess zu gewinnen. Entscheidend ist, KI-Agenten als Verstärkung Ihres Sicherheitsteams zu betrachten – nicht als Ersatz. Sie eignen sich hervorragend für routinemäßige, gut verstandene Korrekturen, während sich Menschen auf neue Sicherheitsherausforderungen konzentrieren, die kreative Problemlösungen erfordern.
Möchten Sie mehr über die Absicherung des MCP-Server-Ökosystems erfahren? Laden Sie noch heute unser E-Book herunter.
E-BOOK
Das MCP-Server-Ökosystem absichern
Entdecken Sie neue Angriffspfade und analysieren Sie reale Vorfälle. Erfahren Sie, wie Sie sich mit praktischen, flow-bewussten Strategien davor schützen.