
Ah shhgit! Trouvez des secrets dans votre code. Détection de secrets pour vos dépôts GitHub, GitLab et Bitbucket.
Divulguer accidentellement des secrets — noms d'utilisateur et mots de passe, jetons API ou clés privées — dans un dépôt de code public est le pire cauchemar des développeurs et des équipes de sécurité. Les fraudeurs scrutent constamment les dépôts de code publics pour ces secrets afin de prendre pied dans les systèmes. Le code est plus interconnecté que jamais, donc ces secrets donnent souvent accès à des données privées et sensibles — infrastructures cloud, serveurs de bases de données, passerelles de paiement et systèmes de stockage de fichiers, pour n'en citer que quelques-uns.
shhgit peut analyser en continu vos dépôts de code pour détecter ces secrets et vous alerter.
Vous avez deux options. Je recommande la première car elle vous donnera accès à l'interface web live de shhgit. Utilisez la seconde option si vous souhaitez uniquement l'interface en ligne de commande.
git clone https://github.com/eth0izzle/shhgit.gitdocker-compose buildconfig.yaml (par exemple en ajoutant vos jetons GitHub)docker-compose upNote : cette méthode n'inclut pas l'interface web de shhgit
go get github.com/eth0izzle/shhgit téléchargera et construira automatiquement shhgit. Ou vous pouvez cloner ce dépôt et exécuter go build -v -i.config.yaml et consultez l'utilisation ci-dessous.shhgit peut fonctionner de deux manières : en consommant les API publiques de GitHub, Gist, GitLab et BitBucket ou en traitant des fichiers dans un répertoire local.
Par défaut, shhgit s'exécutera dans le premier mode 'public'. Pour GitHub et Gist, vous devrez obtenir et fournir un jeton d'accès (voir ce guide ; il ne nécessite aucun scope ni permission). Ensuite, placez-le sous github_access_tokens dans config.yaml). GitLab et BitBucket ne nécessitent aucun jeton API.
Vous pouvez également ignorer les signatures et utiliser shhgit avec votre propre requête de recherche personnalisée, par exemple pour trouver toutes les clés AWS, vous pouvez utiliser shhgit --search-query AWS_ACCESS_KEY_ID=AKIA. Et pour exécuter en mode local (et peut-être l'intégrer dans vos pipelines CI), vous pouvez passer l'option --local (voir utilisation ci-dessous).
--clone-repository-timeout
Maximum time it should take to clone a repository in seconds (default 10)
--config-path
Searches for config.yaml from given directory. If not set, tries to find if from shhgit binary's and current directory
--csv-path
Specify a path if you want to write found secrets to a CSV. Leave blank to disable
--debug
Print debugging information
--entropy-threshold
Finds high entropy strings in files. Higher threshold = more secret secrets, lower threshold = more false positives. Set to 0 to disable entropy checks (default 5.0)
--local
Specify local directory (absolute path) which to scan. Scans only given directory recursively. No need to have Github tokens with local run.
--maximum-file-size
Maximum file size to process in KB (default 512)
--maximum-repository-size
Maximum repository size to download and process in KB) (default 5120)
--minimum-stars
Only clone repositories with this many stars or higher. Set to 0 to ignore star count (default 0)
--path-checks
Set to false to disable file name/path signature checking, i.e. just match regex patterns (default true)
--process-gists
Watch and process Gists in real time. Set to false to disable (default true)
--search-query
Specify a search string to ignore signatures and filter on files containing this string (regex compatible)
--silent
Suppress all output except for errors
--temp-directory
Directory to store repositories/matches (default "%temp%\shhgit")
--threads
Number of concurrent threads to use (default number of logical CPUs)
Le fichier config.yaml comporte 7 éléments. Un fichier par défaut est fourni.
github_access_tokens: # provide at least one token
- 'token one'
- 'token two'
webhook: '' # URL to a POST webhook.
webhook_payload: '' # Payload to POST to the webhook URL
blacklisted_strings: [] # list of strings to ignore
blacklisted_extensions: [] # list of extensions to ignore
blacklisted_paths: [] # list of paths to ignore
blacklisted_entropy_extensions: [] # additional extensions to ignore for entropy checks
signatures: # list of signatures to check
- part: '' # either filename, extension, path or contents
match: '' # simple text comparison (if no regex element)
regex: '' # regex pattern (if no match element)
name: '' # name of the signature
shhgit est livré avec 150 signatures. Vous pouvez en supprimer ou en ajouter en modifiant le fichier config.yaml.
Fichier de base de données du gestionnaire de mots de passe 1Password, Jeton d'authentification Amazon MWS, Fichier Apache htpasswd, Fichier de base de données du trousseau Apple, Artifactory, Identifiant de clé d'accès AWS, Valeur d'identifiant de clé d'accès AWS, Identifiant de compte AWS, Fichier d'identifiants AWS CLI, Informations du fichier d'identifiants AWS, Clé d'accès secrète AWS, Jeton de session AWS, Fichier de schéma de configuration de service Azure, Fichier de configuration Carrierwave, Fichier de configuration Chef Knife, Clé privée Chef, CodeClimate, Fichier de configuration pour le processus de connexion automatique, Contient une clé privée, Contient une clé privée, Fichier d'identifiants ProFTPd de sauvegarde cPanel, Fichier journal Day One, Fichier de configuration du gestionnaire de base de données SQL DBeaver, Fichier de configuration du client en ligne de commande doctl DigitalOcean, Fichier de configuration Django, Fichier de configuration Docker, Fichier d'authentification du registre Docker, Fichier de configuration d'environnement, Configuration esmtp, Jeton d'accès Facebook, Identifiant client Facebook, Clé secrète Facebook, Fichier de configuration FTP FileZilla, Fichier des serveurs récents FTP FileZilla, Base de données des mots de passe enregistrés Firefox, Fichier d'identifiants du helper git-credential-store, Fichier de configuration Git, Fichier de configuration du client en ligne de commande GitHub Hub, Clé GitHub, Fichier de base de données du trousseau GNOME, Fichier de base de données GnuCash, Compte de service Google (GCM), Clé API Google Cloud, Jeton d'accès OAuth Google, Clé OAuth Google, Clé API Heroku, Fichier de configuration Heroku, Fichier de configuration de la liste des serveurs du client IRC Hexchat/XChat, Chaîne de haute entropie, HockeyApp, Fichier de configuration du client IRC Irssi, Fichier de magasin de clés Java, Fichier du plugin Jenkins publish over SSH, Configuration de l'IDE Jetbrains, Fichier de base de données du gestionnaire de portefeuille KDE, Fichier de base de données du gestionnaire de mots de passe KeePass, Identifiant client LinkedIn, Clé secrète LinkedIn, Fichier de configuration du pare-feu Little Snitch, Fichier journal, Clé API MailChimp, Clé API MailGun, Fichier de clé de récupération Microsoft BitLocker, Fichier de mot de passe du module de plateforme de confiance Microsoft BitLocker, Fichier de base de données Microsoft SQL, Fichier de base de données compacte Microsoft SQL Server, Fichier de configuration Mongoid, Fichier de configuration du client e-mail Mutt, Fichier d'historique des commandes du client MySQL, Dump MySQL avec hachages bcrypt, netrc avec identifiants SMTP, Fichier de capture de trafic réseau, Fichier de configuration NPM, Clé API NuGet, Fichier de configuration OmniAuth, Fichier de configuration du client OpenVPN, Équipe Outlook, Fichier de base de données Password Safe, Jeton d'accès PayPal/Braintree, Fichier de configuration PHP, Clé API Picatic, Fichier de configuration du compte client de chat Pidgin, Clé privée OTR Pidgin, Fichier d'historique des commandes du client PostgreSQL, Fichier de mot de passe PostgreSQL, Clé privée cryptographique potentielle, Fichier d'identifiants Jenkins potentiel, Fichier journal jrnl potentiel, Fichier passwd Linux potentiel, Fichier shadow Linux potentiel, Fichier de configuration MediaWiki potentiel, Clé privée potentielle (.asc), Clé privée potentielle (.p21), Clé privée potentielle (.pem), Clé privée potentielle (.pfx), Clé privée potentielle (.pkcs12), Clé privée PuTTYgen potentielle, Fichier de configuration de base de données Ruby on Rails potentiel, Clé privée SSH (.dsa), Clé privée SSH (.ecdsa), Clé privée SSH (.ed25519), Clé privée SSH (.rsa), Clé publique SSH, Fichier bytecode Python, Base de données de clés API du framework de reconnaissance web Recon-ng, remote-sync pour Atom, Fichier de connexion Bureau à distance, Fichier de configuration du gestionnaire MongoDB Robomongo, Fichier d'identifiants Rubygems, Fichier d'historique de la console IRB Ruby, Clé maître Ruby on Rails, Secrets Ruby on Rails, Fichier de configuration du jeton secret Ruby on Rails, Fichier de configuration S3cmd, Identifiants Salesforce, Jeton Sauce, Fichier de signets du gestionnaire de base de données MySQL Sequel Pro, déploiement SFTP pour Atom, déploiement SFTP pour Atom, Fichier de configuration de connexion SFTP, Fichier de configuration d'alias de commande shell, Fichier d'historique des commandes shell, Fichier de configuration shell (.bashrc, .zshrc, .cshrc), Fichier de configuration shell (.exports), Fichier de configuration shell (.extra), Fichier de configuration shell (.functions), Fichier de configuration de profil shell, Jeton Slack, Webhook Slack, Clé API SonarQube Docs, Fichier de vidage de données SQL, Fichier de vidage SQL, Fichier de base de données SQLite3, Fichier de base de données SQLite, Jeton d'accès Square, Secret OAuth Square, Fichier de configuration SSH, Mot de passe SSH, Clé API Stripe, Fichier de configuration du client Twitter en ligne de commande T, Fichier de configuration de variables Terraform, Configuration de l'outil de gestion DigitalOcean Tugboat, Fichier de configuration VPN Tunnelblick, Clé API Twilo, Identifiant client Twitter, Clé secrète Twitter, Nom d'utilisateur et mot de passe dans l'URI, Fichier de configuration du serveur Ventrilo, vscode-sftp pour VSCode, Fichier de données chiffrées de volume complet Windows BitLocker, WP-Config
git checkout -b my-new-featuregit commit -am 'Ajouter une fonctionnalité'git push origin my-new-featureJe décline toute responsabilité quant à l'utilisation de cet outil. Ne soyez pas un con.
MIT. Voir LICENSE