
Laboratorio educativo per lo studio di CVE-2014-0160 (Heartbleed) e delle incongruenze di framing nella gestione degli heartbeat TLS.
Laboratorio educativo per lo studio della vulnerabilità Heartbleed
(CVE-2014-0160) utilizzando un ambiente reale OpenSSL vulnerabile all'interno di Docker.
Questo progetto riproduce un server TLS vulnerabile usando OpenSSL 1.0.1f e implementa un client TLS heartbeat raw personalizzato per dimostrare come pacchetti heartbeat malformati possano causare la divulgazione di memoria.
Il laboratorio è stato creato a scopo educativo e di ricerca, in particolare per studiare:
heartbleed-lab/
├── client/
│ ├── attacker.py
│ └── Dockerfile
│
├── vulnerable/
│ ├── Dockerfile
│ └── server/
│
├── fixed/
│ ├── Dockerfile
│ └── server/
│
├── docs/
│ └── diagrams/
│
├── notes/
│
├── docker-compose.yml
├── .gitignore
└── README.md
heartbleed-client
↓
Rete interna Docker
↓
vulnerable-heartbleed
Dove:
heartbleed-client invia record TLS grezzivulnerable-heartbleed esegue OpenSSL 1.0.1fIl server vulnerabile utilizza:
openssl s_serverL'ambiente è configurato intenzionalmente per riprodurre il comportamento originale di Heartbleed.
L'implementazione del client:
L'implementazione corrente riproduce il comportamento originale di Heartbleed inviando un pacchetto heartbeat malformato in cui:
payload_length > dimensione reale del payload
Esempio:
Lunghezza dichiarata del payload: 0x4000
Payload reale: 1 byte ("A")
Il server vulnerabile si fida erroneamente della lunghezza dichiarata e risponde con contenuti di memoria oltre i confini effettivi del payload.
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
Questo indica che il server vulnerabile ha restituito contenuti di memoria oltre il payload heartbeat legittimo.
Questo progetto esplora la relazione tra:
Uno dei principali interessi di ricerca di questo laboratorio è il confronto tra:
HTTP Request Smuggling
vs
TLS Heartbeat Parsing Failures
dal punto di vista di:
I prossimi passi pianificati includono:
Questo repository esiste esclusivamente per: