
Trovare segreti esposti e dati personali in GitLab
GitLab Watchman è un'applicazione che utilizza l'API di GitLab per rilevare segreti esposti e dati personali. Enumera inoltre l'istanza GitLab per eventuali informazioni utili.
Cerca in GitLab progetti condivisi internamente e controlla:
Per i seguenti dati:
Puoi eseguire GitLab Watchman per cercare risultati risalenti fino a:
Ciò significa che dopo una scansione approfondita, puoi programmare GitLab Watchman per eseguirlo regolarmente e ricevere solo i risultati del periodo di tempo scelto.
GitLab Watchman può enumerare informazioni potenzialmente utili da un'istanza GitLab:
GitLab Watchman utilizza firme YAML personalizzate per rilevare corrispondenze in GitLab. Queste firme vengono scaricate dal repository centrale Watchman Signatures. Slack Watchman aggiorna automaticamente la propria base di firme in fase di esecuzione per assicurarsi di utilizzare le firme più recenti per rilevare segreti.
Puoi definire le firme che desideri disabilitare durante l'esecuzione di GitLab Watchman aggiungendo i loro ID alla sezione disabled_signatures del file watchman.conf. Ad esempio:
gitlab_watchman:
disabled_signatures:
- tokens_generic_bearer_tokens
- tokens_generic_access_tokens
Puoi trovare l'ID di una firma nei singoli file YAML nel repository Watchman Signatures.
GitLab Watchman offre le seguenti opzioni di registrazione:
GitLab Watchman utilizza per impostazione predefinita la registrazione stdout leggibile dal terminale se non viene fornita alcuna opzione. Questo è progettato per essere più facile da leggere per gli umani.
È disponibile anche la registrazione in formato JSON, ideale per l'importazione in un SIEM o altre piattaforme di analisi dei log.
La registrazione in formato JSON può essere facilmente reindirizzata a un file come segue:
gitlab-watchman --timeframe a --all --output json >> gitlab_watchman_log.json
GitLab Watchman utilizza l'API v4 e funziona con le versioni di GitLab Enterprise Edition:
13.0 e successive - Sì
GitLab.com - Sì
12.0 - 12.10 - Forse, non testato ma se utilizza la v4 dell'API potrebbe funzionare
Per cercare negli ambiti:
L'istanza GitLab deve avere Elasticsearch configurato e deve essere in esecuzione Enterprise Edition con almeno una licenza GitLab Starter o Bronze.
Per eseguire GitLab Watchman, avrai bisogno di un token di accesso personale GitLab.
Puoi creare un token di accesso personale nell'interfaccia grafica di GitLab tramite Impostazioni -> Token di accesso -> Aggiungi un token di accesso personale
Il token necessita dell'autorizzazione per i seguenti ambiti:
api
Nota: I token di accesso personale agiscono per conto dell'utente che li crea, quindi ti suggerisco di creare un token utilizzando un account di servizio, altrimenti l'app avrà accesso ai tuoi repository privati.
Devi anche fornire l'URL della tua istanza GitLab.
GitLab Watchman recupererà il token e l'URL di GitLab dalle variabili d'ambiente GITLAB_WATCHMAN_TOKEN e GITLAB_WATCHMAN_URL.
Le opzioni di configurazione possono essere passate in un file chiamato watchman.conf che deve essere salvato nella tua home directory. Il file deve seguire il formato YAML e dovrebbe apparire come segue:
gitlab_watchman:
disabled_signatures:
- tokens_generic_bearer_tokens
- tokens_generic_access_tokens
GitLab Watchman cercherà questo file in fase di esecuzione e utilizzerà le opzioni di configurazione da lì.
Puoi installare l'ultima versione stabile tramite pip:
python3 -m pip install gitlab-watchman
Oppure compila dal sorgente. Scarica i file sorgente della release, quindi dalla directory principale del repository esegui:
python3 -m build
python3 -m pip install --force-reinstall dist/*.whl
GitLab Watchman è anche disponibile su Docker Hub come immagine Docker:
docker pull papermountain/gitlab-watchman:latest
Puoi quindi eseguire GitLab Watchman in un contenitore, assicurandoti di passare le variabili d'ambiente richieste:
// help
docker run --rm papermountain/gitlab-watchman -h
// scan all
docker run --rm -e GITLAB_WATCHMAN_TOKEN=abc123 -e GITLAB_WATCHMAN_URL=https://example.gitlab.com papermountain/gitlab-watchman --timeframe a --all
docker run --rm --env-file .env papermountain/gitlab-watchman --timeframe a --all
GitLab Watchman verrà installato come comando globale, utilizzalo come segue:
usage: gitlab-watchman [-h] --timeframe {d,w,m,a} [--output {json,stdout}] [--version] [--all] [--blobs] [--commits] [--wiki-blobs] [--issues]
[--merge-requests] [--milestones] [--notes] [--snippets] [--enumerate] [--debug] [--verbose]
Finding exposed secrets and personal data in GitLab
options:
-h, --help show this help message and exit
--output {json,stdout}, -o {json,stdout}
Where to send results
--version, -v show program's version number and exit
--all, -a Find everything
--blobs, -b Search code blobs
--commits, -c Search commits
--wiki-blobs, -w Search wiki blobs
--issues, -i Search issues
--merge-requests, -mr
Search merge requests
--milestones, -m Search milestones
--notes, -n Search notes
--snippets, -s Search snippets
--enumerate, -e Enumerate this GitLab instance for users, groups, projects.Output will be saved to CSV files
--debug, -d Turn on debug level logging
--verbose, -V Turn on more verbose output for JSON logging. This includes more fields, but is larger
required arguments:
--timeframe {d,w,m,a}
How far back to search: d = 24 hours w = 7 days, m = 30 days, a = all time
Potresti essere interessato alle altre app della famiglia Watchman:
Il codice sorgente di questo progetto è rilasciato sotto la GNU General Public Licence. Questo progetto non è associato a GitLab.