🇰🇷 한글 설명
RMCP SDK 2.0.0 미만 버전의 OAuth 구현에서 RFC 9728의 리소스 필드를 누락하여 발생하는 취약점입니다. 공격자가 악의적인 MCP 서버를 통해 다른 정당한 리소스의 메타데이터를 게시하면, 사용자가 인증을 완료한 후 획득한 액세스 토큰이 공격자에게 탈취되어 피해자를 사칭할 수 있습니다.
💡 쉬운 설명
가짜 서버가 진짜 서버인 척 속여서 사용자의 인증 열쇠(토큰)를 가로채는 보안 결함입니다. 공격자는 이 열쇠를 이용해 사용자인 척하며 실제 서비스에 접근할 수 있습니다.
🇺🇸 원문 (English)
RMCP is an official Rust SDK for the Model Context Protocol. Prior to 2.0.0, the rmcp crate's OAuth implementation in crates/rmcp/src/transport/auth.rs omits the RFC 9728 resource field from ResourceServerMetadata and allows discover_oauth_server_via_resource_metadata to use protected-resource metadata without confirming that the returned resource identifier exactly matches the configured MCP server. A malicious MCP server can publish metadata for a different legitimate MCP resource and its authorization server, causing a victim who connects and completes the authorization flow to obtain a legitimate access token that the client subsequently sends to the malicious server. The attacker can capture the token and impersonate the victim against the legitimate MCP resource within the token's granted scopes. This issue is fixed in version 2.0.0.
📍 영향받는 시스템
RMCP Rust SDK (rmcp crate) version < 2.0.0
⚔️ 공격 벡터
악의적인 MCP 서버가 조작된 OAuth 메타데이터를 제공하여 사용자의 액세스 토큰을 탈취하는 방식
🛡️ 대응 방법
RMCP SDK를 버전 2.0.0 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전 번호가 2.0.0 미만이면 취약한 상태이며, 2.0.0 이상이면 안전합니다.
cargo pkgid rmcp 2>/dev/null | grep -oE 'rmcp@.*' || echo 'Not installed'