
Ah shhgit! Encuentra secretos en tu código. Detección de secretos para tus repositorios de GitHub, GitLab y Bitbucket.
La filtración accidental de secretos —nombres de usuario y contraseñas, tokens de API o claves privadas— en un repositorio de código público es la peor pesadilla de los desarrolladores y equipos de seguridad. Los estafadores escanean constantemente los repositorios de código público en busca de estos secretos para obtener un punto de apoyo en los sistemas. El código está más conectado que nunca, por lo que a menudo estos secretos proporcionan acceso a datos privados y sensibles: infraestructuras en la nube, servidores de bases de datos, pasarelas de pago y sistemas de almacenamiento de archivos, por nombrar algunos.
shhgit puede escanear constantemente tus repositorios de código para encontrar y alertarte sobre estos secretos.
Tienes dos opciones. Recomiendo la primera, ya que te dará acceso a la interfaz web en vivo de shhgit. Usa la segunda opción si solo deseas la interfaz de línea de comandos.
git clone https://github.com/eth0izzle/shhgit.gitdocker-compose buildconfig.yaml (es decir, agrega tus tokens de GitHub)docker-compose upNota: este método no incluye la interfaz web de shhgit
go get github.com/eth0izzle/shhgit descargará y compilará shhgit automáticamente. O puedes clonar este repositorio y ejecutar go build -v -i.config.yaml y consulta el uso a continuación.shhgit puede funcionar de dos maneras: consumiendo las API públicas de GitHub, Gist, GitLab y BitBucket, o procesando archivos en un directorio local.
Por defecto, shhgit se ejecutará en el 'modo público' anterior. Para GitHub y Gist, necesitarás obtener y proporcionar un token de acceso (consulta esta guía; no requiere ningún ámbito o permiso. Luego colócalo en github_access_tokens en config.yaml). GitLab y BitBucket no requieren ningún token de API.
También puedes prescindir de las firmas y usar shhgit con tu propia consulta de búsqueda personalizada, por ejemplo, para encontrar todas las claves de AWS podrías usar shhgit --search-query AWS_ACCESS_KEY_ID=AKIA. Y para ejecutar en modo local (y quizás integrarlo en tus pipelines de CI) puedes pasar la bandera --local (consulta el uso a continuación).
--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)
El archivo config.yaml tiene 7 elementos. Se proporciona un archivo por defecto.
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 viene con 150 firmas. Puedes eliminar o agregar más editando el archivo config.yaml.