Os clientes da plataforma de nuvem Microsoft Azure que utilizam Linux em máquinas virtuais enfrentaram uma vulnerabilidade crítica (CVE-2021-38647) que permite a execução remota de código com privilégios de root. A vulnerabilidade foi nomeada de OMIGOD e é notável pelo fato de que o problema está presente no aplicativo OMI Agent, que é instalado silenciosamente em ambientes Linux.
O OMI Agent é instalado e ativado automaticamente ao usar serviços como Azure Automation, Azure Automatic Update, Azure Operations Management Suite, Azure Log Analytics, Azure Configuration Management, Azure Diagnostics e Azure Container Insights. Por exemplo, ambientes Linux no Azure que têm monitoramento ativado são vulneráveis. O agente faz parte do pacote de código aberto OMI (Open Management Infrastructure Agent) que implementa a pilha DMTF CIM/WBEM para gerenciar a infraestrutura de TI.
O OMI Agent é instalado no sistema sob o usuário omsagent e cria configurações em /etc/sudoers para executar uma série de scripts com privilégios de root. Durante a operação de alguns serviços, são criados sockets de rede escutando nas portas 5985, 5986 e 1270. Uma varredura no serviço Shodan mostra a presença de mais de 15 mil ambientes Linux vulneráveis na rede. Atualmente, um protótipo funcional de um exploit já está disponível, permitindo executar código com privilégios de root nesses sistemas.
O problema é agravado pelo fato de que a utilização do OMI no Azure não é documentada de forma clara, e o OMI Agent é instalado sem aviso — basta concordar com os termos do serviço escolhido ao configurar o ambiente e o OMI Agent será ativado automaticamente, ou seja, a maioria dos usuários nem suspeita de sua presença.
O método de exploração é trivial — basta enviar uma solicitação XML ao agente, removendo o cabeçalho responsável pela autenticação. O OMI utiliza autenticação ao receber mensagens de controle, verificando se o cliente tem permissão para enviar determinado comando. A essência da vulnerabilidade está em que, ao remover o cabeçalho ‘Authentication’ da mensagem, servidor Considera a passagem da verificação como bem-sucedida, aceita a mensagem de controle e permite a execução de comandos com permissões de root. Para executar comandos arbitrários no sistema, basta usar o comando padrão ExecuteShellCommand_INPUT na mensagem. Por exemplo, para iniciar a utilidade "id", é suficiente enviar a solicitação: curl -H "Content-Type: application/soap+xml;charset=UTF-8" -k --data-binary "@http_body.txt" https://10.0.0.5:5986/wsman …
id
0
A Microsoft já lançou uma atualização OMI 1.6.8.1 que corrige a vulnerabilidade, mas ainda não foi disponibilizada para os usuários do Microsoft Azure (em novos ambientes, a versão antiga do OMI ainda está sendo instalada). A autoatualização do agente não é suportada, portanto os usuários precisam atualizar o pacote manualmente, utilizando os comandos "dpkg -l omi" no Debian/Ubuntu ou "rpm -qa omi" no Fedora/RHEL. Como uma solução alternativa de proteção, recomenda-se bloquear o acesso às portas de rede 5985, 5986 e 1270.
Além da CVE-2021-38647, o OMI 1.6.8.1 também corrige três vulnerabilidades (CVE-2021-38648, CVE-2021-38645 e CVE-2021-38649) que permitem que um usuário local não privilegiado execute seu código com permissões de root.
Fonte: opennet.ru
