Falha no Linux que existe há sete anos dá acesso root a invasores

Falha no componente polkit existe há sete anos e pode dar acesso root a invasores no Linux; problema tem correção

Emerson Alecrim
Por
• Atualizado há 2 anos e 10 meses
Ubuntu Linux (imagem: Emerson Alecrim/Tecnoblog)
Ubuntu Linux (imagem: Emerson Alecrim/Tecnoblog)

Algumas distribuições Linux carregam uma falha de segurança no escalonamento de privilégios que existe há sete anos. A vulnerabilidade pode ser explorada para permitir a um invasor ter acesso root ao sistema e, assim, executar uma infinidade de ações maliciosas. A boa notícia é que o problema tem correção.

A falha se manifesta no polkit (anteriormente chamado de PolicyKit), componente que controla privilégios no sistema operacional. Por meio desse recurso, processos não privilegiados podem se comunicar com aqueles que têm privilégios para viabilizar determinadas tarefas sem comprometer a segurança do sistema.

Kevin Backhouse, especialista em segurança do GitHub Security Lab, descobriu que o polkit tem uma falha importante que pode ser explorada a partir do dbus-send, comando para comunicação entre processos.

Quando esse comando é executado e anulado no meio de uma solicitação de autenticação, um erro é gerado. Mas, em vez de o polkit rejeitar a solicitação por causa desse erro, ele a autoriza por interpretar que a requisição veio de um processo raiz.

Backhouse alerta que essa falha pode ser explorada de maneira surpreendentemente fácil, pois requer apenas algumas funções básicas do sistema, como bash, kill e, como já informado, dbus-send.

O analista também alerta que “a maior ameaça dessa vulnerabilidade é a confidencialidade e integridade dos dados, bem como a disponibilidade do sistema”.

Mas como uma falha potencialmente perigosa como essa ficou sete anos sem ser detectada? A explicação está em sua natureza intermitente: a comunicação entre polkit e dbus-daemon ocorre por codepaths diferentes, mas apenas um deles está sujeito à falha.

Para acionar o codepath vulnerável, você deve se desconectar no momento certo. Como há múltiplos processos envolvidos, o instante desse “momento certo” varia de uma execução para a outra.

É por essa razão que geralmente a exploração requer algumas tentativas para ser bem-sucedida. Eu acho que essa também é a razão pela qual a falha não foi detectada anteriormente.

Kevin Backhouse

O vídeo a seguir contém uma demonstração do problema:

Atualize o seu Linux

O bug foi identificado como CVE-2021-3560. A solução consiste em verificar se a sua distribuição Linux tem o polkit 0.113 ou outra versão vulnerável e aplicar a atualização disponibilizada.

Backhouse aponta, por exemplo, que o Red Hat Enterprise Linux 8 é vulnerável, mas que já há correção para esse sistema.

A checagem precisa ser feita em cada distribuição porque a falha pode atingir uma versão, mas não outra. Por exemplo, o problema não existe no Debian 10, mas está presente na atual versão instável dessa distribuição.

Ubuntu 20.04 e Fedora 21 são outros exemplos de distribuições vulneráveis.

Com informações: The Register.

Relacionados

Escrito por

Emerson Alecrim

Emerson Alecrim

Repórter

Emerson Alecrim cobre tecnologia desde 2001 e entrou para o Tecnoblog em 2013, se especializando na cobertura de temas como hardware, sistemas operacionais e negócios. Formado em ciência da computação, seguiu carreira em comunicação, sempre mantendo a tecnologia como base. Em 2022, foi reconhecido no Prêmio ESET de Segurança em Informação. Em 2023, foi reconhecido no Prêmio Especialistas, em eletroeletrônicos. Participa do Tecnocast, já passou pelo TechTudo e mantém o site Infowester.

Temas populares