
Une façon de surveiller en continu les informations sensibles qui pourraient être exposées sur Github
Je sais qu'il existe de nombreux autres outils pour trouver des informations sensibles actuellement divulguées sur Github, j'en utilise encore moi-même certains. Cependant, je pense qu'il leur manque encore certaines fonctionnalités comme :
D'autres outils sont plus axés sur la recherche d'informations sensibles existant dans un dépôt dont l'adresse Git a été fournie à l'outil. Il n'existe qu'une poignée d'outils similaires au moment où j'ai développé GitMonitor qui se concentrent sur la « recherche » des dépôts dont vous devez d'abord vous préoccuper, trouver tous les dépôts pertinents, puis « vérifier » si des informations sensibles existent parmi eux.
En plus des règles pour « vérifier les informations sensibles », l'outil a également besoin de règles pour « rechercher les dépôts d'intérêt ». Les dépôts à considérer peuvent être ceux qui contiennent des mots-clés liés à l'entreprise ou au projet.
Si vous êtes un chasseur de bugs, vous ne vous intéresserez qu'à quelques cibles à la fois. Cependant, si vous êtes un ingénieur en sécurité pour une entreprise, vous aurez besoin de savoir quand un dépôt lié à votre entreprise ou à votre projet apparaît et qu'il peut contenir des informations sensibles. Ces dépôts peuvent apparaître n'importe où sur Github, avec n'importe quel nom et publiés par n'importe quel compte. Vous devriez également recevoir une alerte dès qu'un tel dépôt apparaît (surveillance continue).
L'outil dispose d'un mécanisme de rapport flexible.
C'est pourquoi j'ai créé cet outil - GitMonitor. GitMonitor utilise deux ensembles de règles différents pour trouver ce dont vous avez besoin. « L'ensemble de règles de recherche » recherche les dépôts pouvant être liés à votre organisation ou à des projets internes, ou à toute autre chose, clone les dépôts correspondants en local. Ensuite, « l'ensemble de règles de filtrage des informations sensibles » vérifie si ces dépôts contiennent des informations sensibles. Enfin, l'outil fait un rapport via Slack. Vous pouvez utiliser cet outil avec Cronjob pour créer un système de surveillance continue afin de suivre les informations sensibles liées à votre organisation qui fuient sur Github et recevoir les résultats via Slack.
Mise à jour le 15 juin 2020 : Nous avons mis à jour vers la version 1.0. Cette version corrige quelques bogues pour que Gitmonitor fonctionne de manière stable. Nous vous recommandons d'effectuer un git pull si vous utilisez des versions précédentes.
Utilise deux ensembles de règles différents : un « ensemble de règles de recherche » (yaml) pour rechercher le dépôt d'intérêt, et un « ensemble de règles de filtrage » (regex) pour vérifier si ces contenus contiennent des informations sensibles. Les règles de recherche (yaml) et les règles de filtrage (regex) sont définies séparément. Les utilisateurs peuvent définir facilement et intuitivement des règles yaml et des regex.
« Ensemble de règles de recherche » : Vous pouvez créer de nombreuses règles différentes en utilisant différents fichiers yaml. Les règles vous permettent de définir de manière flexible comment vous souhaitez rechercher des dépôts : vous pouvez utiliser des mots-clés, ou des mots-clés associés au langage, au nom de fichier et à l'extension, ou vous pouvez également définir d'exclure des dépôts de la recherche en fonction du langage, du nom de fichier ou de l'extension. Les mots-clés seront recherchés dans les « noms des dépôts », les « codes des dépôts » et également les « commits ».
« Ensemble de règles de filtrage » : Vous pouvez ajouter ou modifier facilement des regex pour trouver des informations sensibles qui pourraient exister dans les dépôts.
Le premier dépôt qui correspond à l'ensemble de règles de recherche sera cloné en local. Ensuite, l'ensemble de règles de filtrage vérifiera si ce dépôt contient des informations sensibles. Après avoir terminé la vérification des informations sensibles, Gitmonitor enregistrera les résultats et supprimera automatiquement ce dépôt en local pour économiser de l'espace avant de continuer à répéter ce processus jusqu'à ce que tous les dépôts pertinents aient été trouvés et vérifiés.
Rapport via Slack.
Cet outil peut être planifié avec Cronjob pour une surveillance continue.

> python3 -m pip install -r requirements.txt
Assurez-vous d'avoir PyYAML version 5x ou supérieure installée (pip3 install --ignore-installed PyYAML)
Le tableau suivant explique la signification de chaque clé dans le fichier de configuration :
> export GIT_USERNAME=votre nom d'utilisateur Github
> export GIT_PASSWORD=votre clé personnelle ou mot de passe Github
Ou définir les identifiants dans le fichier de configuration (déconseillé) :
Exemple de fichier de configuration lorsque vous définissez les identifiants dans les variables d'environnement

Vous pouvez créer différents fichiers yaml comme le modèle de règle pour définir plusieurs mots-clés. Un fichier de règle ressemblera à l'image ci-dessous :

> python3 gitmonitor.py
Par exemple :

De nombreux domaines de ce projet peuvent être améliorés et modifiés de manière significative lors du remaniement du code actuel et de l'implémentation de nouvelles fonctionnalités. Les retours avec des améliorations et les pull requests de la communauté seront hautement appréciés et acceptés.
En général, nous suivons le flux de travail Git « fork-and-pull ».
NOTE : Assurez-vous de fusionner les dernières modifications de « upstream » avant de faire une pull request !
| Clé | Description |
|---|
| user | Nom d'utilisateur Github - Laissez vide si vous avez configuré les identifiants Github via des variables d'environnement |
| pass | Mot de passe Github - Laissez vide si vous avez configuré les identifiants Github via des variables d'environnement |
| webhooks | Jeton Webhook entrant pour poster les messages de GitMonitor vers Slack |
| rule | Le répertoire contenant l'ensemble de règles de recherche |
| source | Le répertoire de téléchargement du dépôt |
| log | Le répertoire contiendra le fichier JSON qui enregistre l'état après chaque analyse ; ce fichier JSON est utilisé pour comparer les résultats entre les analyses (pour identifier les nouveaux dépôts) |
| start | Définit la bannière pour le début de l'analyse et la bannière pour le résultat de l'analyse de l'ensemble de règles de filtrage des informations sensibles - S'affichera dans les résultats envoyés à Slack |
| end | Définit la bannière pour la fin de l'analyse et la bannière pour le résultat de l'analyse de l'ensemble de règles de recherche - S'affichera dans les résultats envoyés à Slack |
| all | Définit la bannière pour afficher tous les dépôts - S'affichera dans les résultats envoyés à Slack |