
Gestione dei controlli di GitHub Advanced Security (GHAS) su larga scala
Implementa e monitora i controlli di Appsec su larga scala.
$ git clone [email protected]:mf-labs/witcher.git
$ cd witcher
$ npm i
$ git clone [email protected]:mf-labs/witcher.git
$ cd witcher
$ docker build -t witcher .
# Esecuzione dell'immagine Docker
$ docker run -e GITHUB_TOKEN=$GITHUB_TOKEN -e ORG=$ORG witcher -a status -m ghas -r offsec-sast-testing
➜ witcher git:(master) node witcher.js -h
usage: witcher.js [-h] -m MODULE -a ACTION [--daily-summary] [--mass-action] [--slack] [--siem] [--jira]
[--jira-ticket JIRATICKET] [--org ORG] [-r REPO] [-b BRANCH]
[--workflow-file WORKFLOW] [--repo-file REPOFILE]
witcher ....... non puoi scappare
argomenti opzionali:
-h, --help mostra questo messaggio di aiuto ed esci
-m MODULE, --module MODULE
ghas, dependabot, secret-scanning, codeql, iac, workflows, ALL
-a ACTION, --action ACTION
enable, disable, status, alert, deploy, delete
--daily-summary Ottieni il riepilogo giornaliero
--mass-action Esegui un'azione (enable, deploy, delete) su larga scala
--slack Pubblica nuovi avvisi su Slack
--siem Registra le attività sul SIEM
--jira Pubblica un nuovo ticket di vulnerabilità su Jira
--jira-ticket JIRATICKET
ID del ticket Jira (es. PROJECT-123)
Input:
--org ORG Nome dell'organizzazione
-r REPO, --repo REPO Nome del repository, ALL
-b BRANCH, --branch BRANCH
Nome del branch
--workflow-file WORKFLOW
Nome del file del workflow
--repo-file REPOFILE Nome del file del repository

Imposta prima le seguenti variabili d'ambiente
export GITHUB_TOKEN=YOUR_GITHUB_TOKEN
export GITHUB_USER=YOUR_GITHUB_USERNAME
export ORG=YOUR_GITHUB_ORGANIZATION
# Opzionale per configurare Slack
export SLACK_BOT_TOKEN
export SLACK_SIGNING_SECRET
export SLACK_CHANNEL
# Opzionale per inviare dati al SIEM
export SERVERLESS_APP_URL
# Opzionale per la creazione di ticket Jira
export JIRA_API_TOKEN
export JIRA_EMAIL
export JIRA_URL
export JIRA_PROJECT
export JIRA_ISSUE_TYPE
Aggiorna il file github/data/exclusion.json con l'elenco dei repository esclusi dai Repository Principali / GHAS.
# Elenca i repository in cui GHAS è disabilitato
$ node witcher.js -m ghas -a status --repo All
# Abilita GHAS su un repository specifico
$ node witcher.js -m ghas -a enable --repo <nome-repo>
# Disabilita GHAS su un repository specifico
$ node witcher.js -m ghas -a disable --repo <nome-repo>
# Verifica lo stato di GHAS su un repository specifico
$ node witcher.js -m ghas -a status --repo <nome-repo>
# Ottieni l'ultima vulnerabilità di code scanning
$ node witcher.js -m codeql -a alert --slack // --slack per pubblicare su Slack
# Azione di massa
$ node witcher.js --mass-action -a enable -m ghas --repo-file mass_action.txt --jira-ticket PROJECT-123

Ulteriori comandi / Foglio informativo
# Esegui il riepilogo giornaliero
$ node witcher.js --daily-summary -m ALL -a status --slack --jira
# Il riepilogo giornaliero include la verifica di
# 1. Stato GHAS su tutti i repository
# 2. Stato Secret Scanning su tutti i repository
# 3. Verifica dello stato di Dependabot
# 4. Verifica di Dependabot in pausa
# 5. Stato Code Scanning sui repository applicabili
# 6. Stato IaC Scanning sui repository applicabili
# 7. Controllo degli avvisi per eventuali nuove vulnerabilità
# 8. Riepilogo giornaliero registrato sul SIEM e pubblicato su Slack
- Tutti i repository pubblici sono esclusi da witcher
- Tutti i repository archiviati sono esclusi da witcher
- Tutti i repository deprecati sono esclusi da witcher
Questo progetto è concesso in licenza secondo la Licenza Apache 2.0
Copyright (c) 2025 Moonfare.
Sei libero di utilizzare, modificare e distribuire il progetto, a condizione di includere attribuzioni appropriate a Moonfare nel tuo utilizzo.
Se desideri contribuire al progetto, consulta le nostre linee guida in CONTRIBUTING.md.