
مختبر تعليمي لدراسة CVE-2014-0160 (Heartbleed) والتناقضات في تأطير معالجة نبضة القلب في TLS.
مختبر تعليمي لدراسة ثغرة Heartbleed
(CVE-2014-0160) باستخدام بيئة OpenSSL ضعيفة حقيقية داخل Docker.
يعيد هذا المشروع إنتاج خادم TLS ضعيف باستخدام OpenSSL 1.0.1f وينفّذ عميل 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 يرسل سجلات TLS خامvulnerable-heartbleed يشغّل OpenSSL 1.0.1fيستخدم الخادم الضعيف:
openssl s_serverتم إعداد البيئة عمدًا لإعادة إنتاج سلوك Heartbleed الأصلي.
تطبيق العميل:
يعيد التنفيذ الحالي إنتاج سلوك Heartbleed الأصلي عن طريق إرسال حزمة Heartbeat مشوّهة حيث:
payload_length > real payload size
مثال:
Declared payload length: 0x4000
Real payload: 1 byte ("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
من منظور:
تشمل الخطوات التالية المخطط لها:
هذا المستودع موجود فقط من أجل: