Uma falha (já listada em CVE-2023-22809) foi identificada no pacote sudo, que é usado para executar comandos em nome de outros usuários. O problema permitia que um usuário local editasse qualquer arquivo no sistema. Assim, seria possível obter direitos de root alterando /etc/shadow ou scripts do sistema. Portanto, essa falha no sudo permitia alterar praticamente qualquer arquivo.
Para explorar a vulnerabilidade, o usuário deve ter o direito de executar o utilitário sudoedit ou “sudo” com o sinalizador “-e” em sudoers.
O bug menciona que sudo (su “do”) permite que um administrador do sistema delegue autoridade para dar a certos usuários (ou grupos de usuários) a capacidade de executar alguns (ou todos) comandos como root ou outro usuário durante a execução. fornece uma trilha de auditoria dos comandos e seus argumentos.
Falha no sudo permitia alterar qualquer arquivo
A vulnerabilidade se deve à falta de manipulação adequada dos caracteres “–” ao analisar as variáveis de ambiente que determinam o programa chamado para editar o arquivo.
No sudo, a sequência “–” é usada para separar o editor e os argumentos da lista de arquivos que estão sendo editados. Um invasor pode adicionar “–file” às variáveis de ambiente SUDO_EDITOR , VISUAL ou EDITOR após o caminho para o editor, o que fará com que o arquivo especificado seja editado com privilégios elevados sem verificar as regras de acesso de arquivo do usuário.
Em relação aos detalhes da vulnerabilidade, é mencionado o seguinte:
Quando executado como sudo -e ou sudoedit, o sudo pode ser usado para editar arquivos com privilégios enquanto executa o editor como um usuário sem privilégios. O arquivo de política sudoers determina se um usuário pode ou não editar os arquivos especificados. O comportamento esperado é que o módulo de política sudoers retorne um vetor de argumento para o front-end sudo contendo o editor para executar junto com os arquivos a serem editados, separados por um argumento “–”.
A sequência de eventos é a seguinte:
- O front-end sudo envia uma solicitação de verificação de política para o módulo sudoers indicando que o usuário executou o sudoedit e inclui a lista de arquivos a serem editados.
- O módulo de política sudoers usa o arquivo sudoers (ou LDAP) para determinar se o usuário pode editar os arquivos.
- Se a verificação de política for bem-sucedida, o módulo de política sudoers escolherá um editor com base nas variáveis SUDO_EDITOR, VISUAL e EDITOR no ambiente do usuário.
- O módulo sudoers constrói um novo vetor de argumento que consiste no editor selecionado. Se o editor contiver opções de linha de comando, ele será dividido em vários argumentos.
- Um separador “–” é adicionado ao vetor de argumento, seguido pela lista de arquivos a serem editados. Esse vetor de argumento é retornado ao front-end do sudo.
- O front-end do sudo usa o separador “–” para determinar quais arquivos editar. Cópias temporárias de arquivos são feitas com o proprietário definido para o usuário chamador.
- O front-end do sudo constrói um novo vetor de argumento que consiste em todos os elementos antes do separador “–” (o editor) seguido pelos caminhos do arquivo temporário. O novo vetor de argumento é executado como o usuário que o chama.
- Os arquivos temporários são copiados de volta para seu local original e as versões temporárias são excluídas.
- Existe uma vulnerabilidade se o editor especificado pelo usuário também contiver um argumento “–”. Isso fará com que o sudo front-end trate tudo após o argumento “-” no editor como um arquivo a ser editado, mesmo que a política de sudoers não o permita.
A vulnerabilidade está presente desde o branch 1.8.0 e corrigida no patch sudo 1.9.12p2. O lançamento de atualizações de pacotes nas distribuições pode ser visto nas páginas a seguir: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch, FreeBSD e NetBSD.
Por fim, é mencionado que, como solução alternativa de segurança, você pode desativar o processamento das variáveis de ambiente SUDO_EDITOR, VISUAL e EDITOR especificando em sudoers:
Defaults!sudoedit env_delete+="SUDO_EDITOR VISUAL EDITOR"
Mais informações no link: https://www.synacktiv.com/