🇰🇷 한글 설명
Russh 라이브러리 0.62.4 미만 버전에서 발생하는 취약점으로, 악의적인 SSH 서버가 잘못된 길이의 KEX_ECDH_REPLY 값을 전송할 경우 클라이언트 세션이 충돌하며 종료됩니다. Curve25519Kex::compute_shared_secret 함수가 서버의 일시적 값 길이를 검증하지 않고 처리하여 결정론적 패닉(panic)이 발생합니다.
💡 쉬운 설명
나쁜 마음을 먹은 서버가 규칙에 맞지 않는 데이터를 보내면, 접속을 시도하던 프로그램이 갑자기 멈춰버리는 문제입니다. 이로 인해 사용자의 SSH 연결 세션이 강제로 끊길 수 있습니다.
🇺🇸 원문 (English)
Russh is a Rust SSH client & server library. Prior to 0.62.4, a malicious SSH server can crash a russh client session with a malformed KEX_ECDH_REPLY containing a server ephemeral value that is not 32 bytes long. The client-side Curve25519Kex::compute_shared_secret function in russh/src/kex/curve25519.rs passes the decoded exchange.server_ephemeral value to clone_from_slice without validating its length, causing a deterministic panic before the server host key is verified. The panic terminates the spawned client session task and surfaces as a JoinError, while the embedding process normally remains running. This issue is fixed in version 0.62.4.
📍 영향받는 시스템
Russh library versions prior to 0.62.4
⚔️ 공격 벡터
악의적인 SSH 서버가 32바이트가 아닌 잘못된 길이의 서버 일시적 값을 포함한 KEX_ECDH_REPLY를 전송
🛡️ 대응 방법
Russh 라이브러리를 0.62.4 버전 이상으로 업데이트
🔧 검증 코드
출력된 버전이 0.62.4 미만인지 확인하여 취약 여부를 판단합니다.
cargo pkgid russh 2>/dev/null | grep -oE 'russh@v[0-9]+\.[0-9]+\.[0-9]+' || echo 'Not found'
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
💻 영향받는 소프트웨어
Microsoft Exchange Server