Uma vulnerabilidade no systemd-coredump que permite determinar o conteúdo da memória de programas suid

Uma vulnerabilidade (CVE-2022-4415) foi identificada no componente systemd-coredump, responsável pelo gerenciamento de arquivos core gerados após falhas de processos. Essa vulnerabilidade permite que um usuário local sem privilégios determine o conteúdo da memória de processos privilegiados em execução com a flag suid root. A vulnerabilidade foi confirmada na configuração padrão das distribuições openSUSE, Arch, Debian, Fedora e SLES.

A vulnerabilidade é causada pelo tratamento inadequado do parâmetro sysctl fs.suid_dumpable no systemd-coredump. Seu valor padrão de 2 permite a geração de core dumps para processos com a flag suid. Os arquivos core gravados pelo kernel para processos suid devem ter permissões de leitura exclusivas do root. O utilitário systemd-coredump, chamado pelo kernel para salvar os arquivos core, salva o arquivo core com o ID de usuário root, mas também concede acesso aos arquivos core com base em uma ACL, permitindo acesso de leitura com base no ID do proprietário do processo que o iniciou originalmente.

Essa funcionalidade permite que arquivos core sejam carregados independentemente da capacidade do programa de alterar o ID do usuário e executar com privilégios elevados. O ataque envolve um usuário que inicia um aplicativo SUID e envia um sinal SIGSEGV, após o qual o conteúdo do arquivo core, incluindo uma parte da memória do processo durante uma falha, pode ser carregado.

Por exemplo, um usuário poderia executar "/usr/bin/su" e finalizá-lo em outro terminal com o comando "kill -s SIGSEGV `pidof su`". Após isso, o systemd-coredump salvaria o arquivo core no diretório /var/lib/systemd/coredump, definindo uma ACL que permite ao usuário atual lê-lo. Como o utilitário suid 'su' lê o conteúdo de /etc/shadow para a memória, um atacante poderia obter acesso aos hashes de senha de todos os usuários do sistema. O utilitário sudo não é vulnerável a ataques, pois impede a geração de arquivos core por meio do ulimit.

De acordo com os desenvolvedores do systemd, a vulnerabilidade se manifesta a partir da versão 247 (novembro de 2020), mas, segundo o pesquisador que descobriu o problema, a versão 246 também é afetada. A vulnerabilidade se manifesta se o systemd for compilado com a biblioteca libacl (padrão em todas as distribuições populares). Uma correção está disponível como patch. Você pode acompanhar o status do patch para as seguintes distribuições nas páginas indicadas: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora e Arch. Como solução alternativa, você pode definir o parâmetro `sysctl fs.suid_dumpable` como 0, o que desabilita a transmissão do dump para o manipulador `systemd-coredump`.

Fonte: opennet.ru

Adicionar um comentário