[PKG-Openstack-devel] Bug#849849: CVE-2016-9877 / #849849 fix for Jessie

Thomas Goirand zigo at debian.org
Wed Jan 11 01:41:08 UTC 2017


Hi,

I've prepared the package here:
http://sid.gplhost.com/jessie-proposed-updates/rabbitmq-server/

Debdiff is attached (and also available from there). Please allow me to
upload.

Cheers,

Thomas Goirand (zigo)
-------------- next part --------------
diff -u rabbitmq-server-3.3.5/debian/changelog rabbitmq-server-3.3.5/debian/changelog
--- rabbitmq-server-3.3.5/debian/changelog
+++ rabbitmq-server-3.3.5/debian/changelog
@@ -1,3 +1,9 @@
+rabbitmq-server (3.3.5-1.1+deb8u1) jessie-security; urgency=medium
+
+  * CVE-2016-9877: apply backported upstream patch (Closes: #849849).
+
+ -- Thomas Goirand <zigo at debian.org>  Wed, 11 Jan 2017 02:17:32 +0100
+
 rabbitmq-server (3.3.5-1.1) testing-proposed-updates; urgency=medium
 
   * Non-maintainer upload.
only in patch2:
unchanged:
--- rabbitmq-server-3.3.5.orig/debian/gbp.conf
+++ rabbitmq-server-3.3.5/debian/gbp.conf
@@ -0,0 +1,3 @@
+[DEFAULT]
+debian-branch = jessie
+pristine-tar = True
only in patch2:
unchanged:
--- rabbitmq-server-3.3.5.orig/debian/patches/CVE-2016-9877_Auth_issue_fix.patch
+++ rabbitmq-server-3.3.5/debian/patches/CVE-2016-9877_Auth_issue_fix.patch
@@ -0,0 +1,101 @@
+From 157948d86d391a325ac9702f78976c175ced58be Mon Sep 17 00:00:00 2001
+From: Daniil Fedotov <dfedotov at pivotal.io>
+Date: Mon, 5 Sep 2016 12:33:49 +0100
+Subject: [PATCH] Auth issue fix 039a3c22e57bf77b325d19494a9b20cd745f1ea7
+ backport
+ .
+ Backported to Debian Jessie's 3.3.5-1.1 by Balint Reczey as part of the
+ LTS work.
+
+---
+ src/rabbit_mqtt_processor.erl                 | 63 ++++++++++++++-------------
+ test/Makefile                                 |  2 +-
+ test/src/com/rabbitmq/mqtt/test/MqttTest.java | 12 +++++
+ 3 files changed, 45 insertions(+), 32 deletions(-)
+
+--- a/plugins-src/rabbitmq-mqtt/src/rabbit_mqtt_processor.erl
++++ b/plugins-src/rabbitmq-mqtt/src/rabbit_mqtt_processor.erl
+@@ -75,7 +75,13 @@
+             _ ->
+                 case creds(Username, Password) of
+                     nocreds ->
+-                        rabbit_log:error("MQTT login failed - no credentials~n"),
++                        rabbit_log:error("MQTT login failed: no credentials provided~n"),
++                        {?CONNACK_CREDENTIALS, PState};
++                    {invalid_creds, {undefined, Pass}} when is_list(Pass) ->
++                        rabbit_log:error("MQTT login failed: no user username is provided"),
++                        {?CONNACK_CREDENTIALS, PState};
++                    {invalid_creds, {User, undefined}} when is_list(User) ->
++                        rabbit_log:error("MQTT login failed for ~p: no password provided", [User]),
+                         {?CONNACK_CREDENTIALS, PState};
+                     {UserBin, PassBin} ->
+                         case process_login(UserBin, PassBin, ProtoVersion, PState) of
+@@ -370,20 +376,25 @@
+     DefaultUser = rabbit_mqtt_util:env(default_user),
+     DefaultPass = rabbit_mqtt_util:env(default_pass),
+     Anon        = rabbit_mqtt_util:env(allow_anonymous),
+-    U = case {User =/= undefined, is_binary(DefaultUser), Anon =:= true} of
+-             {true,  _,    _   } -> list_to_binary(User);
+-             {false, true, true} -> DefaultUser;
+-             _                   -> nocreds
+-        end,
+-    case U of
+-        nocreds ->
+-            nocreds;
+-        _ ->
+-            case {Pass =/= undefined, is_binary(DefaultPass), Anon =:= true} of
+-                 {true,  _,    _   } -> {U, list_to_binary(Pass)};
+-                 {false, true, true} -> {U, DefaultPass};
+-                 _                   -> {U, none}
+-            end
++    HaveDefaultCreds = Anon =:= true andalso
++                       is_binary(DefaultUser) andalso
++                       is_binary(DefaultPass),
++
++    CredentialsProvided = User =/= undefined orelse
++                          Pass =/= undefined,
++
++    CorrectCredentials = is_list(User) andalso
++                         is_list(Pass),
++
++    case {CredentialsProvided, CorrectCredentials, HaveDefaultCreds} of
++        %% Username and password take priority
++        {true, true, _}          -> {list_to_binary(User),
++                                        list_to_binary(Pass)};
++        %% Either username or password is provided
++        {true, false, _}         -> {invalid_creds, {User, Pass}};
++        %% Anonymous connection uses default credentials
++        {false, false, true} -> {DefaultUser, DefaultPass};
++        _                           -> nocreds
+     end.
+ 
+ supported_subs_qos(?QOS_0) -> ?QOS_0;
+--- a/plugins-src/rabbitmq-mqtt/test/Makefile
++++ b/plugins-src/rabbitmq-mqtt/test/Makefile
+@@ -1,4 +1,4 @@
+-UPSTREAM_GIT=https://git.eclipse.org/gitroot/paho/org.eclipse.paho.mqtt.java.git
++UPSTREAM_GIT=https://github.com/eclipse/paho.mqtt.java.git
+ REVISION=00b5b2f99ae8410b7d96d106e080a092c5f92546
+ 
+ JC=javac
+--- a/plugins-src/rabbitmq-mqtt/test/src/com/rabbitmq/mqtt/test/MqttTest.java
++++ b/plugins-src/rabbitmq-mqtt/test/src/com/rabbitmq/mqtt/test/MqttTest.java
+@@ -163,6 +163,18 @@
+         }
+     }
+ 
++    public void testEmptyPassword() throws MqttException {
++        MqttClient c = new MqttClient(brokerUrl, clientId, null);
++        MqttConnectOptions opts = new MyConnOpts();
++        opts.setUserName("guest");
++        opts.setPassword(null);
++        try {
++            c.connect(opts);
++            fail("Authentication failure expected");
++        } catch (MqttException ex) {
++            Assert.assertEquals(MqttException.REASON_CODE_FAILED_AUTHENTICATION, ex.getReasonCode());
++        }
++    }
+ 
+     public void testSubscribeQos0() throws MqttException, InterruptedException {
+         client.connect(conOpt);
only in patch2:
unchanged:
--- rabbitmq-server-3.3.5.orig/debian/patches/series
+++ rabbitmq-server-3.3.5/debian/patches/series
@@ -0,0 +1 @@
+CVE-2016-9877_Auth_issue_fix.patch


More information about the Openstack-devel mailing list