package/mosquitto: security bump to version 1.5.6
authorPeter Korsgaard <peter@korsgaard.com>
Sat, 9 Feb 2019 18:20:58 +0000 (19:20 +0100)
committerPeter Korsgaard <peter@korsgaard.com>
Sun, 10 Feb 2019 09:49:26 +0000 (10:49 +0100)
Fixes the following security issues:

CVE-2018-12551: If Mosquitto is configured to use a password file for
authentication, any malformed data in the password file will be treated as
valid. This typically means that the malformed data becomes a username and
no password.  If this occurs, clients can circumvent authentication and get
access to the broker by using the malformed username.  In particular, a
blank line will be treated as a valid empty username.  Other security
measures are unaffected.  Users who have only used the mosquitto_passwd
utility to create and modify their password files are unaffected by this
vulnerability.  Affects version 1.0 to 1.5.5 inclusive.

CVE-2018-12550: If an ACL file is empty, or has only blank lines or
comments, then mosquitto treats the ACL file as not being defined, which
means that no topic access is denied.  Although denying access to all topics
is not a useful configuration, this behaviour is unexpected and could lead
to access being incorrectly granted in some circumstances.  Affects versions
1.0 to 1.5.5 inclusive.

CVE-2018-12546: If a client publishes a retained message to a topic that
they have access to, and then their access to that topic is revoked, the
retained message will still be delivered to future subscribers.  This
behaviour may be undesirable in some applications, so a configuration option
check_retain_source has been introduced to enforce checking of the retained
message source on publish.

Add two upstream post-1.5.6 patches to fix a build error in the bridge code
when ADNS is enabled and when building with older toolchains not defaulting
to C99 mode.

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
package/mosquitto/0001-Fix-build-failure-when-using-WITH_ADNS-yes.patch [new file with mode: 0644]
package/mosquitto/0002-Don-t-require-C99-compiler.patch [new file with mode: 0644]
package/mosquitto/mosquitto.hash
package/mosquitto/mosquitto.mk

diff --git a/package/mosquitto/0001-Fix-build-failure-when-using-WITH_ADNS-yes.patch b/package/mosquitto/0001-Fix-build-failure-when-using-WITH_ADNS-yes.patch
new file mode 100644 (file)
index 0000000..3e79a17
--- /dev/null
@@ -0,0 +1,27 @@
+From 9378016b19521aa6c281f475267c5cb67ea967d1 Mon Sep 17 00:00:00 2001
+From: "Roger A. Light" <roger@atchoo.org>
+Date: Fri, 8 Feb 2019 21:34:08 +0000
+Subject: [PATCH] Fix build failure when using WITH_ADNS=yes
+
+[Peter: drop ChangeLog.txt modification]
+Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
+---
+ src/bridge.c  | 2 +-
+ 1 files changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/bridge.c b/src/bridge.c
+index 6e4b94f..d9611f0 100644
+--- a/src/bridge.c
++++ b/src/bridge.c
+@@ -228,7 +228,7 @@ int bridge__connect_step3(struct mosquitto_db *db, struct mosquitto *context)
+ {
+       int rc;
+-      rc = net__socket_connect_step3(context, context->bridge->addresses[context->bridge->cur_address].address, context->bridge->addresses[context->bridge->cur_address].port, NULL, false);
++      rc = net__socket_connect_step3(context, context->bridge->addresses[context->bridge->cur_address].address);
+       if(rc > 0){
+               if(rc == MOSQ_ERR_TLS){
+                       net__socket_close(db, context);
+-- 
+2.11.0
+
diff --git a/package/mosquitto/0002-Don-t-require-C99-compiler.patch b/package/mosquitto/0002-Don-t-require-C99-compiler.patch
new file mode 100644 (file)
index 0000000..7ca4090
--- /dev/null
@@ -0,0 +1,35 @@
+From 04e89450c0aeb0e6fdff58aca3cffce10b29fb98 Mon Sep 17 00:00:00 2001
+From: "Roger A. Light" <roger@atchoo.org>
+Date: Sat, 9 Feb 2019 13:52:09 +0000
+Subject: [PATCH] Don't require C99 compiler.
+
+[Peter: drop ChangeLog.txt modification]
+Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
+---
+ src/persist.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/persist.c b/src/persist.c
+index 2f40086..13b34d2 100644
+--- a/src/persist.c
++++ b/src/persist.c
+@@ -720,6 +720,7 @@ static int persist__msg_store_chunk_restore(struct mosquitto_db *db, FILE *db_fp
+       struct mosquitto_msg_store *stored = NULL;
+       struct mosquitto_msg_store_load *load;
+       char *err;
++      int i;
+       payload.ptr = NULL;
+@@ -749,7 +750,7 @@ static int persist__msg_store_chunk_restore(struct mosquitto_db *db, FILE *db_fp
+               read_e(db_fptr, &i16temp, sizeof(uint16_t));
+               source_port = ntohs(i16temp);
+               if(source_port){
+-                      for(int i=0; i<db->config->listener_count; i++){
++                      for(i=0; i<db->config->listener_count; i++){
+                               if(db->config->listeners[i].port == source_port){
+                                       source.listener = &db->config->listeners[i];
+                                       break;
+-- 
+2.11.0
+
index 831171c08298195c20077bb51220276ba31837f9..da28c4f67fe14e688b20cd8173f8672bf8ce8bc2 100644 (file)
@@ -1,5 +1,5 @@
 # Locally calculated after checking gpg signature
-sha256 fcdb47e340864c545146681af7253399cc292e41775afd76400fda5b0d23d668  mosquitto-1.5.5.tar.gz
+sha256 d5bdc13cc668350026376d57fc14de10aaee029f6840707677637d15e0751a40  mosquitto-1.5.6.tar.gz
 
 # License files
 sha256 cc77e25bafd40637b7084f04086d606f0a200051b61806f97c93405926670bc1  LICENSE.txt
index 1536a5ef266e31c74d6529df1863c22c56de58c8..962fe66049ea74808a115fa028f3fffc306d2a52 100644 (file)
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-MOSQUITTO_VERSION = 1.5.5
+MOSQUITTO_VERSION = 1.5.6
 MOSQUITTO_SITE = https://mosquitto.org/files/source
 MOSQUITTO_LICENSE = EPL-1.0 or EDLv1.0
 MOSQUITTO_LICENSE_FILES = LICENSE.txt epl-v10 edl-v10