Uma vulnerabilidade no OverlayFS permite o escalonamento de privilégios do usuário

vulnerabilidade

Se exploradas, essas falhas podem permitir que invasores obtenham acesso não autorizado a informações confidenciais ou geralmente causem problemas

Foram divulgadas informações sobre um vulnerabilidade detectada no kernel do linux na implementação do sistema de arquivos OverlayFS (listado em CVE-2023-0386).

Fracasso 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 não privilegiado (começando com o kernel Linux 5.11 com a inclusão de um namespace de usuário não privilegiado).

Ataque é feito copiando arquivos com flags setgid/setuid de uma partição montada em modo nosuid para uma partição OverlayFS que possui uma camada associada à partição que permite a execução de arquivos suid.

Uma falha foi encontrada no kernel do Linux, onde o acesso não autorizado à execução do arquivo setuid com recursos foi encontrado no subsistema OverlayFS do kernel do Linux na forma de um usuário copiando um arquivo capaz de uma montagem nosuid para outra montagem. Esse erro de mapeamento uid permite que um usuário local aumente seus privilégios no sistema.

Vulnerabilidade é semelhante ao problema CVE-2021-3847 identificado em 2021, mas difere em requisitos de exploração mais baixos: o problema antigo exigia a manipulação de xattrs, que é limitado ao uso de namespaces de usuário (usernamespace), e o novo problema usa bits setgid /setuid que não são tratados especificamente no espaço de nome de usuário.

Um invasor com um usuário com poucos privilégios em uma máquina Linux com uma montagem de sobreposição que possui capacidade de arquivo em uma de suas camadas pode escalar seus privilégios para root copiando um arquivo compatível de uma montagem nosuid para outra montagem. Essa vulnerabilidade é semelhante à CVE-2021-3847 , mas requer menos permissões para ser executada, por isso tem uma prioridade mais alta.

Algoritmo de ataque:

  • Com a ajuda do subsistema FUSE, é montado um sistema de arquivos, no qual existe um arquivo executável de propriedade do usuário root com os sinalizadores setuid / setgid, disponível para gravação de todos os usuários. Na montagem, o FUSE define o modo como "nosuid".
  • Pare de compartilhar namespaces de usuário e pontos de montagem (namespace de usuário/montagem).
  • O OverlayFS é montado com o FS criado anteriormente no FUSE como a camada inferior e a camada superior, dependendo do diretório de gravação. O diretório da camada superior deve estar localizado em um sistema de arquivos que não use o sinalizador "nosuid" durante a montagem.
  • Para um arquivo suid na partição FUSE, o utilitário de toque altera o tempo de modificação, trazendo sua cópia para a camada superior do OverlayFS.
  • Ao copiar, o kernel não remove os sinalizadores setgid/setuid, o que faz com que o arquivo apareça em uma partição que pode ser processada por setgid/setuid.
  • Para obter direitos de root, basta executar o arquivo com os sinalizadores setgid/setuid do diretório anexado à camada superior do OverlayFS.

em a solução de vulnerabilidade, cabe mencionar que este foi corrigido na ramificação do kernel 6.2. Se você quiser saber mais sobre a publicação de atualizações de pacotes em distribuições, você pode ver nas páginas: DebianUbuntuGentooRHELSUSEFedoraarco .

Além disso, podemos destacar a divulgação de informações de pesquisadores da equipe do Google Project Zero sobre três vulnerabilidades que foram corrigidas no ramo principal do kernel Linux 5.15, mas eles não foram portados para os pacotes de kernel RHEL 8.x/9.x e fluxo CentOS 9.

  1. CVE-2023-1252: Acesso a uma área de memória já liberada na estrutura ovl_aio_req durante a execução de várias operações ao mesmo tempo no OverlayFS implementado no sistema de arquivos Ext4. Potencialmente, a vulnerabilidade permite que você aumente seus privilégios no sistema.
  2. CVE-2023-0590: Refere-se a uma área de memória já liberada na função qdisc_graft(). A operação deve ser limitada a abortar.
  3. CVE-2023-1249: acesso à área de memória já liberada no código de entrada de despejo devido a uma chamada mmap_lock perdida em file_files_note. A operação deve ser limitada a abortar.