A nova falha Nimbuspwn ajuda invasores a obter privilégios elevados no Linux. Confira os detalhes dessa nova ameaça.
Um novo conjunto de vulnerabilidades rastreadas coletivamente como Nimbuspwn pode permitir que invasores locais aumentem privilégios em sistemas Linux para implantar malware que varia de backdoors a ransomware.
Falha Nimbuspwn ajuda invasores a obter privilégios elevados no Linux
Pesquisadores de segurança da Microsoft divulgaram os problemas em um relatório hoje, observando que eles podem ser encadeados para obter privilégios de root em um sistema vulnerável.
Rastreados como CVE-2022-29799 e CVE-2022-29800, os problemas de segurança do Nimbuspwn foram descobertos no networkd-dispatcher, um componente que envia alterações de status de conexão em máquinas Linux.
A descoberta das vulnerabilidades começou com “ouvir mensagens no barramento do sistema”, o que levou os pesquisadores a revisar o fluxo de código do networkd-dispatcher.
As falhas de segurança do Nimbuspwn referem-se a problemas de passagem de diretório, corrida de link simbólico e condição de corrida de tempo de verificação de tempo de uso (TOCTOU), explica o pesquisador da Microsoft Jonathan Bar Or no relatório.
Uma observação que despertou o interesse foi que o daemon networkd-dispatcher estava sendo executado no momento da inicialização com privilégios de root no sistema.
O pesquisador notou que o daemon usava um método chamado “_run_hooks_for_state” para descobrir e executar scripts dependendo do estado de rede detectado.
A lógica implementada por “_run_hooks_for_state” inclui o retorno de arquivos de script executáveis pertencentes ao usuário root e ao grupo root que estão no diretório “/etc/networkd-dispatcher/.d”.
Ele executa cada script no local acima usando o processo chamado subprocess.Popen enquanto fornece variáveis de ambiente personalizadas.
O relatório da Microsoft explica que “_run_hooks_for_state” tem vários problemas de segurança:
- Directory traversal (CVE-2022-29799): nenhuma das funções no fluxo higieniza o OperationalState ou o AdministrativeState. Os estados são usados para construir o caminho do script, então um estado pode conter padrões de passagem de diretório (por exemplo, “../../”) para escapar do diretório base “/etc/networkd-dispatcher”.
- Symlink race: tanto o script discovery quanto o subprocess.Popen seguem links simbólicos.
- Time-of-check-time-of-use (TOCTOU) race condition (CVE-2022-29800): há um certo tempo entre os scripts serem descobertos e executados. Um invasor pode abusar dessa vulnerabilidade para substituir scripts que o networkd-dispatcher acredita ser de propriedade do root por outros que não são.
Um invasor com privilégios baixos no sistema pode encadear as vulnerabilidades acima para escalar as permissões de nível raiz enviando um sinal arbitrário.
Uma visão geral das etapas para a exploração bem-sucedida é capturada na imagem abaixo, que abrange três estágios do ataque:
Bar Ou observa que vencer a condição de corrida TOCTOU requer o plantio de vários arquivos. Em seu experimento para implementar um exploit personalizado, o sucesso foi registrado após três tentativas.
Aproveitar o Nimbuspwn com sucesso é possível quando o código de exploração pode possuir um nome de barramento em um serviço ou processo privilegiado.
O pesquisador diz que existem muitos ambientes onde isso é possível, incluindo o Linux Mint onde “o serviço systemd-networkd que normalmente possui o nome do barramento” org.freedesktop.Network1” [usado na pesquisa] não inicia na inicialização por padrão.
Além disso, o Bar Or encontrou “processos adicionais em execução como o usuário systemd-network” que executavam código arbitrário de locais graváveis em todo o mundo: por exemplo, vários plugins gpgv (lançado quando o apt-get install
ou apt-get upgrade
é executado), o Erlang Port Mapper Daemon (epmd) que permite a execução de código arbitrário em alguns cenários.
Clayton Craft, o mantenedor do networkd-dispatcher, implantou as atualizações necessárias que abordam as vulnerabilidades Nimbuspwn.
Os usuários do Linux são recomendados para corrigir seus sistemas assim que as correções estiverem disponíveis para seu sistema operacional.