No módulo PAM pam_oath, parte do pacote oath-toolkit e utilizado na autenticação de dois fatores com senhas temporárias (OTP), foi identificada uma vulnerabilidade (CVE-2024-47191) que permite a um usuário não privilegiado obter acesso root no sistema.
O módulo pam_oath é executado com privilégios de root e originalmente foi projetado para armazenar chaves OATH no arquivo /etc/users.oath, ao qual apenas o usuário root tem acesso. Na versão 2.6.7 do oath-toolkit, foi adicionada a suportabilidade de armazenar arquivos com chaves nos diretórios pessoais dos usuários (~/.config/users.oath). Usuários não privilegiados agora podem alterar os arquivos com suas chaves, mas o pam_oath, ao acessar esses arquivos, não rebaixou os privilégios e continuou a usar métodos inseguros para manipulação de arquivos, presumindo que os arquivos estivessem localizados em um diretório inacessível para alterações.
A vulnerabilidade é causada porque, após cada autenticação bem-sucedida com uma senha temporária, o pam_oath sobrescrevia o arquivo com as chaves para evitar a reutilização da mesma senha. A operação de sobrescrita envolvia a criação de um arquivo de bloqueio no mesmo diretório, a gravação do novo conteúdo em um arquivo com a extensão " .new" e a substituição do arquivo antigo pelo novo. O arquivo com a extensão " .new" era criado com os mesmos direitos que o arquivo alvo, mas a gravação nele era realizada por um processo com privilégios de root e sem verificação da existência do arquivo.
Se o arquivo estivesse localizado em um diretório do sistema, não haveria problemas, mas após a adição do suporte para arquivos de chaves em diretórios pessoais, surgiu uma vulnerabilidade facilmente explorável. Para atacar, basta criar um link simbólico "~/.config/oath.secrets.new" e direcioná-lo para qualquer arquivo do sistema, que será sobrescrito após uma autenticação bem-sucedida.
Para obter acesso root, pode-se direcionar um link simbólico para o arquivo /etc/shadow. Nesse caso, pam_oath gravará em /etc/shadow a lista atual de chaves e sincronizará o proprietário e as permissões com o arquivo users.oath. Como o arquivo users.oath pertence ao usuário, o proprietário de /etc/shadow será definido como esse usuário, após o que um atacante poderá editar o arquivo /etc/shadow e gravar novas credenciais de login para a conta root.
A vulnerabilidade aparece a partir do lançamento do oath-toolkit 2.6.7 e foi corrigida (1, 2, 3) na versão 2.6.12. É possível rastrear a correção da vulnerabilidade nas distribuições nas seguintes páginas: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch. A vulnerabilidade afeta apenas configurações nas quais é permitido o armazenamento de arquivos com chaves em diretórios home, por exemplo, ao usar na configuração do PAM a linha "auth [user_unknown=ignore success=ok] pam_oath.so usersfile=${HOME}/user.oath".
Adicionalmente, pode-se mencionar a vulnerabilidade descoberta recentemente (CVE-2024-9313) no módulo PAM do pacote Authd, desenvolvido pelo projeto Ubuntu. A vulnerabilidade permite que um usuário gerenciado por meio do broker Authd se passe por qualquer outro usuário, também gerenciado por esse mesmo broker, e realize a autenticação com sucesso via su, sudo ou ssh como outro usuário. O problema foi corrigido na versão Authd 0.3.5.
Fonte: opennet.ru
