Vulnerabilidade no Polkit que permite aumentar seus privilégios no sistema

Uma vulnerabilidade (CVE-2021-3560) foi identificada no componente Polkit, que é usado em distribuições para permitir que usuários sem privilégios executem ações que exigem direitos de acesso elevados (por exemplo, montar uma unidade USB), o que permite que um usuário local obter direitos de root no sistema. A vulnerabilidade foi corrigida no Polkit versão 0.119.

O problema está presente desde a versão 0.113, mas muitas distribuições, incluindo RHEL, Ubuntu, Debian e SUSE, portaram a funcionalidade afetada para pacotes baseados em versões mais antigas do Polkit (correções de pacotes já estão disponíveis nas distribuições).

O problema se manifesta na função polkit_system_bus_name_get_creds_sync(), que obtém os identificadores (uid e pid) do processo que solicita elevação de privilégio. Um processo é identificado pelo Polkit atribuindo um nome exclusivo no DBus, que é então usado para verificar privilégios. Se um processo se desconectar do dbus-daemon pouco antes do manipulador polkit_system_bus_name_get_creds_sync iniciar, o manipulador receberá um código de erro em vez de um nome exclusivo.

A vulnerabilidade é causada pelo fato de que o código de erro retornado não é processado corretamente e a função polkit_system_bus_name_get_creds_sync() retorna TRUE em vez de FALSE, apesar de não ser capaz de combinar o processo com o uid/pid e verificar os privilégios solicitados para o processo. O código a partir do qual a função polkit_system_bus_name_get_creds_sync() foi chamada assume que a verificação foi bem-sucedida e que a solicitação para escalar privilégios veio do root e não de um usuário sem privilégios, o que torna possível executar ações privilegiadas sem autenticação adicional e verificação de credenciais.

Fonte: opennet.ru

Adicionar um comentário