Tutoriales

Supervisión de GitLab para datos confidenciales compartidos públicamente

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:

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba