ثغرة في معالجة رسائل بروتوكول SSH، قد يتمكن فاعل خبيث من الحصول على وصول غير مصرح به إلى الأنظمة المتأثرة وتنفيذ أوامر عشوائية دون بيانات اعتماد صالحة في خادم Erlang/OTP SSH
يوفر هذا المستودع مختبر بحث أمني كامل جاهز للتسليم ومعبأ في حاويات لثغرة CVE-2025-32433 (ثغرة غياب المصادقة في Erlang/OTP SSH). وهو يتيح لمهندسي الأمن والمراجعين والباحثين نشر الثغرة وإعادة إنتاجها وتحليلها واكتشافها بشكل مستقل في بيئة معزولة تمامًا.
ينسّق المختبر 3 حاويات Docker متصلة عبر شبكة جسر معزولة مخصصة (cve-lab-bridge):
┌─────────────────────────────────────────┐
│ Isolated Docker Bridge │
│ (cve-lab-bridge) │
└────┬──────────────────────────────┬─────┘
│ │
┌──────────────┴──────────────┐┌──────────────┴──────────────┐
│ target_vulnerable ││ target_patched │
│ Erlang/OTP 26.2.5 ││ Erlang/OTP 26.2.5.11 │
│ Host Port: 127.0.0.1:2222 ││ Host Port: 127.0.0.1:2223 │
│ Logs: ./logs/target_vulnerable/ ││ Logs: ./logs/target_patched/ │
└─────────────────────────────┘└─────────────────────────────┘
│
┌──────────────┴──────────────┐
│ attacker │
│ Python 3 + Scapy/Paramiko │
│ Workdir: /work │
└─────────────────────────────┘
v20.10+ و Docker Compose v2.20+)paramiko و scapy)استنسخ المستودع وابدأ جميع خدمات المختبر:
# 1. Clone the repository
git clone <repository_url>
cd INE_CYBER_ASSIGNMENT_JOB
# 2. Build and start all 3 lab containers in detached mode
docker compose up -d --build
# 3. Verify all containers are running and healthy
docker ps
شغّل مجموعة التشخيص والاكتشاف الكاملة المكوّنة من 4 طبقات بأمر واحد فقط:
python detection/run_all_detections.py
# Enter the attacker container
docker exec -it cve-2025-32433-attacker bash
# Run the master detector inside container
python3 /work/detection/run_all_detections.py
# Connect to Vulnerable Target (Port 2222)
ssh -p 2222 [email protected]
# Password: LabPass2026!Secured
# Connect to Patched Target (Port 2223)
ssh -p 2223 [email protected]
# Password: LabPass2026!Secured
docker exec -it cve-2025-32433-attacker bash):# Connect to Vulnerable Target (Internal Port 2222)
ssh -p 2222 labuser@target_vulnerable
# Password: LabPass2026!Secured
# Connect to Patched Target (Internal Port 2222)
ssh -p 2222 labuser@target_patched
# Password: LabPass2026!Secured
# Test Vulnerable Target
python scripts/baseline_auth_test.py 127.0.0.1 2222
# Test Patched Target
python scripts/baseline_auth_test.py 127.0.0.1 2223
# Test Vulnerable Target
python3 /work/scripts/baseline_auth_test.py target_vulnerable 2222
# Test Patched Target
python3 /work/scripts/baseline_auth_test.py target_patched 2222
# Scan Vulnerable Target
python detection/detect_cve_2025_32433.py 127.0.0.1 2222
# Scan Patched Target
python detection/detect_cve_2025_32433.py 127.0.0.1 2223
# Scan Vulnerable Target
python3 /work/detection/detect_cve_2025_32433.py target_vulnerable 2222
# Scan Patched Target
python3 /work/detection/detect_cve_2025_32433.py target_patched 2222
يراقب منفذ TCP رقم 2222 بحثًا عن حزم SSH_MSG_CHANNEL_OPEN (النوع 90 / 0x5A) قبل المصادقة.
# Run inside Attacker Container shell
python3 /work/detection/network_behavior_detect.py
يراقب جدول عمليات الحاوية المصابة (ps aux) بحثًا عن صدفات فرعية مُنشأة.
# Run from Host PowerShell
python detection/host_process_monitor.py
تُكتب سجلات Erlang SSH على القرص داخل كل حاوية وتُثبَّت مباشرة على نظام ملفات المضيف لديك:
./logs/target_vulnerable/ssh.log./logs/target_patched/ssh.logالمتابعة الحية في PowerShell:
Get-Content -Path .\logs\target_vulnerable\ssh.log -Wait -Tail 20
راجع LOGGING.md للحصول على تفاصيل مخطط السجل.
تمت معالجة CVE-2025-32433 في Erlang/OTP 26.2.5.11 (commit b1924d3) و 27.3.3 (commit 6eef041).
في الهدف المُعالَج (lab_patched/)، يفرض ssh_connection.erl صراحةً التحقق من حالة الاتصال:
handle_msg(#ssh_msg_channel_open{}, #state{authenticated = false} = State) ->
{disconnect, {error, unauthenticated}, State};
لإيقاف وإزالة جميع حاويات وشبكات المختبر:
docker compose down