
Outil d'énumération et d'attaque de pipelines GitHub Actions
[!WARNING]
Ce dépôt est obsolète et archivé
Gato a été remplacé par Trajan, l'outil multi-plateforme de détection de vulnérabilités et d'automatisation d'attaques CI/CD de Praetorian. Trajan consolide les capacités d'attaque CI/CD de GitHub Actions (Gato) et GitLab (Glato) en un seul projet activement maintenu.
Veuillez migrer vers Trajan : https://github.com/praetorian-inc/trajan
Aucune mise à jour, correction de bug ou correctif de sécurité ne sera plus apporté à ce dépôt.
Gato, ou GitHub Attack Toolkit, est un outil d'énumération et d'attaque qui permet aux équipes bleues (blue teamers) et aux professionnels de la sécurité offensive d'identifier et d'exploiter les vulnérabilités de pipeline dans les dépôts publics et privés d'une organisation GitHub.
L'outil dispose de fonctionnalités de post-exploitation pour exploiter un jeton d'accès personnel compromis, en plus de fonctionnalités d'énumération pour identifier les vulnérabilités d'exécution de pipeline empoisonné et les secrets d'artefacts d'actions contre les dépôts publics.
GitHub recommande que les exécuteurs auto-hébergés ne soient utilisés que pour les dépôts privés, mais des milliers d'organisations utilisent des exécuteurs auto-hébergés. Les configurations par défaut sont souvent vulnérables, et Gato utilise un mélange d'analyse de fichiers de workflow et d'analyse de journaux d'exécution pour identifier les dépôts potentiellement vulnérables à grande échelle.
Gato version 1.7 introduit le Actions Artifacts Secrets Scanner.
Le Actions Artifacts Secrets Scanner énumère les artefacts de workflow GitHub Actions pour y trouver des secrets. Les chercheurs de Praetorian ont utilisé le scanner pour identifier des vulnérabilités critiques dans plusieurs projets open-source importants. Les détails de ces vulnérabilités seront publiés une fois les processus de divulgation terminés. Ce travail a été initialement inspiré par des recherches de Palo Alto Networks.
Le Actions Artifacts Secrets Scanner effectue les actions suivantes :
NoseyParker doit être installé dans le $PATH du système exécutant le Actions Artifacts Secrets Scanner.
Les secrets dans les artefacts de workflow publics peuvent contenir de nombreux faux positifs. Par défaut, le Actions Artifacts Secrets Scanner exclut les règles et résultats associés aux faux positifs courants. Pour inclure tous les résultats d'analyse des secrets, vous pouvez utiliser le drapeau --include_all_artifact_secrets.
Voici un exemple de commande qui exécute le Actions Artifacts Secrets Scanner sur une liste d'organisations GitHub, désactive l'énumération des exécuteurs auto-hébergés, inclut tous les résultats de secrets d'artefacts et génère la sortie dans un fichier JSON.
gato e --enum_wf_artifacts --include_all_artifact_secrets --skip_sh_runner_enum -O testorgs.txt -oJ testorgoutput.json
Par défaut, le Actions Artifacts Secrets Scanner impose les limitations suivantes pour réduire le temps passé sur un seul dépôt :
Ces contraintes ont été optimisées pour que le Actions Artifacts Secrets Scanner puisse analyser les 200 principales organisations GitHub en 48 heures. Si vous souhaitez modifier ces contraintes, vous pouvez les mettre à jour dans la fonction scan_wf_artifacts() de gato/enumerate/repository.py.
Gato prend en charge OS X et Linux avec au moins Python 3.7.
Pour installer l'outil, clonez simplement le dépôt et utilisez pip install. Nous recommandons de le faire dans un environnement virtuel.
git clone https://github.com/praetorian-inc/gato
cd gato
python3 -m venv venv
source venv/bin/activate
pip install .
Gato nécessite également que git version 2.27 ou supérieure soit installé et présent dans le PATH du système. Pour exécuter le module d'attaque par fork PR, sed doit également être installé et présent dans le PATH du système.
Nous maintenons une branche de développement qui contient des fonctionnalités plus récentes de Gato non encore ajoutées à la branche principale. Il y a une probabilité accrue de rencontrer des bugs ; cependant, nous exécutons toujours notre suite de tests d'intégration sur la branche dev, donc il ne devrait pas y avoir de bugs flagrants.
Si vous souhaitez utiliser la branche dev, vérifiez-la simplement avant d'exécuter pip install - c'est tout !
Si vous rencontrez des bugs pour votre cas d'utilisation spécifique, n'hésitez pas à ouvrir une issue !
Après avoir installé l'outil, il peut être lancé en exécutant gato ou praetorian-gato.
Nous recommandons de consulter les paramètres de l'outil de base avec gato -h, et les paramètres de chacun des modules de l'outil en exécutant les commandes suivantes :
gato search -hgato enum -hgato attack -hL'outil nécessite un jeton d'installation d'application ou un jeton classique GitHub pour fonctionner. Pour en créer un, connectez-vous à GitHub et allez dans GitHub Developer Settings et sélectionnez Generate New Token puis Generate new token (classic).
Après avoir créé ce jeton, définissez la variable d'environnement GH_TOKEN dans votre shell en exécutant export GH_TOKEN=<VOTRE_JETON_CREE>. Alternativement, stockez le jeton dans un gestionnaire de mots de passe sécurisé et saisissez-le lorsque l'application vous le demande.
Si vous créez un jeton d'installation d'application GitHub, l'application doit avoir au moins Actions:read et Contents:read pour exécuter les modules d'énumération.
Pour le dépannage et des détails supplémentaires, tels que l'installation en mode développeur ou l'exécution de tests unitaires, veuillez consulter le wiki.
Veuillez consulter le wiki pour une documentation détaillée, ainsi que les considérations OpSec pour les différents modules de l'outil !
Si vous pensez avoir identifié un bug dans le logiciel, veuillez ouvrir une issue contenant la sortie de l'outil, ainsi que les actions que vous tentiez d'effectuer.
Si vous n'êtes pas sûr que le comportement soit un bug, utilisez plutôt la section discussions !
Les contributions sont les bienvenues ! Veuillez consulter notre méthodologie de conception et nos normes de codage avant de travailler sur une nouvelle fonctionnalité !
De plus, si vous proposez des changements importants à l'outil, veuillez ouvrir une issue pour entamer une conversation sur la motivation des changements.
Gato est sous licence Apache License, Version 2.0.
Copyright 2023 Praetorian Security, Inc
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.