
Образовательная лаборатория для изучения CVE-2014-0160 (Heartbleed) и несоответствий фреймирования в обработке TLS Heartbeat.
Образовательная лаборатория для изучения уязвимости Heartbleed
(CVE-2014-0160) с использованием реальной уязвимой среды OpenSSL внутри Docker.
Этот проект воспроизводит уязвимый TLS-сервер с использованием OpenSSL 1.0.1f и реализует собственный raw-клиент TLS Heartbeat, чтобы продемонстрировать, как некорректные пакеты heartbeat могут привести к раскрытию памяти.
Лаборатория создана в образовательных и исследовательских целях, в частности для изучения:
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
Где:
heartbleed-client отправляет raw-записи TLSvulnerable-heartbleed запускает OpenSSL 1.0.1fУязвимый сервер использует:
openssl s_serverСреда намеренно настроена для воспроизведения оригинального поведения Heartbleed.
Реализация клиента:
Текущая реализация воспроизводит оригинальное поведение Heartbleed путем отправки некорректного пакета heartbeat, в котором:
payload_length > real payload size
Пример:
Объявленная длина полезной нагрузки: 0x4000
Реальная полезная нагрузка: 1 байт ("A")
Уязвимый сервер ошибочно доверяет объявленной длине и отвечает содержимым памяти за пределами фактических границ полезной нагрузки.
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
Это указывает на то, что уязвимый сервер вернул содержимое памяти за пределами легитимной полезной нагрузки heartbeat.
Этот проект исследует взаимосвязь между:
Одним из главных исследовательских интересов этой лаборатории является сравнение:
HTTP Request Smuggling
vs
TLS Heartbeat Parsing Failures
с точки зрения:
Запланированные следующие шаги включают:
Этот репозиторий существует исключительно для: