
Sistema simulado seguro e controlado que simula o CVE-2021-4034 (PwnKit) com leitura/escrita fora dos limites, injeção de variáveis de ambiente e detecção de defesas do kernel para prática educacional de exploração.
Este projeto é um sistema simulado que reproduz o princípio central de funcionamento da vulnerabilidade CVE-2021-4034 (Leitura/Escrita Fora dos Limites) que ocorreu no daemon pkexec do Linux. Sem elevação real de privilégios SUID, ele simula com segurança, em um ambiente controlado, a invasão da região de memória de variáveis de ambiente e o mecanismo de injeção de payload malicioso.
Especialmente, este sistema simulado foi projetado para detectar o mecanismo de defesa execve do kernel Linux moderno (o fenômeno de forçar a inserção de uma string vazia e fazer argc=1 ao passar um array vazio) e corrigir o deslocamento para imitar com sucesso o ambiente de memória vulnerável do passado.
cve-2021-4034-mock/
├── README.md # Descrição do projeto e guia de execução
├── src/
│ ├── mock_pkexec.c # Código-fonte do daemon alvo com validação de argumentos (argc) ausente
│ └── exploit.c # Código-fonte do atacante que entrega o payload de ataque via execve
└── bin/ # Diretório para armazenar executáveis compilados (gerado na compilação)
No terminal, após navegar até o diretório raiz do projeto, digite os comandos abaixo, um por vez, para compilar o código-fonte.
# 1. Criar a pasta bin para armazenar os executáveis
mkdir -p bin
# 2. Compilar o programa alvo (sistema simulado)
gcc -Wall -Wextra -o bin/mock_pkexec src/mock_pkexec.c
# 3. Compilar o script de exploração de ataque
gcc -Wall -Wextra -o bin/exploit src/exploit.c
Se compilado com sucesso, os executáveis mock_pkexec e exploit serão gerados dentro da pasta bin/.
Quando executado com argumentos passados normalmente, demonstra que a verificação de permissão falha ou o programa termina em segurança devido à lógica de defesa.
./bin/mock_pkexec test_argument
[OK].Execute o script de ataque para forçar a passagem de um payload argc=0 (array NULL), acionando a vulnerabilidade.
./bin/exploit
argc para 1 e corrige dinamicamente o índice de referência de memória.argv e invade a região adjacente envp.GCONV_PATH) é sobrescrita com sucesso na memória do sistema, e o aviso vermelho [FATAL] ENVIRONMENT CORRUPTION DETECTED! é exibido.Após a conclusão dos testes, use o comando abaixo para remover os arquivos binários compilados.
rm -rf bin/