
이것은 CVE-2025-32433(Erlang OTP SSH 취약점)에 대한 분석입니다. 저는 코드를 전혀 작성하지 않았으며, 코드가 수행하는 작업을 설명하는 주석과 직접 익스플로잇을 수행하기 위해 서버를 설정하는 방법에 대한 지침만 작성했습니다.
자주 묻는 질문 - CVE-2025-32433
Erlang OTP란 무엇인가요? Erlang은 범용 프로그래밍 언어입니다. OTP(Open Telecom Platform)는 BEAM VPN을 사용하여 내결함성을 제공하는 미들웨어, 라이브러리 및 설계 원칙의 모음입니다.
이 Erlang 버전이 왜 취약한가요? OTP 26.2.5.10은 클라이언트가 인증되기 전에 SSH 서버가 특정 SSH 연결 프로토콜 메시지를 제대로 거부하지 않기 때문에 취약합니다. 일반적인 흐름:
클라이언트가 SSH 서버에 연결합니다.
클라이언트와 서버가 SSH 알고리즘을 협상하고 암호화 키 교환을 수행합니다.
암호화된 SSH 연결이 설정됩니다. --실제 익스플로잇은 여기서 시작됩니다--
클라이언트는 비밀번호 또는 공개 키 인증과 같은 사용자 인증을 시작합니다.
인증에 성공하면 클라이언트는 SSH 채널을 열고 이를 통해 작업을 요청할 수 있습니다.
이것이 결함인 이유: 취약한 버전에서 서버는 사용자 인증이 성공적으로 완료되기 전에 SSH_MSG_CHANNEL_OPEN을 포함한 특정 연결 프로토콜 패킷을 처리할 수 있습니다. 따라서 공격자는 SSH 전송 연결을 설정하되 성공적인 사용자 인증을 건너뛰고, 인증된 사용자만 수락해야 하는 메시지를 보낼 수 있습니다. 이로 인해 궁극적으로 인증되지 않은 원격 코드 실행이 가능해질 수 있습니다.
직접 재현하려면 어떻게 해야 하나요? 이것을 다운로드하고 압축을 풉니다. VS Code에서 엽니다. Docker Desktop을 설치하고 로그인합니다. 이 디렉터리에서 다음 명령을 실행합니다: docker build -t local-erlang-ssh . 다음 명령을 실행합니다: docker run --rm -it -p 127.0.0.1:2222:2222 local-erlang-ssh 새 PowerShell을 열고 시작되었는지 테스트합니다: Test-NetConnection 127.0.0.1 -Port 2222 잠시 기다리면 TcpTestSucceeded: true가 표시되어야 합니다. Python 파일로 이동하여 실행을 클릭합니다. 이제 터미널에 EXPLOIT가 표시되어야 합니다. "docker ps" 명령을 사용하여 컨테이너 ID를 얻습니다. 그런 다음 docker exec CONTAINER_ID cat /lab.txt 명령을 붙여넣습니다. "pwned"라는 단어가 반환되어 익스플로잇이 성공했음을 보여줍니다. 컨테이너를 중지하려면 Docker 컨테이너를 시작한 원래 터미널로 돌아가서 Control+C를 누릅니다(두 번 눌러야 할 수도 있습니다).
이 취약점으로부터 내 기기를 어떻게 보호할 수 있나요? Erlang OTP SSH 서버가 있다면 26.2.5.11 이상으로 업데이트하세요.
더 자세히 알아보려면 어디로 가면 되나요? 하이퍼링크가 싫어서 문장 부호 주변의 "["와 "]"를 제거하세요. Matt Keely의 원본 코드: https[:]//github[.]com/ProDefense/CVE-2025-32433/blob/main/CVE-2025-32433.py Matt Keely가 코드를 만든 방법에 대한 워크스루: https[:]//platformsecurity[.]com/blog/CVE-2025-32433-poc NIST 웹사이트: https[:]//nvd.nist[.]gov/vuln/detail/CVE-2025-32433 Erlang: https[:]//www.youtube[.]com/watch?v=M7uo5jmFDUw