bluez5_utils: add upstream security fix for CVE-2017-1000250

Message ID 20170913121955.21236-1-peter@korsgaard.com
State New
Headers show
Series
  • bluez5_utils: add upstream security fix for CVE-2017-1000250
Related show

Commit Message

Peter Korsgaard Sept. 13, 2017, 12:19 p.m.
Fixes CVE-2017-1000250 - All versions of the SDP server in BlueZ 5.46 and
earlier are vulnerable to an information disclosure vulnerability which
allows remote attackers to obtain sensitive information from the bluetoothd
process memory.  This vulnerability lies in the processing of SDP search
attribute requests.

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
---
 ...-of-bounds-heap-read-in-service_search_at.patch | 29 ++++++++++++++++++++++
 1 file changed, 29 insertions(+)
 create mode 100644 package/bluez5_utils/0002-sdp-Fix-Out-of-bounds-heap-read-in-service_search_at.patch

Comments

Bernd Kuhls Sept. 16, 2017, 8:44 a.m. | #1
Am Wed, 13 Sep 2017 14:19:55 +0200 schrieb Peter Korsgaard:

> Fixes CVE-2017-1000250 - All versions of the SDP server in BlueZ 5.46
> and earlier are vulnerable to an information disclosure vulnerability
> which allows remote attackers to obtain sensitive information from the
> bluetoothd process memory.  This vulnerability lies in the processing of
> SDP search attribute requests.

Hi,

this patch was is included in upstream release 5.47 and can be marked as 
superseded by this patch: http://patchwork.ozlabs.org/patch/814482/

Regards, Bernd
Peter Korsgaard Sept. 17, 2017, 7:46 p.m. | #2
>>>>> "Bernd" == Bernd Kuhls <bernd.kuhls@t-online.de> writes:

 > Am Wed, 13 Sep 2017 14:19:55 +0200 schrieb Peter Korsgaard:
 >> Fixes CVE-2017-1000250 - All versions of the SDP server in BlueZ 5.46
 >> and earlier are vulnerable to an information disclosure vulnerability
 >> which allows remote attackers to obtain sensitive information from the
 >> bluetoothd process memory.  This vulnerability lies in the processing of
 >> SDP search attribute requests.

 > Hi,

 > this patch was is included in upstream release 5.47 and can be marked as 
 > superseded by this patch: http://patchwork.ozlabs.org/patch/814482/

Yes, now that 5.47 is out, bumping the version makes more sense.
Peter Korsgaard Sept. 21, 2017, 2:59 p.m. | #3
>>>>> "Peter" == Peter Korsgaard <peter@korsgaard.com> writes:

 > Fixes CVE-2017-1000250 - All versions of the SDP server in BlueZ 5.46 and
 > earlier are vulnerable to an information disclosure vulnerability which
 > allows remote attackers to obtain sensitive information from the bluetoothd
 > process memory.  This vulnerability lies in the processing of SDP search
 > attribute requests.

 > Signed-off-by: Peter Korsgaard <peter@korsgaard.com>

Committed to 2017.02.x, thanks (seems safer than bumping to 5.47).

Patch

diff --git a/package/bluez5_utils/0002-sdp-Fix-Out-of-bounds-heap-read-in-service_search_at.patch b/package/bluez5_utils/0002-sdp-Fix-Out-of-bounds-heap-read-in-service_search_at.patch
new file mode 100644
index 0000000000..a73c372e68
--- /dev/null
+++ b/package/bluez5_utils/0002-sdp-Fix-Out-of-bounds-heap-read-in-service_search_at.patch
@@ -0,0 +1,29 @@ 
+From 9e009647b14e810e06626dde7f1bb9ea3c375d09 Mon Sep 17 00:00:00 2001
+From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
+Date: Wed, 13 Sep 2017 10:01:40 +0300
+Subject: [PATCH] sdp: Fix Out-of-bounds heap read in service_search_attr_req
+ function
+
+Check if there is enough data to continue otherwise return an error.
+
+Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
+---
+ src/sdpd-request.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/sdpd-request.c b/src/sdpd-request.c
+index 1eefdce1a..318d04467 100644
+--- a/src/sdpd-request.c
++++ b/src/sdpd-request.c
+@@ -917,7 +917,7 @@ static int service_search_attr_req(sdp_req_t *req, sdp_buf_t *buf)
+ 	} else {
+ 		/* continuation State exists -> get from cache */
+ 		sdp_buf_t *pCache = sdp_get_cached_rsp(cstate);
+-		if (pCache) {
++		if (pCache && cstate->cStateValue.maxBytesSent < pCache->data_size) {
+ 			uint16_t sent = MIN(max, pCache->data_size - cstate->cStateValue.maxBytesSent);
+ 			pResponse = pCache->data;
+ 			memcpy(buf->data, pResponse + cstate->cStateValue.maxBytesSent, sent);
+-- 
+2.11.0
+