🇰🇷 한글 설명
Pulsar Java Client 및 Pulsar Proxy에서 TLS 호스트 이름 검증이 지연되어 중간자 공격(MitM)에 취약합니다. 인증 데이터가 서버의 TLS 인증서 호스트 일치 여부를 확인하기 전에 전송되므로, 공격자가 인증 정보를 탈취할 수 있습니다.
💡 쉬운 설명
인터넷 연결 시 상대방이 진짜인지 확인하기 전에 비밀번호를 먼저 보내버리는 보안 결함입니다. 중간에서 가로채는 공격자가 이 비밀번호를 훔쳐서 사용자 행세를 할 수 있습니다.
🇺🇸 원문 (English)
Delayed TLS hostname verification in the Pulsar Java Client and the Pulsar Proxy make each client vulnerable to a man in the middle attack. Connections from the Pulsar Java Client to the Pulsar Broker/Proxy and connections from the Pulsar Proxy to the Pulsar Broker are vulnerable. Authentication data is sent before verifying the server’s TLS certificate matches the hostname, which means authentication data could be exposed to an attacker. An attacker can only take advantage of this vulnerability by taking control of a machine 'between' the client and the server. The attacker must then actively manipulate traffic to perform the attack by providing the client with a cryptographically valid certificate for an unrelated host. Because the client sends authentication data before performing hostname verification, an attacker could gain access to the client’s authentication data. The client eventually closes the connection when it verifies the hostname and identifies the targeted hostname does not match a hostname on the certificate. Because the client eventually closes the connection, the value of the intercepted authentication data depends on the authentication method used by the client. Token based authentication and username/password authentication methods are vulnerable because the authentication data can be used to impersonate the client in a separate session. This issue affects Apache Pulsar Java Client versions 2.7.0 to 2.7.4; 2.8.0 to 2.8.3; 2.9.0 to 2.9.2; 2.10.0; 2.6.4 and earlier.
📍 영향받는 시스템
Apache Pulsar Java Client 2.7.0-2.7.4, 2.8.0-2.8.3, 2.9.0-2.9.2, 2.10.0, 2.6.4 및 이전 버전
⚔️ 공격 벡터
클라이언트와 서버 사이의 네트워크를 장악한 공격자가 유효하지만 다른 호스트용인 인증서를 제공하여 인증 데이터를 가로챔
🛡️ 대응 방법
취약점이 해결된 최신 버전의 Apache Pulsar Java Client로 업데이트
🔧 검증 코드
출력된 pulsar-client의 버전을 확인하여 취약한 버전 범위에 포함되는지 체크
mvn dependency:list | grep pulsar-client