Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
DirtyPipe-Exploit — Exploit de prova de conceito para CVE-2022-0847 (Dirty Pipe) permitindo escalonamento local de privilégios em kernels Linux 5.8 até 5.16.10 sobrescrevendo arquivos somente leitura via manipulação de buffer de pipe. | Kitploit
Ferramentas/GitHubGitHub/karanlvm/dirtypipe-exploit
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoPapers e PesquisaAprendizado e EducaçãoExploração de Binários
GitHubkaranlvm/dirtypipe-exploit

DirtyPipe-Exploit

Exploit de prova de conceito para CVE-2022-0847 (Dirty Pipe) permitindo escalonamento local de privilégios em kernels Linux 5.8 até 5.16.10 sobrescrevendo arquivos somente leitura via manipulação de buffer de pipe.

Ver Repositório
215há 11 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CSE 5380: Trabalho de Segurança da Informação CVE-2022-0847 (Dirty Pipe)

Por

Karan Vasudevamurthy (UTA ID: 1002164438)

O que é CVE?

Common Vulnerabilities and Exposures (CVE) é uma lista de vulnerabilidades e exposições de segurança da informação publicamente divulgadas. A corporação MITRE introduziu o CVE em 1999 para identificar e classificar as vulnerabilidades em software e firmware. A MITRE é uma organização sem fins lucrativos que opera centros de pesquisa e desenvolvimento financiados pelo governo federal dos Estados Unidos. O CVE visa facilitar o compartilhamento de informações sobre vulnerabilidades conhecidas, para que os planos de segurança cibernética possam ser atualizados para refletir os problemas e fraquezas de segurança mais recentes. Para isso, o CVE atribui um identificador único a cada vulnerabilidade ou exposição. Através dos identificadores CVE, que também são conhecidos como nomes CVE ou números CVE. O Common Vulnerability Scoring System (CVSS) é um conjunto de padrões abertos para atribuir um número a uma vulnerabilidade a fim de avaliar sua gravidade. A faixa de uma pontuação CVSS é de 0,0 a 10,0. O grau de gravidade de segurança aumenta com o aumento do número. Cada ID CVE é formatado como CVE-AAAA-NNNNN. A parte AAAA é o ano em que o ID CVE foi atribuído ou o ano em que a vulnerabilidade foi tornada pública.

O que são pipes?

No contexto do CVE-2022-0847, é crucial entender o funcionamento interno dos pipes, particularmente os atributos associados ao buffer do pipe. Pipes no Linux ajudam na transferência de dados entre processos, com a saída de um processo se tornando a entrada para outro. Esse mecanismo facilita a comunicação e coordenação entre diferentes processos em execução no sistema. Pipes são unidirecionais no Linux, o que significa que os dados fluem em apenas uma direção. Um buffer de pipe normalmente consiste em uma estrutura de dados FIFO (first-in, first-out) de tamanho fixo que armazena temporariamente os dados sendo transferidos entre processos. Quando um processo escreve dados em um pipe, eles são armazenados no buffer até que outro processo os leia. Assim que os dados são lidos, eles são removidos do buffer, permitindo que novos dados sejam escritos.

A vulnerabilidade

Para o CVE-2022-0847, é importante entender duas funções dentro do buffer do pipe-

  1. copy_page_to_iter_pipe: Esta função é responsável por copiar dados de uma página para um iterador associado a um buffer de pipe. No contexto da comunicação entre processos via pipes, quando um processo escreve dados em um pipe, eles precisam ser copiados para o buffer do pipe para que possam ser lidos por outro processo. A função "copy_page_to_iter_pipe" facilita esse processo de cópia, garantindo que os dados sejam transferidos corretamente e eficientemente entre os processos. Dentro desta função, o parâmetro "flags" é utilizado para especificar ou controlar certos atributos ou comportamentos relacionados ao processo de cópia. Essas flags podem incluir opções como se deve realizar verificações ou validações adicionais, como lidar com tipos específicos de dados ou se deve aplicar otimizações para eficiência.
  2. push_pipe: A função "push_pipe" está envolvida em empurrar dados para o buffer do pipe. Quando um processo escreve dados em um pipe, os dados precisam ser inseridos no buffer do pipe, onde podem então ser lidos por outro processo. A função "push_pipe" é responsável por lidar com esse processo de inserção, garantindo que os dados sejam colocados corretamente no buffer e disponibilizados para leitura por outros processos.

Página | 1

Max Kellermann descobriu que o kernel Linux lidava incorretamente com pipes Unix. A vulnerabilidade surge devido à inicialização inadequada de certos atributos, especificamente o parâmetro "flags", dentro das funções "copy_page_to_iter_pipe" e "push_pipe". Essa omissão leva à possibilidade de valores obsoletos ou incorretos serem atribuídos às flags, comprometendo potencialmente a segurança e a integridade do sistema. Um usuário local não privilegiado poderia usar essa falha para escrever em páginas no cache de página apoiadas por arquivos somente leitura e, assim, escalar seus privilégios no sistema.

Metodologia de Ataque

É semelhante ao CVE-2016-5195 “Dirty Cow”, mas é mais fácil de explorar. A exploração do CVE-2022-0847 requer acesso local ao sistema alvo e afeta versões do kernel Linux mais recentes que a 5.8. Podemos criar novos buffers de pipe com a flag PIPE_BUF_FLAG_CAN_MERGE incorretamente definida devido à falta de inicialização adequada. Essa flag controla a coalescência de escritas em um buffer de pipe e, portanto, permite escrever em uma página existente emendada no pipe. Se um arquivo permitir essa página emendada, a modificação será vista na visão compartilhada em todo o sistema do arquivo na memória. Qualquer liberação de cache posterior ignorará as configurações atuais de permissões do Linux e copiará os dados alterados para o disco. Isso permitiria que um usuário sem privilégios alterasse conteúdos específicos de um arquivo (seja em disco ou na memória), mesmo que o arquivo esteja protegido contra modificação por controles de acesso somente leitura como SELinux, permissões padrão do Linux, controle de acesso avançado e arquivos imutáveis. Portanto, podemos assumir que o atacante seria qualquer usuário local sem privilégios com conhecimento básico de sistemas Linux e capacidade de executar código malicioso. Tal indivíduo poderia escalar seus privilégios e potencialmente comprometer todo o sistema, representando um risco significativo de segurança.

Prova de conceito

Abaixo estão as etapas que segui para explorar o CVE-2022-0847 em uma máquina virtual rodando Linux.

  1. Verificando se sua Distribuição Linux pode ser explorada-

    Qualquer kernel Linux mais recente que 5.8 é afetado. No entanto, as versões 5.16.11, 5.15.25 e 5.10.102 não podem ser exploradas para o CVE-2022-0847. Para descobrir sua versão do kernel, podemos simplesmente executar *uname -r*. Você também pode executar este script bash se não tiver certeza se um sistema alvo é vulnerável ou não.

  2. Baixando o kernel Linux correto-

    Para a demonstração, decidi usar Ubuntu 20.04.1 LTS. Mas esta versão do Ubuntu atualmente roda no kernel Linux 5.15 e o CVE-2022-0847 não pode ser explorado nesta versão do kernel. Para baixar o kernel Linux 5.8, podemos simplesmente executar *sudo apt install linux-image-5.8.0-63-generic linux-headers-5.8.0-63-generic*

  3. Baixando o exploit-

    O exploit pode ser encontrado no GitHub. Ele demonstra como sobrescrever qualquer conteúdo de arquivo no cache de página, mesmo que o arquivo não tenha permissão para ser escrito, seja imutável ou esteja em um ponto de montagem somente leitura. Você também pode executar *git clone[ https://github.com/karanlvm/Infosec.git* ](https://github.com/karanlvm/Infosec.git%60)*no terminal.

  4. Copiando o arquivo passwd original-

    Podemos executar *cp /etc/passwd /tmp/passwd.bak*. Isso nos ajudará a identificar a diferença no arquivo passwd antes e depois de executar o exploit.

  5. Compilando o exploit-

    Para compilar o exploit com sucesso, você precisará ter o GCC instalado. Você pode instalar o GCC com *sudo apt-get install gcc*. Para compilar o exploit, você pode executar *gcc exp.c -o exp*

  6. Executando o exploit-

    Para executar o exploit, os parâmetros que precisam ser fornecidos são o arquivo somente leitura, o deslocamento e alguns caracteres que serão inseridos. Neste caso, executaremos *./exp /etc/passwd 1 ootz:* . Se você obtiver uma saída que diz “It worked !”, significa que exploramos com sucesso a vulnerabilidade Dirty Pipe e agora podemos obter acesso root sem a senha.

Baixar ferramenta