
OMIGOD! OM I GOOD? Um scanner gratuito para detectar VMs vulneráveis a uma das vulnerabilidades "OMIGOD" descobertas pela equipe de pesquisa de ameaças da Wiz, especificamente a CVE-2021-38647.
Este repositório contém um scanner gratuito para detectar VMs vulneráveis a uma das vulnerabilidades "OMIGOD" descobertas pela equipe de pesquisa de ameaças da Wiz, especificamente CVE-2021-38647.
Post original do blog da Wiz: https://www.wiz.io/blog/omigod-critical-vulnerabilities-in-omi-azure
O scanner requer credenciais do Azure para se conectar às APIs do Azure e, dada uma assinatura e um grupo de recursos (ou, por padrão, ele verificará todos os disponíveis), obtém a lista de VMs Linux e informa se a máquina pode estar vulnerável.
Confira também a ferramenta da própria Microsoft para esse fim: https://github.com/microsoft/OMS-Agent-for-Linux/tree/master/tools/OMIcheck
Para autenticar nas APIs do Azure, são suportados tanto o azure cli (padrão) quanto a autenticação por Navegador Interativo; verifique o parâmetro de linha de comando --auth.
Não existe uma maneira direta de determinar se suas máquinas estão vulneráveis ao OMI sem executar comandos na própria máquina Linux, o que é suportado por meio das APIs do Azure usando o comando RunShellScript através de uma extensão. A ferramenta da própria Microsoft (https://github.com/microsoft/OMS-Agent-for-Linux/tree/master/tools/OMIcheck) também usa essa abordagem.
Vale ressaltar que, mesmo que a VM esteja vulnerável, ela pode não estar expondo o servidor OMI via HTTP/HTTPS (que é o padrão) e, mesmo que esteja, essas portas podem estar bloqueadas pelos Grupos de Segurança de Rede do Azure, não sendo, portanto, acessíveis. Isso não é motivo para evitar a aplicação de patches, mas, se você tiver muitas VMs Linux vulneráveis, pode ser útil saber quais estão mais expostas e priorizar seus esforços.
O omigood segue essa abordagem mais abrangente e produzirá uma saída JSON com uma série de verificações que você pode acionar por meio de opções de linha de comando para determinar sua superfície de ataque.
Estas são as verificações realizadas pelo omigood:
1.13.40. Você pode conferir o script que executamos aqui.-e.-r. Use por sua conta e risco!/usr/bin/id. Esta verificação é opcional, pois envolve tentar explorar a VM. Ative-a com a opção de linha de comando -a. Use-a somente em alvos que você está autorizado a testar. Use por sua conta e risco!O arquivo de saída JSON gerado contém todas as informações sobre as VMs verificadas: IDs, sistema operacional, grupos de segurança de rede, estado de energia, etc.
Os flags ('YES'/'NO') relevantes para as verificações são:
YES se a Extensão do OMS Agent for encontrada na VM.YES se a versão da Extensão do OMS Agent for inferior a 1.13.40.YES se as regras do Grupo de Segurança de Rede parecerem permitir conexões às portas do OMI.YES se as regras de Segurança Efetivas parecerem permitir conexões às portas do OMI. Somente com a opção de linha de comando -e.YES se a versão do servidor OMI foi recuperada via script e determinada como inferior a 1.6.8-1. Somente com a opção de linha de comando -r.YES se o status do servidor OMI foi recuperado via script e determinado como escutando em TCP e não apenas em sockets UNIX. Somente com a opção de linha de 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.
O Software e os exemplos de código disponíveis neste repositório são fornecidos "como estão", sem garantia de qualquer tipo, expressa ou implícita. Use por sua conta e risco.
YES-r