Menu Search

CVE-2018-1298: Apache Qpid Broker-J Denial of Service Vulnerability with PLAIN and XOAUTH2 SASL mechanisms

Severity

Important

Affected components

Qpid Broker-J

Affected versions

7.0.0

Fixed versions

7.0.1

Description

A Denial of Service vulnerability was found in Apache Qpid Broker-J 7.0.0 in functionality for authentication of connections for AMQP protocols 0-8, 0-9, 0-91 and 0-10 when PLAIN or XOAUTH2 SASL mechanism is used. The vulnerability allows unauthenticated attacker to crash the broker instance. AMQP 1.0 and HTTP connections are not affected.

An authentication of incoming AMQP connections in Apache Qpid Broker-J is performed by special entities called "Authentication Providers". Each Authentication Provider can support several SASL mechanisms which are offered to the connecting clients as part of SASL negotiation process. The client chooses the most appropriate SASL mechanism for authentication.

Authentication Providers of following types supports PLAIN SASL mechanism:

  • Plain
  • PlainPasswordFile
  • SimpleLDAP
  • Base64MD5PasswordFile
  • MD5
  • SCRAM-SHA-256
  • SCRAM-SHA-1

XOAUTH2 SASL mechanism is supported by Authentication Providers of type OAuth2.

If an AMQP port is configured with any of these Authentication Providers, the Broker may be vulnerable.

Resolution

Users of Broker-J version 7.0.0 utilizing affected Authentication Providers on AMQP ports with support for AMQP 0-8, 0-9, 0-91 or 0-10 must upgrade to version 7.0.1 or later.

Mitigation

If upgrade of the broker is not possible, the SimpleLDAP and OAuth2 must be replaced with an alternative provider. For the remaining affected types of Authentication Providers the PLAIN SASL mechanism must be disabled by including "PLAIN" in the "disabledMechanisms" attribute of the provider. The changes can be made either directly in the broker configuration file or via management interfaces (for example, REST API]). A broker restart is required for the changes to take effect. Here is a template for curl utility call to disable PLAIN mechanism using REST API:

sh curl --user <user-name> -X POST -d '{"disabledMechanisms":["PLAIN"]}' https://<broker host>:<broker https port>/api/latest/authenticationprovider/<provider name>

Alternatively, when only AMQP 1.0 protocol is used, the support for older AMQP protocols can be removed on the AMQP port. It can be done either from Broker-J Web Management Console or via management interfaces. A broker restart is required for the changes to take effect. Here is a template for curl REST API call to restrict port supported AMQP protocols to AMQP 1.0:

sh curl --user <user-name> -X POST -d '{"protocols":["AMQP_1_0"]}' https://<broker host>:<broker https port>/api/latest/port/<port name>

References