Uma conta de utilizadores com poucos privilégios na maioria dos sistemas operacionais Linux com valor UID maior do que 2147483647 pode executar qualquer comando systemctl não autorizado – graças a uma vulnerabilidade descoberta recentemente.
A vulnerabilidade reside no PolicyKit (também conhecido como polkit) – um application-level toolkit para sistemas operativos semelhantes ao Unix que define políticas, manipulação de privilégios em todo o sistema.
Esta toolkit fornece também uma maneira para os processos não privilegiados comunicarem com comandos privilegiados, tal como o comando “sudo”, que não concede permissão root a um processo no geral mas permite executá-lo em modo privilegiado.
O problema, identificado como CVE-2018-19788, impacta a versão 0.115 do PolicyKit, que vem pré-instalada nas distribuições Linux mais populares, incluindo Red Hat, Debian, Ubuntu e CentOS.
É possível explorar esta vulnerabilidades devido à validação “deficiente” do PolicyKit a solicitações de permissão para qualquer utilizadores com poucos privilégios mas com UID maior que INT_MAX.
INT_MAX é uma constante em programação e que define o valor máximo que uma variável inteira pode guardar, que é igual a 2147483647 0x7FFFFFFF em hexadecimal).
Utilizadores criados com um UID maior do que o valor INT_MAX fará com que o componente PolicyKit execute qualquer commando systemctl com sucesso.
O investigador Rich Mirch, no Twitter como “0xm1rch”, também lançou um exploit como prova de conceito (PoC) para demonstrar a exploração da falha com sucesso num utilizadores com UID 4000000000 atribuído.
A Red Hat recomendou para que os administradores de sistemas não permitissem UIDs ou UIDs negativos maior