via man-in-the-middle attacks. We encourage clients to manually validate TLS certificates against the expected hostname before accepting connections. Additionally, we recommend clients limit access to the network to only trusted hosts. If an attacker can directly access the network between the client and the server, then the attacker can take control of the client. This vulnerability is not specific to the Pulsar protocol. It exists because of a fundamental weakness in TLS hostname verification, where the protocol does not enforce hostname verification. The Pulsar Java Client and Pulsar Proxy are vulnerable to this vulnerability because they send authentication data before verifying the server’s TLS certificate matches the hostname. It is possible to fix this vulnerability by adding a certificate validation step between the client and the server. This can be done by adding a certificate-signing step to the Pulsar Java Client or Pulsar Proxy. An attacker could perform this attack only by taking control of a machine between the client and the server. The attacker must then actively manipulate traffic to make this attack possible by providing the client with a cryptographically valid certificate for an unrelated host.

Click on Java Client

Java Client is vulnerable to this attack because it sends authentication data before verifying the server's TLS certificate matches the hostname. It is possible to fix this vulnerability by adding a certificate validation step between the client and the server. This can be done by adding a certificate-signing step to the Java Client or Pulsar Proxy.

Prevention and Mitigation Strategies

We recommend clients take the following steps to mitigate this vulnerability:
- Limit access to the network to only trusted hosts.
- Have clients manually validate TLS certificates against the expected hostname before accepting connections.
- Ensure that clients limit access to the network only to trusted hosts and not directly from untrusted or public networks.
The Pulsar Java Client and Pulsar Proxy are vulnerable because they send authentication data before verifying the server’s TLS certificate matches the hostname. The Pulsar Java Client is vulnerable because it sends its client certificate as part of its client authentication step, while the Pulsar Proxy is vulnerable because it sends its server certificate as part of its authentication step. These vulnerabilities are not specific to the Pulsar protocol; they exist because of a fundamental weakness in TLS hostname verification.

Timeline

Published on: 09/23/2022 10:15:00 UTC
Last modified on: 09/27/2022 15:41:00 UTC

References