It was reported [1] that certain unexpected protocol sequences cause the broker process to crash due to insufficient checking. Three distinct cases were identified as follows: The AMQP 0-10 protocol defines a sequence set containing id ranges. The qpidd broker can be crashed by sending it a sequence-set containing an invalid range, where the start of the range is after the end. This condition causes an assertion, which causes the broker process to exit. The AMQP 0-10 protocol defines header- and body- segments that may follow certain commands. The only command for which such segments are expected by qpidd is the message-transfer command. If another command is sent that includes header and/or body segments, this will cause a segmentation fault in the broker process, causing it then to exit. The AMQP 0-10 protocol defines a session-gap control that can be sent on any established session. The qpidd broker does not support this control and responds with an appropriate error if requested on an established session. However, if the control is sent before the session is opened, the brokers handling causes an assertion which results in the broker process exiting. A patch is available (https://issues.apache.org/jira/browse/QPID-6310) that handles all these errors by sending an exception control to the remote peer and leave the broker available to all other users. [1]: http://mail-archives.apache.org/mod_mbox/qpid-users/201501.mbox/%3c54B4F4AC.8030109@apache.org%3e Acknowledgements: Red Hat would like to thank the Apache Software Foundation for reporting this issue. Upstream acknowledges G. Geshev from MWR Labs as the original reporter.
It has now been discovered that in fact failing authentication does not necessarily prevent exploitation of those reported vulnerabilities. Further, it was stated that one of the specific vulnerabilities was that the qpidd broker can be crashed by sending it a sequence-set containing an invalid range, where the start of the range is after the end. This was an incorrect analysis of the vulnerability, which is in fact caused by a sequence-set containing a single range expressing the maximum possible gap. Solution: A further patch is available that handles a range expressing the maximum possible gap without assertion (https://issues.apache.org/jira/browse/QPID-6310). The fix will be included in subsequent releases, but can be applied to 0.30 if desired.
Upstream advisory is: http://seclists.org/bugtraq/2015/Jan/61 It identifies 3 separate problems, as quote in comment 0. Upstream bug report identifies the following commits to address these issues: The AMQP 0-10 protocol defines a sequence set containing id ranges. The qpidd broker can be crashed by sending it a sequence-set containing an invalid range, where the start of the range is after the end. This condition causes an assertion, which causes the broker process to exit. -> https://svn.apache.org/viewvc?view=revision&revision=1651321 The AMQP 0-10 protocol defines header- and body- segments that may follow certain commands. The only command for which such segments are expected by qpidd is the message-transfer command. If another command is sent that includes header and/or body segments, this will cause a segmentation fault in the broker process, causing it then to exit. -> https://svn.apache.org/viewvc?view=revision&revision=1651320 The AMQP 0-10 protocol defines a session-gap control that can be sent on any established session. The qpidd broker does not support this control and responds with an appropriate error if requested on an established session. However, if the control is sent before the session is opened, the brokers handling causes an assertion which results in the broker process exiting. -> https://svn.apache.org/viewvc?view=revision&revision=1651319 The information in comment 2 was quoted from a follow-up upstream advisory: http://seclists.org/bugtraq/2015/Jan/121 The follow-up advisory provides the following corrections: - The original advisory for CVE-2015-0203 indicated that these issues were only exploitable by an authenticated user, which was later determined to be incorrect. This may be because of CVE-2015-0223 (bug 1186308), but upstream advisory does not indicate clearly. - It identifies an additional way to trigger qpidd crash related to handling of sequence-set ranges. That issue was assigned the CVE id CVE-2015-0224 and is tracked via bug 1186302. Upstream commit fixing that issue is: -> https://svn.apache.org/viewvc?view=revision&revision=1654365
This issue has been addressed in the following products: MRG for RHEL-5 v. 2 Via RHSA-2015:0662 https://rhn.redhat.com/errata/RHSA-2015-0662.html
This issue has been addressed in the following products: MRG v.2 for RHEL-7 Via RHSA-2015:0660 https://rhn.redhat.com/errata/RHSA-2015-0660.html
This issue has been addressed in the following products: MRG for RHEL-6 v.2 Via RHSA-2015:0661 https://rhn.redhat.com/errata/RHSA-2015-0661.html
This issue has been addressed in the following products: MRG for RHEL-6 v.3 Via RHSA-2015:0707 https://rhn.redhat.com/errata/RHSA-2015-0707.html
This issue has been addressed in the following products: MRG Messaging v.3 for RHEL-7 Via RHSA-2015:0708 https://access.redhat.com/errata/RHSA-2015:0708
Is there a statement of applicability to the qpid-cpp packages in the base RHEL channels outside of MRG?
qpid-cpp packages in Red Hat Enterprise Linux 6 are deprecated. Deprecation noticed can be found in Red Hat Enterprise Linux 6 Technical Notes document starting with 6.4, which contains: The following packages have been deprecated and are subjected to removal in a future release of Red Hat Enterprise Linux 6. These packages will not be updated in the Red Hat Enterprise Linux 6 repositories and customers who do not use the MRG-Messaging product are advised to uninstall them from their system. ... qpid-cpp https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/6.4_Technical_Notes/deprecated_functionality.html
qpid-cpp-0.30-12.el7, qpid-qmf-0.28-27.el7 has been pushed to the Fedora EPEL 7 stable repository. If problems still persist, please make note of it in this bug report.
qpid-cpp-0.32-4.fc21 has been pushed to the Fedora 21 stable repository. If problems still persist, please make note of it in this bug report.
Created qpid-cpp tracking bugs for this issue: Affects: epel-7 [bug 1471925] Affects: fedora-all [bug 1471927]