
Exemples de flux de tâches d'agents IA et de serveurs MCP pour auditer le code source, trier les problèmes et détecter les vulnérabilités dans les projets web, Android et iOS.
Ce dépôt contient des taskflows d'exemple à utiliser avec le SecLab Taskflow Agent, ainsi que les serveurs MCP personnalisés nécessaires à l'exécution des taskflows.
(.venv) avant l'invite dans le terminal.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
Essayez maintenant d'exécuter nos taskflows d'audit sur l'un de vos projets. Ici, nous utilisons OWASP Juice Shop comme exemple :
./scripts/audit/run_audit.sh juice-shop/juice-shop
⚠️ Remarque : les taskflows d'audit peuvent prendre plusieurs heures à s'exécuter, en particulier sur des projets volumineux, et génèrent un grand nombre de requêtes IA, ce qui peut coûter une somme non négligeable. Par défaut, les taskflows utilisent l'API Copilot. Vous trouverez plus d'informations sur la facturation Copilot ici. Vous pouvez également utiliser une autre API d'IA en définissant la variable d'environnement
AI_API_ENDPOINT, comme expliqué ici.
Les résultats de l'audit sont écrits dans une base de données SQLite, qui est ouverte automatiquement dans une visionneuse SQLite à la fin de l'exécution. Les résultats se trouvent dans la table nommée « audit_result ». La table possède une colonne nommée « has_vulnerability », avec des coches dans les lignes qui sont le plus susceptibles d'être de véritables vulnérabilités.
Le workflow d'audit reconnaît les applications mobiles Android, iOS et multiplateformes, en plus des applications web et des bibliothèques. La collecte des points d'entrée mobiles enregistre les composants Android exportés, les deep links, les schémas d'URL, les Universal Links, les extensions d'application, et les ponts JavaScript WebView, y compris leurs permissions, leur statut d'exportation et leurs filtres d'entrée.
Le lanceur d'audit collecte ces métadonnées avant la classification, qui applique des
recommandations spécifiques aux mobiles aux composants marqués comme applications mobiles. Les options existantes --advisory et -m s'appliquent également aux exécutions mobiles.
Les deux taskflows de points d'entrée mobiles utilisent la boîte à outils d'accès aux sources basée sur conteneur et nécessitent Docker.
Les métadonnées mobiles sont stockées dans la table mobile_entry_point. Les bases de données de contexte existantes acquièrent automatiquement la colonne
nullable application.is_mobile_app sans supprimer les résultats existants.
Nous recommandons d'exécuter les taskflows dans un environnement isolé. Les GitHub Codespaces sont pratiques, ou si vous préférez, vous pouvez utiliser le script run_seclab_agent.sh pour exécuter un conteneur docker du seclab-taskflow-agent comme décrit ici. Notez que ce script doit être exécuté depuis le répertoire principal du dépôt, et que le fichier .env contenant les variables d'environnement pour le stockage des données des serveurs MCP personnalisés doit se trouver dans le même répertoire.
Tout d'abord, créez un fichier .env dans le répertoire principal du dépôt. Pour run_seclab_agent.sh, vous pouvez utiliser :
MEMCACHE_STATE_DIR=/app/data
CODEQL_DBS_BASE_PATH=/app/data
DATA_DIR=/app/data
LOG_DIR=/app/logs
La variable MEMCACHE_STATE_DIR est nécessaire pour conserver certaines données intermédiaires dans le memcache, DATA_DIR est nécessaire pour que divers serveurs mcp stockent les résultats intermédiaires, et LOG_DIR est utilisé pour stocker les fichiers journaux générés par les serveurs. Ces variables peuvent être définies dans un fichier .env dans le répertoire principal. Si aucune variable d'environnement n'est définie pour les serveurs MCP personnalisés, les dossiers pertinents seront créés automatiquement. L'emplacement dépend de la plateforme et est défini par platformdirs.
De plus, les points de terminaison et les secrets de l'API d'IA doivent également être configurés via des variables d'environnement ou des secrets Codespace. En particulier, les variables d'environnement AI_API_TOKEN et AI_API_ENDPOINT doivent être définies avec les points de terminaison et les identifiants appropriés de l'API d'IA. Si elles ne sont pas définies, la valeur par défaut de AI_API_ENDPOINT est GitHub Copilot :
AI_API_ENDPOINT="https://api.githubcopilot.com"
De plus, la variable d'environnement GH_TOKEN doit également être définie pour permettre l'interaction avec l'API GitHub, comme la récupération de contenu, la création de tickets, etc.
Certains taskflows individuels peuvent nécessiter une configuration supplémentaire ; veuillez consulter le README.md dans les sous-répertoires concernés pour connaître les exigences supplémentaires.
Après avoir défini les variables d'environnement pertinentes, exécutez un taskflow d'exemple avec :
./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 est un dépôt compagnon du dépôt SecLab Taskflow Agent. SecLab Taskflow Agent est un framework agentique expérimental maintenu par GitHub Security Lab. Ce dépôt fournit des taskflows d'exemple et des ressources de support à utiliser avec le SecLab Taskflow Agent. Nous utilisons l'agent et ces taskflows pour expérimenter l'utilisation d'agents IA à des fins de sécurité, comme l'audit de code à la recherche de vulnérabilités ou le triage de tickets.
Nous serions ravis de recevoir vos retours. Veuillez créer un ticket pour nous envoyer une demande de fonctionnalité ou un rapport de bug. Nous accueillons également les pull requests (consultez nos directives de contribution pour plus d'informations si vous souhaitez contribuer).
Les images de conteneur de ghcr.io/githubsecuritylab/ utilisent le tag latest.
Comme ce tag est mutable, une image mise en cache localement peut devenir obsolète et
Docker peut continuer à l'utiliser au lieu de l'image actuelle du registre. Supprimez les
images locales avant d'exécuter un taskflow lorsque vous devez vous assurer que Docker récupère
les dernières versions :
docker rmi -f $(docker images --format '{{.Repository}}:{{.Tag}}' | grep '^ghcr.io/githubsecuritylab/')