
Vigilante de GitLab es una aplicación que utiliza la API de GitLab para auditar GitLab en pesquisa de datos confidenciales y credenciales expuestos internamente.
Características
Escudriñamiento en GitLab proyectos compartidos internamente y analiza:
- Código
- Compromete
- Páginas wiki
- Cuestiones
- Fusionar solicitudes
- Hitos
Para los siguientes datos:
- Archivos de cuentas de servicio y claves de GCP
- Claves de AWS
- Archivos de cuentas de servicio y claves de Azure
- Claves API de Google
- Tokens y webhooks de API de Slack
- Claves privadas (SSH, PGP, cualquier otra esencia privada miscelánea)
- Tokens expuestos (tokens de portador, tokens de entrada, client_secret, etc.)
- Archivos de configuración de S3
- Tokens para servicios como Heroku, PayPal y más
- Contraseñas en texto plano
- y más
Búsqueda basada en el tiempo
Puede ejecutar GitLab Watchman para averiguar resultados que se remontan a:
- 24 horas
- 7 días
- 30 dias
- Todo el tiempo
Esto significa que luego de un escaneo profundo, puede programar GitLab Watchman para que se ejecute con regularidad y solo devuelva los resultados del período de tiempo estimado.
Normas
GitLab Watchman usa reglas YAML personalizadas para detectar coincidencias en GitLab.
Siguen este formato:
Nombre del archivo:
activado: #[true|false]
meta:
-nombre:
-autor:
-fecha:
-descripción: # qué debe encontrar la búsqueda #
-severidad: # calificando sobre 100 #
talento: #qué averiguar, cualquier combinación de los siguientes #
-blobs
-compromete
-hitos
-wiki_blobs
-cuestiones
-merge_requests
Casos de prueba:
–match_cases:
– # caso de prueba que debe coincidir con la expresión regular #
–fall_cases:
– # caso de prueba que no debe coincidir con la expresión regular #
instrumentos de cuerda:
consulta de búsqueda para usar en GitLab #
patrón: # Patrón de expresiones regulares para filtrar falsos positivos #
Hay pruebas de Python para certificar que las reglas tengan el formato correcto y que los patrones Regex funcionen en el tests
dir
En el archivo encontrará más información sobre las reglas y cómo puede adicionar las suyas propias. docs/rules.md
.
Inicio sesión
GitLab Watchman ofrece las siguientes opciones de registro:
Los resultados se generan en formato JSON, consumado para ingerirlos en un SIEM u otra plataforma de observación de registros.
Para el registro de flujo de archivos y TCP, las opciones de configuración deben pasarse a través de .conf
archivo o variable de entorno. Ver el archivo docs/logging.md
para obtener instrucciones sobre cómo configurarlo.
Si no se ofrece una opción de registro, GitLab Watchman se establece de forma predeterminada en el registro Stdout.
Requisitos
GitLab Watchman usa la API v4 y funciona con las versiones de GitLab Enterprise Edition:
- 13.0 y superior – Sí
- GitLab.com – Sí
- 12.0 – 12.10 – Quizás, no probado, pero si usa v4 de la API, entonces podría funcionar
- Inmoralidad de GitLab y Elasticsearch
Para averiguar los ámbitos:
La instancia de GitLab debe tener Elasticsearch configurado y ejecutar Enterprise Edition con una inmoralidad mínima de GitLab Starter o Bronze.
- Token de entrada personal de GitLab
Para ejecutar GitLab Watchman, necesitará un token de entrada personal de GitLab.
Puede crear un token de entrada personal en la GUI de GitLab a través de Configuración -> Tokens de entrada -> Ampliar un token de entrada personal
El token necesita permiso para los siguientes ámbitos:
api
Nota: Los tokens de entrada personal actúan en nombre del becario que los crea, por lo que le sugiero que cree un token utilizando una cuenta de servicio; de lo contrario, la aplicación tendrá entrada a sus repositorios privados.
Asimismo debe proporcionar la URL de su instancia de GitLab.
GitLab Watchman primero intentará obtener el token y la URL de GitLab de las variables de entorno GITLAB_WATCHMAN_TOKEN
y GITLAB_WATCHMAN_URL
, si esto defecto, se tomarán del archivo .conf (ver más debajo).
archivo .conf
Las opciones de configuración se pueden producirse en un archivo llamado watchman.conf
que debe almacenarse en su directorio personal. El archivo debe seguir el formato YAML y debe tener el subsiguiente aspecto:
gitlab_watchman:
ficha: abc123
url: https://gitlab.example.com
Inicio sesión:
file_logging:
camino:
json_tcp:
huésped:
Puerto
GitLab Watchman buscará este archivo en tiempo de ejecución y usará las opciones de configuración desde aquí. Si no está utilizando las funciones de registro avanzadas, déjelas en blanco.
Si tiene problemas con su archivo .conf, ejecútelo a través de un linter YAML.
Un archivo de ejemplo está en docs/example.conf
Nota Si utiliza otras aplicaciones de Watchman y ya tiene una watchman.conf
archivo, simplemente agregue los datos conf para GitLab Watchman al archivo existente.
Instalación
pip install gitlab-watchman
O vía fuente
Uso
GitLab Watchman se instalará como un comando total, use de la subsiguiente forma:
usage: gitlab-watchman [-h] --timeframe {d,w,m,a} --output
{file,stdout,stream} [--version] [--all] [--blobs]
[--commits] [--wiki-blobs] [--issues] [--merge-requests]
[--milestones] [--comments]
Monitoring GitLab for sensitive data shared publicly
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
--all Find everything
--blobs Search code blobs
--commits Search commits
--wiki-blobs Search wiki blobs
--issues Search issues
--merge-requests Search merge requests
--milestones Search milestones
--comments Search comments
required arguments:
--timeframe {d,w,m,a}
How far back to search: d = 24 hours w = 7 days, m =
30 days, a = all time
--output {file,stdout,stream}
Where to send results
Puede ejecutar GitLab Watchman para averiguar todo y producir la salida a Stdout predeterminada:
gitlab-watchman --timeframe a --all
O los argumentos se pueden agrupar para averiguar de forma más granular. Esto buscará confirmaciones e hitos de los últimos 30 días y enviará los resultados a una secuencia TCP:
gitlab-watchman --timeframe m --commits --milestones --output stream
Otras aplicaciones de Watchman
Puede que te interesen algunas de las otras aplicaciones de la tribu Watchman: