
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.
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.
Código-Fonte do Apache
│
▼
parser.py
│
▼
extractor.py
│
▼
comparator.py
│
▼
reasoning.py
│
▼
reports.py
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
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
Execute o script de configuração automatizado.
sudo bash setup.sh
O script de configuração executa automaticamente as seguintes tarefas:
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
=========================================================
Execute
cd scripts
sudo python3 verify_lab.py
Verificação bem-sucedida
A ferramenta de verificação verifica:
Entre no diretório de scripts.
cd scripts
Execute
sudo python3 analyze_patch.py
Exemplo de saída
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
Após a execução bem-sucedida, os seguintes relatórios são gerados:
analysis/
├── analysis.md
├── analysis.json
└── analysis.html
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
O mecanismo de raciocínio identifica melhorias de segurança como:
Este projeto é destinado a:
Este projeto é distribuído sob a Licença MIT.
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