
cve-2021-41773-source-code-analysis — Updated!
Ein auf Python basierendes Tool zur statischen Patch-Analyse, das die Ursache und Behebung von CVE-2021-41773 (Apache HTTP Server Path Traversal) untersucht, indem es den verwundbaren Quellcode von Apache HTTP Server 2.4.49 mit der gepatchten Implementierung von 2.4.51 vergleicht.
Apache HTTP Server CVE-2021-41773 Quellcode-Analyse
Ein Python-basiertes statisches Patch-Analyse-Tool zur Untersuchung der Grundursache und Behebung von CVE-2021-41773 (Apache HTTP Server Path Traversal) durch den Vergleich des verwundbaren Quellcodes von Apache HTTP Server 2.4.49 mit der gepatchten Implementierung von 2.4.51.
Das Projekt führt eine semantische Quellcode-Analyse durch statt eines einfachen textbasierten Vergleichs. Es extrahiert strukturelle Informationen aus der Zielfunktion, vergleicht beide Versionen, leitet sicherheitsrelevante Änderungen ab und erstellt professionelle Analyseberichte.
Funktionen
- Statische Quellcodeanalyse
- Funktionsextraktion mittels Klammernabgleich
- Struktureller Vergleich zwischen verwundbarer und gepatchter Version
- Erkennung von Sicherheitsfunktionen
- Patch-Reasoning-Engine
- Markdown-Berichtserstellung
- JSON-Berichtserstellung
- HTML-Berichtserstellung
- Automatisiertes Docker-Lab-Setup
- Tool zur Umgebungsverifizierung
Projektarchitektur
Apache Source Code
│
▼
parser.py
│
▼
extractor.py
│
▼
comparator.py
│
▼
reasoning.py
│
▼
reports.py
Projektstruktur
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
Anforderungen
- Python 3.10+
- Docker
- Docker Compose
- Bash
- Linux (getestet auf Kali Linux)
Installation
Repository klonen
git clone https://github.com/KunalKhandelwal-dev/cve-2021-41773-source-code-analysis.git
In das Projektverzeichnis wechseln
cd cve-2021-41773-source-code-analysis
Setup
Führen Sie das automatisierte Setup-Skript aus.
sudo bash setup.sh
Das Setup-Skript führt automatisch die folgenden Aufgaben aus:
- Prüft erforderliche Tools
- Verifiziert die Docker-Installation
- Lädt Apache HTTP Server 2.4.49 herunter
- Lädt Apache HTTP Server 2.4.51 herunter
- Entpackt beide Quellcode-Bäume
- Erstellt Docker-Images
- Startet Apache-Container
- Erstellt die Analyseumgebung
Beispielausgabe
[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
=========================================================
Umgebung verifizieren
Führen Sie aus
cd scripts
sudo python3 verify_lab.py
Erfolgreiche Verifizierung
Das Verifizierungstool prüft:
- Docker-Installation
- Docker-Daemon
- Laufende Container
- Apache-Versionen
- Apache-Quellcode
- Zielfunktion
- HTTP-Dienste
- GDB-Verfügbarkeit
Patch-Analyse ausführen
Wechseln Sie in das Verzeichnis scripts.
cd scripts
Führen Sie aus
sudo python3 analyze_patch.py
Beispielausgabe
Beispiel für die Analyseausgabe
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
Generierte Berichte
Nach erfolgreicher Ausführung werden die folgenden Berichte generiert:
analysis/
├── analysis.md
├── analysis.json
└── analysis.html
Analyse-Pipeline
Load Apache Source
│
▼
Extract Target Function
│
▼
Extract Structural Information
│
▼
Compare Vulnerable vs Patched
│
▼
Security Reasoning
│
▼
Generate Reports
Erkannte Sicherheitsfunktionen
- Prozentkodierung / -Dekodierung
- Hexadezimale Validierung
- Behandlung von Punktsegmenten
- Normalisierung von Pfadtrennzeichen
- URI-Normalisierungsflags
- Schutz vor Verzeichnis-Traversal
Generierte Erkenntnisse
Die Reasoning-Engine identifiziert Sicherheitsverbesserungen wie:
- Prozent-Dekodierung eingeführt
- Hexadezimale Validierung eingeführt
- Behandlung von Verzeichnis-Traversal verbessert
- Pfadnormalisierung aktualisiert
- Traversal-Schutz verstärkt
Bildungszweck
Dieses Projekt richtet sich an:
- Sicherheitsforscher
- Studierende, die die Ursachenanalyse von CVEs erlernen
- Sichere Softwareentwicklung
- Statische Quellcodeanalyse
- Patch-Diff-Analyse
- Schwachstellenforschung
Lizenz
Dieses Projekt wird unter der MIT-Lizenz veröffentlicht.
Autor
Kunal Khandelwal
B.Tech Informatik (Cybersicherheit)
Sicherheitsforschung | Anwendungssicherheit | Docker | Quellcodeanalyse