🇰🇷 한글 설명
matrix-js-sdk의 특정 버전에서 MatrixClient.sendSharedHistoryKeys 메서드가 악의적인 홈서버에 의해 가로채질 수 있는 취약점이 발견되었습니다. 이 취약점은 사용자의 암호화 신원 검증 없이 모든 기기에 공유 키를 전송하여, 공격자가 자신의 기기를 주입해 과거 메시지 키를 탈취할 수 있게 합니다. 레거시 암호화 스택을 사용하는 클라이언트만 영향을 받으며, Rust 암호화 스택을 사용하는 클라이언트는 안전합니다.
💡 쉬운 설명
채팅방에 새로 들어온 사람에게 과거 대화 내용을 볼 수 있는 열쇠를 나눠주는 과정에서 보안 확인이 누락되었습니다. 이로 인해 나쁜 의도를 가진 서버가 가짜 기기를 등록해 과거의 중요한 대화 내용을 몰래 훔쳐볼 수 있습니다.
🇺🇸 원문 (English)
matrix-js-sdk is the Matrix Client-Server SDK for JavaScript and TypeScript. In matrix-js-sdk versions versions 9.11.0 through 34.7.0, the method `MatrixClient.sendSharedHistoryKeys` is vulnerable to interception by malicious homeservers. The method was introduced by MSC3061) and is commonly used to share historical message keys with newly invited users, granting them access to past messages in the room. However, it unconditionally sends these "shared" keys to all of the invited user's devices, regardless of whether the user's cryptographic identity is verified or whether the user's devices are signed by that identity. This allows the attacker to potentially inject its own devices to receive sensitive historical keys without proper security checks. Note that this only affects clients running the SDK with the legacy crypto stack. Clients using the new Rust cryptography stack (i.e. those that call `MatrixClient.initRustCrypto()` instead of `MatrixClient.initCrypto()`) are unaffected by this vulnerability, because `MatrixClient.sendSharedHistoryKeys()` raises an exception in such environments. The vulnerability was fixed in matrix-js-sdk 34.8.0 by removing the vulnerable functionality. As a workaround, remove use of affected functionality from clients.
📍 영향받는 시스템
matrix-js-sdk versions 9.11.0 through 34.7.0 (Legacy crypto stack users only)
⚔️ 공격 벡터
악의적인 홈서버가 사용자의 암호화 신원 검증을 우회하여 자신의 기기를 등록하고 공유 키를 가로챔
🛡️ 대응 방법
matrix-js-sdk를 34.8.0 버전 이상으로 업데이트하거나, 취약한 기능을 사용하지 않도록 코드를 수정하십시오.
🔧 검증 코드
출력된 버전이 9.11.0에서 34.7.0 사이인지 확인하십시오.
💻 영향받는 소프트웨어
IBM Verify Identity Access