
Beispielhafte KI-Agent-Taskflows und MCP-Server zum Auditieren von Quellcode, Triage von Issues und Erkennen von Schwachstellen in Web-, Android- und iOS-Projekten.
Dieses Repository enthält Beispiel-Taskflows für die Verwendung mit dem SecLab Taskflow Agent sowie die benutzerdefinierten MCP-Server, die zum Ausführen der Taskflows benötigt werden.
(.venv) vor der Eingabeaufforderung im Terminal siehst.python -m seclab_taskflow_agent -t seclab_taskflows.taskflows.audit.ghsa_variant_analysis_demo -g repo=github/cmark-gfm -g ghsa=GHSA-c944-cv5f-hpvr
Versuche nun, unsere Audit-Taskflows für eines deiner Projekte auszuführen. Hier verwenden wir den OWASP Juice Shop als Beispiel:
./scripts/audit/run_audit.sh juice-shop/juice-shop
⚠️ Hinweis: Die Audit-Taskflows können mehrere Stunden dauern, insbesondere bei größeren Projekten, und lösen sehr viele KI-Anfragen aus, was nicht unerhebliche Kosten verursachen kann. Standardmäßig verwenden die Taskflows die Copilot-API. Weitere Informationen zur Copilot-Abrechnung findest du hier. Alternativ kannst du eine andere KI-API verwenden, indem du die Umgebungsvariable
AI_API_ENDPOINTsetzt, wie hier erläutert.
Die Ergebnisse des Audits werden in eine SQLite-Datenbank geschrieben, die am Ende des Durchlaufs automatisch in einem SQLite-Viewer geöffnet wird. Die Ergebnisse befinden sich in der Tabelle mit dem Namen "audit_result". Die Tabelle hat eine Spalte mit dem Namen "has_vulnerability", wobei Häkchen in den Zeilen gesetzt werden, die am wahrscheinlichsten echte Schwachstellen darstellen.
Der Audit-Workflow erkennt Android-, iOS- und plattformübergreifende mobile Anwendungen neben Webanwendungen und Bibliotheken. Die Erfassung mobiler Einstiegspunkte zeichnet exportierte Android-Komponenten, Deep Links, URL-Schemes, Universal Links, App-Erweiterungen und WebView-JavaScript-Bridges auf, einschließlich ihrer Berechtigungen, ihres Export-Status und ihrer Eingabefilter.
Der Audit-Runner sammelt diese Metadaten vor der Klassifizierung, die mobile-spezifische
Hinweise auf als mobile Anwendungen markierte Komponenten anwendet. Die bestehenden Optionen --advisory und -m gelten auch für mobile Durchläufe.
Beide Taskflows für mobile Einstiegspunkte verwenden die containerbasierte Source-Access-Toolbox und erfordern Docker.
Mobile Metadaten werden in der Tabelle mobile_entry_point gespeichert. Bestehende Kontextdatenbanken erhalten automatisch die nullbare
Spalte application.is_mobile_app, ohne bestehende Ergebnisse zu löschen.
Wir empfehlen, Taskflows in einer sandboxed Umgebung auszuführen. GitHub Codespaces sind praktisch, oder wenn du es vorziehst, kannst du das Skript run_seclab_agent.sh verwenden, um einen Docker-Container des seclab-taskflow-agent auszuführen, wie hier beschrieben. Beachte, dass dieses Skript aus dem Hauptverzeichnis des Repos ausgeführt werden muss und die .env-Datei mit den Umgebungsvariablen für die benutzerdefinierten MCP-Server zur Datenspeicherung im selben Verzeichnis liegen muss.
Erstelle zunächst eine .env-Datei im Hauptverzeichnis des Repos. Für run_seclab_agent.sh kannst du Folgendes verwenden:
MEMCACHE_STATE_DIR=/app/data
CODEQL_DBS_BASE_PATH=/app/data
DATA_DIR=/app/data
LOG_DIR=/app/logs
Die Variable MEMCACHE_STATE_DIR wird benötigt, um einige Zwischendaten im Memcache zu persistieren, DATA_DIR wird von verschiedenen MCP-Servern benötigt, um Zwischenergebnisse zu speichern, und LOG_DIR wird verwendet, um von den Servern generierte Protokolldateien zu speichern. Diese können in einer .env-Datei im Hauptverzeichnis festgelegt werden. Wenn keine Umgebungsvariablen für die benutzerdefinierten MCP-Server festgelegt sind, werden relevante Ordner automatisch erstellt. Der Speicherort hängt von der Plattform ab und wird von platformdirs festgelegt.
Darüber hinaus müssen KI-API-Endpunkte und Secrets ebenfalls über Umgebungsvariablen oder Codespace-Secrets konfiguriert werden. Insbesondere müssen die Umgebungsvariablen AI_API_TOKEN und AI_API_ENDPOINT auf die entsprechenden KI-API-Endpunkte und Anmeldedaten gesetzt werden. Wenn nicht gesetzt, ist der Standardwert für AI_API_ENDPOINT GitHub Copilot:
AI_API_ENDPOINT="https://api.githubcopilot.com"
Darüber hinaus muss auch die Umgebungsvariable GH_TOKEN gesetzt werden, um die Interaktion mit der GitHub-API zu ermöglichen, wie z. B. das Abrufen von Inhalten, das Erstellen von Issues usw.
Einzelne Taskflows können zusätzliche Einrichtung erfordern; bitte lies die README.md in den entsprechenden Unterverzeichnissen für weitere Anforderungen.
Nachdem du die relevanten Umgebungsvariablen gesetzt hast, führe einen Beispiel-Taskflow aus mit:
./scripts/run_seclab_agent.sh -t seclab_taskflows.taskflows.audit.ghsa_variant_analysis_demo -g repo=github/cmark-gfm -g ghsa=GHSA-c944-cv5f-hpvr
SecLab Taskflows ist ein Begleit-Repository zum Repository SecLab Taskflow Agent. SecLab Taskflow Agent ist ein experimentelles agentisches Framework, das vom GitHub Security Lab gepflegt wird. Dieses Repository bietet Beispiel-Taskflows und unterstützende Ressourcen für die Verwendung mit dem SecLab Taskflow Agent. Wir verwenden den Agenten und diese Taskflows, um mit der Nutzung von KI-Agenten für Sicherheitszwecke zu experimentieren, wie z. B. das Auditieren von Code auf Schwachstellen oder das Triage von Issues.
Wir würden uns über dein Feedback freuen. Bitte erstelle ein Issue, um uns eine Funktionsanfrage oder einen Fehlerbericht zu senden. Wir freuen uns auch über Pull Requests (siehe unsere Beitragsrichtlinien für weitere Informationen, wenn du beitragen möchtest).
Die Container-Images von ghcr.io/githubsecuritylab/ verwenden das Tag latest.
Da dieses Tag veränderlich ist, kann ein lokal zwischengespeichertes Image veraltet sein und
Docker verwendet es möglicherweise weiterhin anstelle des aktuellen Registry-Images. Entferne die
lokalen Images, bevor du einen Taskflow ausführst, wenn du sicherstellen musst, dass Docker die
neuesten Versionen zieht:
docker rmi -f $(docker images --format '{{.Repository}}:{{.Tag}}' | grep '^ghcr.io/githubsecuritylab/')
Dieses Projekt ist unter den Bedingungen der MIT-Lizenz lizenziert. Bitte lies die Datei LICENSE für die vollständigen Bedingungen.