
Laboratoire pédagogique pour l'étude de la CVE-2014-0160 (Heartbleed) et des incohérences de tramage dans la gestion du heartbeat TLS.
Laboratoire pédagogique pour étudier la vulnérabilité Heartbleed
(CVE-2014-0160) à l'aide d'un environnement OpenSSL réellement vulnérable sous Docker.
Ce projet reproduit un serveur TLS vulnérable utilisant OpenSSL 1.0.1f et implémente un client TLS heartbeat brut personnalisé pour démontrer comment des paquets heartbeat malformés peuvent déclencher une divulgation mémoire.
Le laboratoire a été créé à des fins éducatives et de recherche, notamment pour étudier :
heartbleed-lab/
├── client/
│ ├── attacker.py
│ └── Dockerfile
│
├── vulnerable/
│ ├── Dockerfile
│ └── server/
│
├── fixed/
│ ├── Dockerfile
│ └── server/
│
├── docs/
│ └── diagrams/
│
├── notes/
│
├── docker-compose.yml
├── .gitignore
└── README.md
heartbleed-client
↓
Docker internal network
↓
vulnerable-heartbleed
Où :
heartbleed-client envoie des enregistrements TLS brutsvulnerable-heartbleed exécute OpenSSL 1.0.1fLe serveur vulnérable utilise :
openssl s_serverL'environnement est intentionnellement configuré pour reproduire le comportement original de Heartbleed.
L'implémentation du client :
L'implémentation actuelle reproduit le comportement original de Heartbleed en envoyant un paquet heartbeat malformé où :
payload_length > real payload size
Exemple :
Declared payload length: 0x4000
Real payload: 1 byte ("A")
Le serveur vulnérable fait incorrectement confiance à la longueur déclarée et répond avec le contenu mémoire au-delà des limites réelles de la charge utile.
sudo COMPOSE_HTTP_TIMEOUT=300 docker-compose up --build
sudo docker exec -it heartbleed-client bash
python attacker.py
[+] Sending malformed heartbeat
[+] Got TLS record: type=24 version=(3, 2) length=16384
[!!!] Heartbeat response received
Cela indique que le serveur vulnérable a renvoyé le contenu mémoire au-delà de la charge utile heartbeat légitime.
Ce projet explore la relation entre :
L'un des principaux intérêts de recherche de ce laboratoire consiste à comparer :
HTTP Request Smuggling
vs
TLS Heartbeat Parsing Failures
du point de vue :
Les prochaines étapes prévues incluent :
Ce dépôt existe uniquement pour :