
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.