All of lore.kernel.org
 help / color / mirror / Atom feed
* Patch "netfilter: bridge: ebt_among: add missing match size checks" has been added to the 4.14-stable tree
@ 2018-03-13 11:14 gregkh
  2018-03-13 11:32 ` Florian Westphal
  0 siblings, 1 reply; 3+ messages in thread
From: gregkh @ 2018-03-13 11:14 UTC (permalink / raw)
  To: fw, gregkh, pablo, syzbot+fe0b19af568972814355; +Cc: stable, stable-commits


This is a note to let you know that I've just added the patch titled

    netfilter: bridge: ebt_among: add missing match size checks

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-bridge-ebt_among-add-missing-match-size-checks.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 <stable@vger.kernel.org> know about it.


>From c4585a2823edf4d1326da44d1524ecbfda26bb37 Mon Sep 17 00:00:00 2001
From: Florian Westphal <fw@strlen.de>
Date: Mon, 19 Feb 2018 03:01:45 +0100
Subject: netfilter: bridge: ebt_among: add missing match size checks

From: Florian Westphal <fw@strlen.de>

commit c4585a2823edf4d1326da44d1524ecbfda26bb37 upstream.

ebt_among is special, it has a dynamic match size and is exempt
from the central size checks.

Therefore it must check that the size of the match structure
provided from userspace is sane by making sure em->match_size
is at least the minimum size of the expected structure.

The module has such a check, but its only done after accessing
a structure that might be out of bounds.

tested with: ebtables -A INPUT ... \
--among-dst fe:fe:fe:fe:fe:fe
--among-dst fe:fe:fe:fe:fe:fe --among-src fe:fe:fe:fe:ff:f,fe:fe:fe:fe:fe:fb,fe:fe:fe:fe:fc:fd,fe:fe:fe:fe:fe:fd,fe:fe:fe:fe:fe:fe
--among-src fe:fe:fe:fe:ff:f,fe:fe:fe:fe:fe:fa,fe:fe:fe:fe:fe:fd,fe:fe:fe:fe:fe:fe,fe:fe:fe:fe:fe:fe

Reported-by: <syzbot+fe0b19af568972814355@syzkaller.appspotmail.com>
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 net/bridge/netfilter/ebt_among.c |   21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

--- a/net/bridge/netfilter/ebt_among.c
+++ b/net/bridge/netfilter/ebt_among.c
@@ -172,18 +172,35 @@ ebt_among_mt(const struct sk_buff *skb,
 	return true;
 }
 
+static bool poolsize_invalid(const struct ebt_mac_wormhash *w)
+{
+	return w && w->poolsize >= (INT_MAX / sizeof(struct ebt_mac_wormhash_tuple));
+}
+
 static int ebt_among_mt_check(const struct xt_mtchk_param *par)
 {
 	const struct ebt_among_info *info = par->matchinfo;
 	const struct ebt_entry_match *em =
 		container_of(par->matchinfo, const struct ebt_entry_match, data);
-	int expected_length = sizeof(struct ebt_among_info);
+	unsigned int expected_length = sizeof(struct ebt_among_info);
 	const struct ebt_mac_wormhash *wh_dst, *wh_src;
 	int err;
 
+	if (expected_length > em->match_size)
+		return -EINVAL;
+
 	wh_dst = ebt_among_wh_dst(info);
-	wh_src = ebt_among_wh_src(info);
+	if (poolsize_invalid(wh_dst))
+		return -EINVAL;
+
 	expected_length += ebt_mac_wormhash_size(wh_dst);
+	if (expected_length > em->match_size)
+		return -EINVAL;
+
+	wh_src = ebt_among_wh_src(info);
+	if (poolsize_invalid(wh_src))
+		return -EINVAL;
+
 	expected_length += ebt_mac_wormhash_size(wh_src);
 
 	if (em->match_size != EBT_ALIGN(expected_length)) {


Patches currently in stable-queue which might be from fw@strlen.de are

queue-4.14/netfilter-add-back-stackpointer-size-checks.patch
queue-4.14/netfilter-ipv6-fix-use-after-free-write-in-nf_nat_ipv6_manip_pkt.patch
queue-4.14/netfilter-ebtables-config_compat-don-t-trust-userland-offsets.patch
queue-4.14/netfilter-bridge-ebt_among-add-missing-match-size-checks.patch

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Patch "netfilter: bridge: ebt_among: add missing match size checks" has been added to the 4.14-stable tree
  2018-03-13 11:14 Patch "netfilter: bridge: ebt_among: add missing match size checks" has been added to the 4.14-stable tree gregkh
@ 2018-03-13 11:32 ` Florian Westphal
  2018-03-13 11:59   ` Greg KH
  0 siblings, 1 reply; 3+ messages in thread
From: Florian Westphal @ 2018-03-13 11:32 UTC (permalink / raw)
  To: gregkh; +Cc: fw, pablo, stable

gregkh@linuxfoundation.org <gregkh@linuxfoundation.org> wrote:
> 
> This is a note to let you know that I've just added the patch titled
> 
>     netfilter: bridge: ebt_among: add missing match size checks

There is also

commit c8d70a700a5b486bfa8e5a7d33d805389f6e59f9
("netfilter: bridge: ebt_among: add more missing match size checks"), as
the checks added in this 1st patch were not suficient.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Patch "netfilter: bridge: ebt_among: add missing match size checks" has been added to the 4.14-stable tree
  2018-03-13 11:32 ` Florian Westphal
@ 2018-03-13 11:59   ` Greg KH
  0 siblings, 0 replies; 3+ messages in thread
From: Greg KH @ 2018-03-13 11:59 UTC (permalink / raw)
  To: Florian Westphal; +Cc: pablo, stable

On Tue, Mar 13, 2018 at 12:32:04PM +0100, Florian Westphal wrote:
> gregkh@linuxfoundation.org <gregkh@linuxfoundation.org> wrote:
> > 
> > This is a note to let you know that I've just added the patch titled
> > 
> >     netfilter: bridge: ebt_among: add missing match size checks
> 
> There is also
> 
> commit c8d70a700a5b486bfa8e5a7d33d805389f6e59f9
> ("netfilter: bridge: ebt_among: add more missing match size checks"), as
> the checks added in this 1st patch were not suficient.

Thanks, I'll queue that up when it hits Linus's tree.

greg k-h

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-03-13 11:59 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-13 11:14 Patch "netfilter: bridge: ebt_among: add missing match size checks" has been added to the 4.14-stable tree gregkh
2018-03-13 11:32 ` Florian Westphal
2018-03-13 11:59   ` Greg KH

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.