Erlang/OTP SSH सर्वर में SSH प्रोटोकॉल संदेश प्रबंधन में एक त्रुटि के कारण, एक दुर्भावनापूर्ण अभिनेता बिना वैध क्रेडेंशियल के प्रभावित सिस्टम तक अनधिकृत पहुँच प्राप्त कर सकता है और मनमाने कमांड निष्पादित कर सकता है
यह रिपॉज़िटरी CVE-2025-32433 (Erlang/OTP SSH अनुपस्थित प्रमाणीकरण भेद्यता) के लिए एक पूर्ण, सबमिशन-तैयार, कंटेनरीकृत सुरक्षा अनुसंधान लैब प्रदान करती है। यह सुरक्षा इंजीनियरों, समीक्षकों और शोधकर्ताओं को एक सख्ती से पृथक वातावरण में इस दोष को स्वतंत्र रूप से तैनात करने, पुनरुत्पादित करने, विश्लेषण करने और पहचानने की अनुमति देती है।
लैब एक कस्टम पृथक ब्रिज नेटवर्क (cve-lab-bridge) के माध्यम से जुड़े 3 Docker कंटेनरों को ऑर्केस्ट्रेट करती है:
┌─────────────────────────────────────────┐
│ 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
प्री-ऑथ SSH_MSG_CHANNEL_OPEN (Type 90 / 0x5A) पैकेटों के लिए TCP पोर्ट 2222 की निगरानी करता है।
# 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.logPowerShell में लाइव टेलिंग:
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