🇰🇷 한글 설명
Russh Rust SSH 라이브러리 0.63.1 미만 버전에서 발생하는 취약점으로, 클라이언트가 열지 않았거나 이미 종료된 채널 ID에 대한 이벤트를 검증 없이 핸들러로 전달합니다. 악의적인 SSH 서버가 예측된 채널 ID로 생명주기 이벤트를 전송할 경우 애플리케이션 패닉이 발생하거나 명령 완료 및 종료 코드 추적이 손상될 수 있습니다.
💡 쉬운 설명
SSH 접속 도중 해커가 만든 가짜 서버가 가짜 신호를 보내 프로그램이 갑자기 꺼지거나 잘못된 정보를 전달하게 만드는 문제입니다. 사용자가 요청하지 않은 가짜 명령 결과가 프로그램에 전달되어 혼란을 줄 수 있습니다.
🇺🇸 원문 (English)
Russh is a Rust SSH client and server library. Prior to 0.63.1, client_read_authenticated in russh/src/client/encrypted.rs forwards CHANNEL_DATA, CHANNEL_EXTENDED_DATA, CHANNEL_EOF, CHANNEL_CLOSE, CHANNEL_OPEN_FAILURE, CHANNEL_SUCCESS, CHANNEL_FAILURE, and CHANNEL_REQUEST subtypes exit-status, exit-signal, and xon-xoff to public client::Handler callbacks without confirming that the ChannelId belongs to a channel the client opened and established. A malicious SSH server can send lifecycle events for predicted, unopened, unconfirmed, or released channel identifiers, causing application panics or corrupting command completion and exit-code tracking. This issue is fixed in version 0.63.1.
📍 영향받는 시스템
Russh library versions prior to 0.63.1
⚔️ 공격 벡터
악의적인 SSH 서버가 예측 가능한 채널 ID를 사용하여 조작된 채널 생명주기 이벤트를 클라이언트에 전송
🛡️ 대응 방법
Russh 라이브러리를 0.63.1 버전 이상으로 업데이트
🔧 검증 코드
출력된 버전 번호가 0.63.1보다 낮으면 취약한 상태이며, 0.63.1 이상이면 안전합니다.
cargo pkgid russh 2>/dev/null | grep -oE 'russh@([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:H/A:N
💻 영향받는 소프트웨어
IBM WebSphere Application Server