Man-in-the-Middle (MitM) Affecting org.apache.pulsar:pulsar-websocket package, versions [,2.7.5) [2.8.0,2.8.4) [2.9.0,2.9.3) [2.10.0,2.10.1)


0.0
medium

Snyk CVSS

    Attack Complexity High
    Confidentiality High

    Threat Intelligence

    EPSS 0.09% (39th percentile)
Expand this section
NVD
5.9 medium

Do your applications use this vulnerable package?

In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.

Test your applications
  • Snyk ID SNYK-JAVA-ORGAPACHEPULSAR-3031792
  • published 23 Sep 2022
  • disclosed 23 Sep 2022
  • credit Michael Marshall

How to fix?

Upgrade org.apache.pulsar:pulsar-websocket to version 2.7.5, 2.8.4, 2.9.3, 2.10.1 or higher.

Overview

Affected versions of this package are vulnerable to Man-in-the-Middle (MitM) due to the TLS hostname verification which cannot be enabled in the Pulsar Broker's Java Client, the Pulsar Broker's Java Admin Client, the Pulsar WebSocket Proxy's Java Client, and the Pulsar Proxy's Admin Client, leaving intra-cluster connections and geo-replication connections vulnerable to man in the middle attacks, which could leak credentials, configuration data, message data, and any other data sent by these clients. The vulnerability is for both the pulsar+ssl protocol and HTTPS.

Mitigation:

Any users running affected versions of the Pulsar Broker, Pulsar Proxy, or Pulsar WebSocket Proxy should rotate static authentication data vulnerable to man in the middle attacks used by these applications, including tokens and passwords. To enable hostname verification, update the following configuration files:

In the Broker configuration (broker.conf, by default) and in the WebSocket Proxy configuration (websocket.conf, by default), set: brokerClient_tlsHostnameVerificationEnable=true

In Pulsar Helm chart deployments, the Broker and WebSocket Proxy setting name should be prefixed with PULSAR_PREFIX_.

In the Proxy configuration (proxy.conf, by default), set: tlsHostnameVerificationEnabled=true