Patch "netfilter: ipt_CLUSTERIP: fix out-of-bounds accesses in clusterip_tg_check()" has been added to the 4.14-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
netfilter: ipt_CLUSTERIP: fix out-of-bounds accesses in clusterip_tg_check()
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
netfilter-ipt_clusterip-fix-out-of-bounds-accesses-in-clusterip_tg_check.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
1a38956cce5eabd7b74f94bab70265e4df83165eMon Sep 17 00:00:00 2001
From: Dmitry Vyukov <[email protected]>
Date: Tue, 30 Jan 2018 15:21:34 +0100
Subject: netfilter: ipt_CLUSTERIP: fix out-of-bounds accesses in clusterip_tg_check()
From: Dmitry Vyukov <[email protected]>
commit 1a38956cce5eabd7b74f94bab70265e4df83165e upstream.
Commit 136e92bbec0a switched local_nodes from an array to a bitmask but did not add proper bounds checks. As the result clusterip_config_init_nodelist() can both over-read ipt_clusterip_tgt_info.local_nodes and over-write clusterip_config.local_nodes.
Add bounds checks for both.
--- net/ipv4/netfilter/ipt_CLUSTERIP.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-)
net/ipv4/netfilter/ipt_CLUSTERIP.c +13 -3
@@ -431,7 +431,7 @@ static int clusterip_tg_check(const strustruct ipt_clusterip_tgt_info *cipinfo = par->targinfo;const struct ipt_entry *e = par->entryinfo;struct clusterip_config *config; -int ret; +int ret, i;if (par->nft_compat) {pr_err ("cannot use CLUSTERIP target from nftables compat\n" );
@@ -450,8 +450,18 @@ static int clusterip_tg_check(const strupr_info ("Please specify destination IP\n" );return -EINVAL ; } - -/* FIXME: further sanity checks */ +if (cipinfo->num_local_nodes >ARRAY_SIZE (cipinfo->local_nodes)) { +pr_info ("bad num_local_nodes %u\n" , cipinfo->num_local_nodes); +return -EINVAL ; + } +for (i =0 ; i < cipinfo->num_local_nodes; i++) { +if (cipinfo->local_nodes[i] -1 >= +sizeof (config->local_nodes) *8 ) { +pr_info ("bad local_nodes[%d] %u\n" , + i, cipinfo->local_nodes[i]); +return -EINVAL ; + } + } config =clusterip_config_find_get (par->net, e->ip.dst.s_addr,1 );if (!config) {
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/kvm-x86-check-input-paging-mode-when-cs.l-is-set.patch queue-4.14/kvm-x86-fix-escape-of-guest-dr6-to-the-host.patch queue-4.14/blktrace-fix-unlocked-registration-of-tracepoints.patch queue-4.14/netfilter-x_tables-fix-int-overflow-in-xt_alloc_table_info.patch queue-4.14/netfilter-ipt_clusterip-fix-out-of-bounds-accesses-in-clusterip_tg_check.patch queue-4.14/kcov-detect-double-association-with-a-single-task.patch