
cve-2021-41773-source-code-analysis — Updated!
Uma ferramenta de análise estática de patches baseada em Python para estudar a causa raiz e a correção do CVE-2021-41773 (Path Traversal no Apache HTTP Server), comparando o código-fonte vulnerável do Apache HTTP Server 2.4.49 com a implementação corrigida na versão 2.4.51.
Análise do Código-Fonte do Apache HTTP Server CVE-2021-41773
Uma ferramenta Python de análise estática de patches para estudar a causa raiz e a correção da CVE-2021-41773 (Path Traversal no Apache HTTP Server), comparando o código-fonte vulnerável do Apache HTTP Server 2.4.49 com a implementação corrigida na versão 2.4.51.
O projeto realiza análise semântica de código-fonte em vez de um simples diff baseado em texto. Ele extrai informações estruturais da função alvo, compara ambas as versões, infere alterações relevantes para a segurança e gera relatórios de análise profissionais.
Recursos
- Análise estática de código-fonte
- Extração de funções usando correspondência de chaves
- Comparação estrutural entre versões vulneráveis e corrigidas
- Detecção de capacidades de segurança
- Mecanismo de raciocínio sobre patches
- Geração de relatórios em Markdown
- Geração de relatórios em JSON
- Geração de relatórios em HTML
- Configuração automatizada de laboratório Docker
- Ferramenta de verificação do ambiente
Arquitetura do Projeto
Código-Fonte do Apache
│
▼
parser.py
│
▼
extractor.py
│
▼
comparator.py
│
▼
reasoning.py
│
▼
reports.py
Estrutura do Projeto
cve-2021-41773-source-code-analysis
│
├── docker
│ ├── apache249
│ │ ├── Dockerfile # Cria o container do Apache HTTP Server 2.4.49
│ │ └── docker-compose.yml # Inicia o container Apache vulnerável
│ │
│ └── apache251
│ ├── Dockerfile # Cria o container do Apache HTTP Server 2.4.51
│ └── docker-compose.yml # Inicia o container Apache corrigido
│
├── labs # Armazena o código-fonte do Apache baixado
│
├── references
│ └── resources.md # Material de referência para pesquisa da CVE
│
├── scripts
│ ├── patch_analysis
│ │ ├── __init__.py # Inicializa o pacote de análise
│ │ ├── parser.py # Extrai funções C alvo do código-fonte do Apache
│ │ ├── extractor.py # Extrai variáveis, chamadas, condições e capacidades de segurança
│ │ ├── comparator.py # Compara estruturas de funções vulneráveis e corrigidas
│ │ ├── reasoning.py # Realiza raciocínio de segurança sobre alterações detectadas
│ │ ├── reports.py # Coordena a geração de relatórios
│ │ ├── markdown_report.py # Gera relatório de análise em Markdown
│ │ ├── json_report.py # Gera relatório de análise em JSON
│ │ └── html_report.py # Gera relatório de análise em HTML
│ │
│ ├── analyze_patch.py # Ponto de entrada principal para análise de patches
│ ├── verify_lab.py # Verifica a configuração do laboratório Docker
│ └── debug.py # Exibe saída bruta de comparação para depuração
│
├── analysis # Relatórios de análise gerados
│
├── setup.sh # Prepara automaticamente o laboratório completo
│
├── LICENSE
└── README.md
Requisitos
- Python 3.10+
- Docker
- Docker Compose
- Bash
- Linux (Testado no Kali Linux)
Instalação
Clone o repositório
git clone https://github.com/KunalKhandelwal-dev/cve-2021-41773-source-code-analysis.git
Entre no projeto
cd cve-2021-41773-source-code-analysis
Configuração
Execute o script de configuração automatizado.
sudo bash setup.sh
O script de configuração executa automaticamente as seguintes tarefas:
- Verifica as ferramentas necessárias
- Verifica a instalação do Docker
- Baixa o Apache HTTP Server 2.4.49
- Baixa o Apache HTTP Server 2.4.51
- Extrai ambas as árvores de código-fonte
- Cria as imagens Docker
- Inicia os containers Apache
- Cria o ambiente de análise
Exemplo de saída
[INFO] Verificando ferramentas necessárias...
[SUCCESS] Ferramentas necessárias encontradas.
[INFO] Verificando Docker...
[SUCCESS] Docker está em execução.
[INFO] Baixando Apache HTTP Server 2.4.49...
[SUCCESS] Apache 2.4.49 baixado.
[INFO] Baixando Apache HTTP Server 2.4.51...
[SUCCESS] Apache 2.4.51 baixado.
[INFO] Criando imagens Docker...
[SUCCESS] Imagens Docker criadas.
[INFO] Iniciando containers Apache...
[SUCCESS] Containers iniciados.
=========================================================
[SUCCESS] Configuração do Laboratório Apache CVE Concluída
=========================================================
Verificar o Ambiente
Execute
cd scripts
sudo python3 verify_lab.py
Verificação bem-sucedida
A ferramenta de verificação verifica:
- Instalação do Docker
- Daemon do Docker
- Containers em execução
- Versões do Apache
- Código-fonte do Apache
- Função alvo
- Serviços HTTP
- Disponibilidade do GDB
Executar Análise de Patch
Entre no diretório de scripts.
cd scripts
Execute
sudo python3 analyze_patch.py
Exemplo de saída
Exemplo de Saída da Análise
Relatório de Análise de Patch do Apache HTTP Server
Descobertas de Segurança
[MÉDIO]
Decodificação percentual introduzida ou modificada
[MÉDIO]
Validação hexadecimal introduzida ou modificada
[ALTO]
Tratamento de traversal de diretórios melhorado
[ALTO]
Pipeline de normalização de caminhos atualizado
[CRÍTICO]
Proteção contra traversal reforçada
Relatórios Gerados
Após a execução bem-sucedida, os seguintes relatórios são gerados:
analysis/
├── analysis.md
├── analysis.json
└── analysis.html
Pipeline de Análise
Carregar Código-Fonte do Apache
│
▼
Extrair Função Alvo
│
▼
Extrair Informações Estruturais
│
▼
Comparar Vulnerável vs Corrigido
│
▼
Raciocínio de Segurança
│
▼
Gerar Relatórios
Capacidades de Segurança Detectadas
- Codificação / Decodificação Percentual
- Validação Hexadecimal
- Tratamento de Segmentos de Ponto
- Normalização de Separadores de Caminho
- Flags de Normalização de URI
- Proteção contra Traversal de Diretórios
Descobertas Geradas
O mecanismo de raciocínio identifica melhorias de segurança como:
- Decodificação percentual introduzida
- Validação hexadecimal introduzida
- Tratamento de traversal de diretórios melhorado
- Normalização de caminhos atualizada
- Proteção contra traversal reforçada
Propósito Educacional
Este projeto é destinado a:
- Pesquisadores de segurança
- Estudantes que aprendem análise de causa raiz de CVEs
- Engenharia de software seguro
- Análise estática de código-fonte
- Análise de diff de patches
- Pesquisa de vulnerabilidades
Licença
Este projeto é distribuído sob a Licença MIT.
Autor
Kunal Khandelwal
Bacharelado em Engenharia de Ciência da Computação (Cibersegurança)
Pesquisa em Segurança | Segurança de Aplicações | Docker | Análise de Código-Fonte