summaryrefslogtreecommitdiffstats
path: root/meta-networking/recipes-daemons/iscsi-initiator-utils/files/0007-Check-iscsiuio-ping-data-length-for-validity.patch
diff options
context:
space:
mode:
authorZhixiong Chi <zhixiong.chi@windriver.com>2018-01-04 02:52:14 -0800
committerJoe MacDonald <joe_macdonald@mentor.com>2018-02-04 19:18:40 -0500
commitfdd3c62df9f4cb4e263aca4ab426ae9f88b29912 (patch)
treef372b2e621c980d7c44b41bef2c0a74526d92ba3 /meta-networking/recipes-daemons/iscsi-initiator-utils/files/0007-Check-iscsiuio-ping-data-length-for-validity.patch
parent99aa19ff53922b61dee0c8b63ee7f664f90e9a91 (diff)
downloadmeta-openembedded-fdd3c62df9f4cb4e263aca4ab426ae9f88b29912.tar.gz
iscsi-initiator-utils: CVE-2017-17840
Backport CVE patches from the github upstream: https://github.com/open-iscsi/open-iscsi commit as follows: e313bd648a4c8a9526421e270eb597a5de1e0c7f b9c33683bdc0aed28ffe31c3f3d50bf5cdf519ea be58eed849f5457bb49b79e94aa6a26971ba6deb 5504053cc08df38d8d85032fa1691e363dfcfb92 85f647c4300a888bb6cbc27f33138549cab617e3 a7a96131bd2ea342f6def0e46be514baf8037ae8 59ede2cf4eee8729a4221000a5d1ecdd312a31ac https://nvd.nist.gov/vuln/detail/CVE-2017-17840 A local attacker can cause the iscsiuio server to abort or potentially execute code by sending messages with incorrect lengths, which (due to lack of checking) can lead to buffer overflows, and result in aborts (with overflow checking enabled) or code execution. The process_iscsid_broadcast function in iscsiuio/src/unix/iscsid_ipc.c does not validate the payload length before a write operation Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com> Signed-off-by: Armin Kuster <akuster808@gmail.com> Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
Diffstat (limited to 'meta-networking/recipes-daemons/iscsi-initiator-utils/files/0007-Check-iscsiuio-ping-data-length-for-validity.patch')
-rw-r--r--meta-networking/recipes-daemons/iscsi-initiator-utils/files/0007-Check-iscsiuio-ping-data-length-for-validity.patch64
1 files changed, 64 insertions, 0 deletions
diff --git a/meta-networking/recipes-daemons/iscsi-initiator-utils/files/0007-Check-iscsiuio-ping-data-length-for-validity.patch b/meta-networking/recipes-daemons/iscsi-initiator-utils/files/0007-Check-iscsiuio-ping-data-length-for-validity.patch
new file mode 100644
index 000000000..c63c0a8d5
--- /dev/null
+++ b/meta-networking/recipes-daemons/iscsi-initiator-utils/files/0007-Check-iscsiuio-ping-data-length-for-validity.patch
@@ -0,0 +1,64 @@
1From 5df60ad8b22194391af34c1a7e54776b0372ffed Mon Sep 17 00:00:00 2001
2From: Lee Duncan <lduncan@suse.com>
3Date: Fri, 15 Dec 2017 11:21:15 -0800
4Subject: [PATCH 7/7] Check iscsiuio ping data length for validity
5
6We do not trust that the received ping packet data length
7is correct, so sanity check it. Found by Qualsys.
8
9CVE: CVE-2017-17840
10
11Upstream-Status: Backport
12
13Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
14---
15 iscsiuio/src/unix/iscsid_ipc.c | 5 +++++
16 iscsiuio/src/unix/packet.c | 2 +-
17 iscsiuio/src/unix/packet.h | 2 ++
18 3 files changed, 8 insertions(+), 1 deletion(-)
19
20diff --git a/iscsiuio/src/unix/iscsid_ipc.c b/iscsiuio/src/unix/iscsid_ipc.c
21index 85742da..a2caacc 100644
22--- a/iscsiuio/src/unix/iscsid_ipc.c
23+++ b/iscsiuio/src/unix/iscsid_ipc.c
24@@ -333,6 +333,11 @@ static void *perform_ping(void *arg)
25
26 data = (iscsid_uip_broadcast_t *)png_c->data;
27 datalen = data->u.ping_rec.datalen;
28+ if ((datalen > STD_MTU_SIZE) || (datalen < 0)) {
29+ LOG_ERR(PFX "Ping datalen invalid: %d", datalen);
30+ rc = -EINVAL;
31+ goto ping_done;
32+ }
33
34 memset(dst_addr, 0, sizeof(uip_ip6addr_t));
35 if (nic_iface->protocol == AF_INET) {
36diff --git a/iscsiuio/src/unix/packet.c b/iscsiuio/src/unix/packet.c
37index ecea09b..3ce2c6b 100644
38--- a/iscsiuio/src/unix/packet.c
39+++ b/iscsiuio/src/unix/packet.c
40@@ -112,7 +112,7 @@ int alloc_free_queue(nic_t *nic, size_t num_of_packets)
41 for (i = 0; i < num_of_packets; i++) {
42 packet_t *pkt;
43
44- pkt = alloc_packet(1500, 1500);
45+ pkt = alloc_packet(STD_MTU_SIZE, STD_MTU_SIZE);
46 if (pkt == NULL) {
47 goto done;
48 }
49diff --git a/iscsiuio/src/unix/packet.h b/iscsiuio/src/unix/packet.h
50index b63d688..19d1db9 100644
51--- a/iscsiuio/src/unix/packet.h
52+++ b/iscsiuio/src/unix/packet.h
53@@ -43,6 +43,8 @@
54
55 #include "nic.h"
56
57+#define STD_MTU_SIZE 1500
58+
59 struct nic;
60 struct nic_interface;
61
62--
631.9.1
64