
OMIGOD! OM I GOOD? Uno scanner gratuito per rilevare le VM vulnerabili a una delle vulnerabilità "OMIGOD" scoperte dal team di ricerca sulle minacce di Wiz, in particolare la CVE-2021-38647.
Questo repository contiene uno scanner gratuito per rilevare VM vulnerabili a una delle vulnerabilità "OMIGOD" scoperte dal team di threat research di Wiz, in particolare CVE-2021-38647.
Post originale del blog di Wiz: https://www.wiz.io/blog/omigod-critical-vulnerabilities-in-omi-azure
Lo scanner richiede le credenziali di Azure per connettersi alle API di Azure e, data una sottoscrizione e un resource group (oppure, di default, analizza tutti quelli disponibili), recupera l'elenco delle VM Linux e segnala se la macchina potrebbe essere vulnerabile.
Date anche un'occhiata allo strumento ufficiale di Microsoft per questo scopo: https://github.com/microsoft/OMS-Agent-for-Linux/tree/master/tools/OMIcheck
Per autenticarsi contro le API di Azure, sono supportati sia azure cli (predefinito) che l'autenticazione tramite Browser Interattivo; controllate il parametro da riga di comando --auth.
Non esiste un modo diretto per determinare se le vostre macchine sono vulnerabili a OMI senza eseguire comandi sulla macchina Linux stessa, cosa supportata attraverso le API di Azure usando il comando RunShellScript tramite un'estensione. Anche lo strumento ufficiale di Microsoft (https://github.com/microsoft/OMS-Agent-for-Linux/tree/master/tools/OMIcheck) usa questo approccio.
Vale la pena notare che, anche se la VM è vulnerabile, potrebbe non esporre il server OMI via HTTP/HTTPS (che è il default) e, anche se lo fa, quelle porte potrebbero essere bloccate dai Network Security Group di Azure, e quindi non raggiungibili. Questo non è un motivo per evitare di applicare le patch ma, se avete molte VM Linux vulnerabili, potrebbe essere utile sapere quali sono più esposte e dare priorità ai vostri sforzi.
omigood segue questo approccio più completo e produrrà un output JSON con una serie di controlli che potete attivare tramite opzioni da riga di comando per determinare la vostra superficie d'attacco.
Questi sono i controlli effettuati da omigood:
1.13.40. Potete vedere lo script che eseguiamo qui.-e.-r. Usatelo a vostro rischio!/usr/bin/id. Questo controllo è opzionale poiché implica il tentativo di sfruttare la VM. Abilitatelo con l'opzione da riga di comando -a. Usatelo solo su target che siete autorizzati a testare. Usatelo a vostro rischio!Il file di output JSON generato contiene tutte le informazioni sulle VM scansionate: ID, sistema operativo, network security group, stato di alimentazione, ecc.
I flag ('YES'/'NO') rilevanti per i controlli sono:
YES se l'OMS Agent Extension è trovata sulla VM.YES se la versione dell'OMS Agent Extension è inferiore a 1.13.40.YES se le regole del Network Security Group sembrano consentire connessioni alle porte OMI.YES se le regole Effective Security sembrano consentire connessioni alle porte OMI. Solo con l'opzione da riga di comando -e.YES se la versione del server OMI è stata recuperata tramite script e determinata essere inferiore a 1.6.8-1. Solo con l'opzione da riga di comando -r.YES se lo stato del server OMI è stato recuperato tramite script e determinato essere in ascolto su TCP e non solo su socket UNIX. Solo con l'opzione da riga di comando -r.usage: omigood_scanner.py [-h] [-v] [--auth {azurecli,interactivebrowser}] [-r] [-a] [-e] [-s SUBSCRIPTIONS]
[-g RESOURCEGROUPS] [-m VMS] -o OUTPUT
OMIGood scanner for CVE-2021-38647
optional arguments:
-h, --help show this help message and exit
-v, --verbose [OPTIONAL] Verbose mode: Displays additional debug details.
--auth {azurecli,interactivebrowser}
Authentication mode. Default: azurecli.
-r, --runscript [OPTIONAL] Run Script. Runs bash script on target VMs to check for OMI server, agent and
version. Disabled by default. Use at your own risk.
-a, --attack [OPTIONAL] Try to attack the host. Disabled by default. Use at your own risk.
-e, --effective [OPTIONAL] Check Effective Security Rules. Disabled by default. Requires higher permissions on
Azure.
-s SUBSCRIPTIONS, --subscriptions SUBSCRIPTIONS
[OPTIONAL] Comma separate list of subscriptions IDs. If not specified, it will try all.
-g RESOURCEGROUPS, --resourcegroups RESOURCEGROUPS
[OPTIONAL] Comma separated list of Resource Group names. If not specified, it will try all. If
specified, it will work only with a single subscription provided.
-m VMS, --vms VMS [OPTIONAL] Comma separated list of VM names. If not specified, it will try all. If specified,
it will work only with a single subscription and a single resource group provided.
-o OUTPUT, --output OUTPUT
JSON output file with results.
Il Software e gli esempi di codice disponibili in questo repository sono forniti "così come sono", senza garanzie di alcun tipo, esplicite o implicite. Usateli a vostro rischio.
YES-r