Vulnerabilidade no subsistema iSCSI do kernel Linux que permite aumentar seus privilégios

Uma vulnerabilidade (CVE-2021-27365) foi identificada no código do subsistema iSCSI do kernel Linux, que permite que um usuário local sem privilégios execute código no nível do kernel e obtenha privilégios de root no sistema. Um protótipo funcional da exploração está disponível para teste. A vulnerabilidade foi resolvida nas atualizações do kernel Linux 5.11.4, 5.10.21, 5.4.103, 4.19.179, 4.14.224, 4.9.260 e 4.4.260. As atualizações do pacote do kernel estão disponíveis nas distribuições Debian, Ubuntu, SUSE/openSUSE, Arch Linux e Fedora. Nenhuma correção foi lançada para RHEL ainda.

O problema é causado por um erro na função iscsi_host_get_param() do módulo libiscsi, introduzida em 2006 durante o desenvolvimento do subsistema iSCSI. Devido à falta de verificações de tamanho adequadas, alguns atributos de string iSCSI, como nome de host ou nome de usuário, podem exceder o valor PAGE_SIZE (4 KB). A vulnerabilidade pode ser explorada por um usuário sem privilégios enviando mensagens Netlink que definem atributos iSCSI para valores maiores que PAGE_SIZE. Quando esses atributos são lidos através de sysfs ou seqfs, é chamado um código que passa os atributos para a função sprintf para serem copiados em um buffer cujo tamanho é PAGE_SIZE.

A exploração da vulnerabilidade em distribuições depende do suporte para carregamento automático do módulo do kernel scsi_transport_iscsi ao tentar criar um soquete NETLINK_ISCSI. Em distribuições onde este módulo é carregado automaticamente, o ataque pode ser realizado independentemente do uso da funcionalidade iSCSI. Ao mesmo tempo, para usar a exploração com sucesso, é necessário registrar adicionalmente pelo menos um transporte iSCSI. Por sua vez, para registrar um transporte, você pode usar o módulo do kernel ib_iser, que é carregado automaticamente quando um usuário sem privilégios tenta criar um soquete NETLINK_RDMA.

O carregamento automático de módulos necessários para o aplicativo de exploração é suportado no CentOS 8, RHEL 8 e Fedora ao instalar o pacote rdma-core no sistema, que é uma dependência de alguns pacotes populares e é instalado por padrão em configurações para estações de trabalho, sistemas de servidor com Virtualização de ambientes GUI e host. No entanto, o rdma-core não é instalado ao usar um conjunto de servidor que funciona apenas no modo de console e ao instalar uma imagem de instalação mínima. Por exemplo, o pacote está incluído na distribuição base do Fedora 31 Workstation, mas não está incluído no Fedora 31 Server. Debian e Ubuntu são menos suscetíveis ao problema porque o pacote rdma-core carrega os módulos do kernel necessários para o ataque somente se o hardware RDMA estiver presente.

Vulnerabilidade no subsistema iSCSI do kernel Linux que permite aumentar seus privilégios

Como solução alternativa de segurança, você pode desativar o carregamento automático do módulo libiscsi: echo “install libiscsi /bin/true” >> /etc/modprobe.d/disable-libiscsi.conf

Além disso, duas vulnerabilidades menos perigosas que poderiam levar ao vazamento de dados do kernel foram corrigidas no subsistema iSCSI: CVE-2021-27363 (vazamento de informações do descritor de transporte iSCSI via sysfs) e CVE-2021-27364 (buffer fora dos limites ler) . Essas vulnerabilidades podem ser usadas para comunicação através de um soquete netlink com o subsistema iSCSI sem os privilégios necessários. Por exemplo, um usuário sem privilégios poderia conectar-se ao iSCSI e emitir o comando “encerrar uma sessão” para encerrar a sessão.

Fonte: opennet.ru

Adicionar um comentário