
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(커밋 b1924d3) 및 27.3.3(커밋 6eef041)에서 완화되었습니다.
완화된 대상(lab_patched/)에서 ssh_connection.erl은 연결 상태 검증을 명시적으로 강제합니다:
handle_msg(#ssh_msg_channel_open{}, #state{authenticated = false} = State) ->
{disconnect, {error, unauthenticated}, State};
모든 랩 컨테이너와 네트워크를 중지하고 제거하려면:
docker compose down