Dirty Pipe: uma vulnerabilidade que permite que os dados sejam sobrescritos

Recentemente, a notícia de que uma vulnerabilidade foi identificada no kernel do Linux e que já está catalogado sob CVE-2022-0847 e que nomearam como "Tubo Sujo".

Esta vulnerabilidade apelidada de "Dirty Pipe"permite sobrescrever o conteúdo do cache da página para qualquer arquivo, incluindo aqueles definidos como somente leitura, abertos com o sinalizador O_RDONLY ou localizados em sistemas de arquivos montados como somente leitura.

Do lado prático, a vulnerabilidade poderia ser usado para injetar código em processos arbitrários ou dados corrompidos em arquivos abertos. Por exemplo, você pode alterar o conteúdo do arquivo authorized_keys para o processo sshd.

Sobre o tubo sujo

É semelhante à vulnerabilidade crítica Dirty COW identificado em 2016 e Dirty Pipe é mencionado como estando no mesmo nível que Dirty COW em termos de perigo, mas que este é muito mais fácil de operar.

Dirty Pipe foi identificado durante a análise de reclamações sobre danos periódicos aos arquivos baixado pela rede em um sistema que baixa arquivos compactados de um servidor de log (37 danos em 3 meses em um sistema carregado), que foram preparados usando a operação splice() e pipes sem nome.

Vulnerabilidade tem se manifestado desde a versão 5.8 do kernel Linux, lançado em agosto de 2020.

Visto de outra forma, podemos dizer que está presente no Debian 11, mas não afeta o kernel base no Ubuntu 20.04 LTS, enquanto para os kernels RHEL 8.xe openSUSE/SUSE 15 que são originalmente baseados em branches antigos, mas é possível que a mudança que causa o problema foi transferida para eles (ainda não há dados exatos).

A vulnerabilidade deve-se à falta de inicialização do valor "buf->flags" no código das funções copy_page_to_iter_pipe() e push_pipe(), apesar da memória não ser limpa quando a estrutura é alocada, e com certas manipulações com pipes, "buf->flags" pode conter um valor de outra operação. Com esse recurso, um usuário local sem privilégios pode obter a aparência do valor PIPE_BUF_FLAG_CAN_MERGE no sinalizador, permitindo que eles sobrescrevam dados no cache da página simplesmente gravando novos dados em um pipe sem nome especialmente preparado.

para um ataque pode ser feito, você precisa de um arquivo de destino que deve ser legível e como os direitos de acesso não são verificados ao gravar em um pipe, uma substituição pode ser executada no cache da página, mesmo para arquivos localizados em partições somente leitura (por exemplo, para arquivos c CD-ROM).

Com isso, após a substituição das informações no cache da página, o processo, ao ler os dados do arquivo, não receberá os dados reais, mas os substituídos.

É mencionado que a operação Dirty Pipe se resume a criar um pipe sem nome e preenchê-lo com dados arbitrários para conseguir definir o sinalizador PIPE_BUF_FLAG_CAN_MERGE em todas as estruturas de anel associadas a ele.

Os dados são então lidos do pipe, mas o sinalizador permanece definido em todas as instâncias da estrutura pipe_buffer nas estruturas de anel pipe_inode_info. Uma chamada para splice() é então feita para ler os dados do arquivo de destino em um pipe sem nome, começando no deslocamento necessário. Ao gravar dados nesse pipe sem nome, o sinalizador PIPE_BUF_FLAG_CAN_MERGE substituirá os dados no cache da página em vez de criar uma nova instância da estrutura pipe_buffer.

Finalmente Se você estiver interessado em saber mais sobre isso, você pode verificar os detalhes na nota original no link a seguir.

Além disso, se você estiver interessado em poder acompanhar ou saber sobre a publicação de atualizações de pacotes nas principais distribuições, você pode fazê-lo nestas páginas: DebianSUSEUbuntuRHELFedoraGentooArco Linux.

Menciona-se que a correção de vulnerabilidade proposta está disponível nas versões do Kernel Linux 5.16.11, 5.15.25 e 5.10.102 e a correção também está incluída no kernel usado na plataforma Android.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: AB Internet Networks 2008 SL
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.