Vulnerabilidade no OverlayFS permitindo escalonamento de privilégios

No kernel Linux, foi identificada uma vulnerabilidade na implementação do sistema de arquivos OverlayFS (CVE-2023-0386), que pode ser usado para obter acesso root em sistemas que possuem o subsistema FUSE instalado e permitem a montagem de partições OverlayFS por um usuário sem privilégios (começando com o kernel Linux 5.11 com a inclusão do namespace de usuário sem privilégios). O problema foi corrigido na ramificação do kernel 6.2. A publicação de atualizações de pacotes em distribuições pode ser acompanhada nas páginas: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

O ataque é realizado copiando arquivos com flags setgid/setuid de uma partição montada no modo nosuid para uma partição OverlayFS que possui uma camada associada à partição que permite a execução de arquivos suid. A vulnerabilidade é próxima do problema CVE-2021-3847 identificado em 2021, mas tem requisitos de exploração mais baixos – o problema antigo exigia manipulação de xattrs, que é limitado ao usar namespaces de usuário, e o novo problema usa bits setgid/setuid, que são não tratado especificamente no namespace do usuário.

Algoritmo de ataque:

  • Utilizando o subsistema FUSE, é montado um sistema de arquivos, no qual existe um arquivo executável pertencente ao usuário root com flags setuid/setgid, acessível a todos os usuários para escrita. Ao montar, o FUSE define o modo para “nosuid”.
  • Namespaces de usuário/montagem não são compartilhados.
  • OverlayFS é montado, especificando o FS criado anteriormente no FUSE como a camada inferior e a camada superior com base em um diretório gravável. O diretório da camada superior deve estar localizado em um sistema de arquivos que não use o sinalizador “nosuid” ao montá-lo.
  • Para um arquivo suid na partição FUSE, o utilitário touch altera o horário de modificação, o que leva à sua cópia para a camada superior do OverlayFS.
  • Ao copiar, o kernel não limpa os sinalizadores setgid/setuid, o que resulta no arquivo aparecendo em uma partição que permite o processamento setgid/setuid.
  • Para obter direitos de root, basta executar o arquivo com os sinalizadores setgid/setuid do diretório anexado à camada superior do OverlayFS.

Adicionalmente, podemos notar a divulgação por pesquisadores da equipe do Google Project Zero de informações sobre três vulnerabilidades que foram corrigidas no branch principal do kernel Linux 5.15, mas não foram transferidas para pacotes com o kernel do RHEL 8.x/9. x e CentOS Stream 9.

  • CVE-2023-1252 – acesso a uma área de memória já liberada na estrutura ovl_aio_req ao executar múltiplas operações simultaneamente no OverlayFS implantado no sistema de arquivos Ext4. Potencialmente, a vulnerabilidade permite aumentar seus privilégios no sistema.
  • CVE-2023-0590 – Acesso à memória já liberada na função qdisc_graft(). Presume-se que a operação esteja limitada à terminação anormal.
  • CVE-2023-1249 Um acesso à memória já liberado no código de gravação coredump ocorre devido a uma chamada perdida para mmap_lock em file_files_note. Presume-se que a operação esteja limitada à terminação anormal.

Fonte: opennet.ru

Adicionar um comentário