
cve-2021-41773-source-code-analysis — Updated!
Strumento di analisi statica delle patch basato su Python per studiare la causa principale e la risoluzione di CVE-2021-41773 (Path Traversal di Apache HTTP Server) confrontando il codice sorgente vulnerabile di Apache HTTP Server 2.4.49 con l'implementazione corretta 2.4.51.
Analisi del Codice Sorgente di Apache HTTP Server CVE-2021-41773
Uno strumento di analisi statica delle patch basato su Python per studiare la causa principale e la risoluzione di CVE-2021-41773 (Path Traversal di Apache HTTP Server) confrontando il codice sorgente vulnerabile di Apache HTTP Server 2.4.49 con l'implementazione corretta 2.4.51.
Il progetto esegue un'analisi semantica del codice sorgente invece di un semplice diff testuale. Estrae informazioni strutturali dalla funzione target, confronta entrambe le versioni, deduce le modifiche rilevanti per la sicurezza e genera report di analisi professionali.
Funzionalità
- Analisi statica del codice sorgente
- Estrazione delle funzioni tramite corrispondenza delle parentesi graffe
- Confronto strutturale tra versione vulnerabile e versione corretta
- Rilevamento delle capacità di sicurezza
- Motore di ragionamento sulle patch
- Generazione di report Markdown
- Generazione di report JSON
- Generazione di report HTML
- Configurazione automatica del laboratorio Docker
- Strumento di verifica dell'ambiente
Architettura del Progetto
Apache Source Code
│
▼
parser.py
│
▼
extractor.py
│
▼
comparator.py
│
▼
reasoning.py
│
▼
reports.py
Struttura del Progetto
cve-2021-41773-source-code-analysis
│
├── docker
│ ├── apache249
│ │ ├── Dockerfile # Builds Apache HTTP Server 2.4.49 container
│ │ └── docker-compose.yml # Starts vulnerable Apache container
│ │
│ └── apache251
│ ├── Dockerfile # Builds Apache HTTP Server 2.4.51 container
│ └── docker-compose.yml # Starts patched Apache container
│
├── labs # Stores downloaded Apache source code
│
├── references
│ └── resources.md # Reference material for CVE research
│
├── scripts
│ ├── patch_analysis
│ │ ├── __init__.py # Initializes the analysis package
│ │ ├── parser.py # Extracts target C functions from Apache source
│ │ ├── extractor.py # Extracts variables, calls, conditions and security capabilities
│ │ ├── comparator.py # Compares vulnerable and patched function structures
│ │ ├── reasoning.py # Performs security reasoning on detected changes
│ │ ├── reports.py # Coordinates report generation
│ │ ├── markdown_report.py # Generates Markdown analysis report
│ │ ├── json_report.py # Generates JSON analysis report
│ │ └── html_report.py # Generates HTML analysis report
│ │
│ ├── analyze_patch.py # Main entry point for patch analysis
│ ├── verify_lab.py # Verifies Docker lab configuration
│ └── debug.py # Displays raw comparison output for debugging
│
├── analysis # Generated analysis reports
│
├── setup.sh # Automatically prepares the complete lab
│
├── LICENSE
└── README.md
Requisiti
- Python 3.10+
- Docker
- Docker Compose
- Bash
- Linux (Testato su Kali Linux)
Installazione
Clona il repository
git clone https://github.com/KunalKhandelwal-dev/cve-2021-41773-source-code-analysis.git
Entra nel progetto
cd cve-2021-41773-source-code-analysis
Configurazione
Esegui lo script di configurazione automatico.
sudo bash setup.sh
Lo script di configurazione esegue automaticamente le seguenti operazioni:
- Controlla gli strumenti richiesti
- Verifica l'installazione di Docker
- Scarica Apache HTTP Server 2.4.49
- Scarica Apache HTTP Server 2.4.51
- Estrae entrambi gli alberi sorgente
- Crea le immagini Docker
- Avvia i container Apache
- Crea l'ambiente di analisi
Esempio di output
[INFO] Checking required tools...
[SUCCESS] Required tools found.
[INFO] Checking Docker...
[SUCCESS] Docker is running.
[INFO] Downloading Apache HTTP Server 2.4.49...
[SUCCESS] Apache 2.4.49 downloaded.
[INFO] Downloading Apache HTTP Server 2.4.51...
[SUCCESS] Apache 2.4.51 downloaded.
[INFO] Building Docker images...
[SUCCESS] Docker images built.
[INFO] Starting Apache containers...
[SUCCESS] Containers started.
=========================================================
[SUCCESS] Apache CVE Lab Setup Complete
=========================================================
Verifica dell'Ambiente
Esegui
cd scripts
sudo python3 verify_lab.py
Verifica riuscita
Lo strumento di verifica controlla:
- Installazione di Docker
- Daemon Docker
- Container in esecuzione
- Versioni di Apache
- Codice sorgente di Apache
- Funzione target
- Servizi HTTP
- Disponibilità di GDB
Esegui l'Analisi delle Patch
Spostati nella directory scripts.
cd scripts
Esegui
sudo python3 analyze_patch.py
Esempio di output
Esempio di Output dell'Analisi
Apache HTTP Server Patch Analysis Report
Security Findings
[MEDIUM]
Percent decoding introduced or modified
[MEDIUM]
Hexadecimal validation introduced or modified
[HIGH]
Directory traversal handling improved
[HIGH]
Path normalization pipeline updated
[CRITICAL]
Traversal protection strengthened
Report Generati
Dopo un'esecuzione riuscita vengono generati i seguenti report:
analysis/
├── analysis.md
├── analysis.json
└── analysis.html
Pipeline di Analisi
Load Apache Source
│
▼
Extract Target Function
│
▼
Extract Structural Information
│
▼
Compare Vulnerable vs Patched
│
▼
Security Reasoning
│
▼
Generate Reports
Capacità di Sicurezza Rilevate
- Codifica / Decodifica Percentuale
- Validazione Esadecimale
- Gestione dei Segmenti Dot
- Normalizzazione dei Separatori di Percorso
- Flag di Normalizzazione URI
- Protezione dal Directory Traversal
Risultati Generati
Il motore di ragionamento identifica miglioramenti di sicurezza come:
- Decodifica percentuale introdotta
- Validazione esadecimale introdotta
- Gestione del directory traversal migliorata
- Normalizzazione del percorso aggiornata
- Protezione dal traversal rafforzata
Finalità Didattiche
Questo progetto è pensato per:
- Ricercatori di sicurezza
- Studenti che studiano l'analisi delle cause principali delle CVE
- Ingegneria del software sicuro
- Analisi statica del codice sorgente
- Analisi dei diff delle patch
- Ricerca sulle vulnerabilità
Licenza
Questo progetto è rilasciato sotto la Licenza MIT.
Autore
Kunal Khandelwal
B.Tech Ingegneria Informatica (Cyber Security)
Ricerca sulla Sicurezza | Sicurezza delle Applicazioni | Docker | Analisi del Codice Sorgente