From: Greg KH <gregkh@linuxfoundation.org>
To: Alessio Balsini <balsini@android.com>
Cc: stable@vger.kernel.org, WANG Cong <xiyou.wangcong@gmail.com>,
Andrey Konovalov <andreyknvl@google.com>,
syzbot+01400f5fc51cf4747bec@syzkaller.appspotmail.com,
Steffen Klassert <steffen.klassert@secunet.com>,
"David S . Miller" <davem@davemloft.net>
Subject: Re: [PATCH 4.4] ipv6: check skb->protocol before lookup for nexthop
Date: Thu, 20 Aug 2020 11:06:20 +0200 [thread overview]
Message-ID: <20200820090620.GA1116598@kroah.com> (raw)
In-Reply-To: <20200820085511.GA1708325@google.com>
On Thu, Aug 20, 2020 at 09:55:11AM +0100, Alessio Balsini wrote:
> On Thu, Aug 20, 2020 at 10:09:02AM +0200, Greg KH wrote:
> > On Wed, Aug 19, 2020 at 09:11:17PM +0100, Alessio Balsini wrote:
> > > From: WANG Cong <xiyou.wangcong@gmail.com>
> > >
> > > [ Upstream commit 199ab00f3cdb6f154ea93fa76fd80192861a821d ]
> > >
> > > Andrey reported a out-of-bound access in ip6_tnl_xmit(), this
> > > is because we use an ipv4 dst in ip6_tnl_xmit() and cast an IPv4
> > > neigh key as an IPv6 address:
> > >
> > > neigh = dst_neigh_lookup(skb_dst(skb),
> > > &ipv6_hdr(skb)->daddr);
> > > if (!neigh)
> > > goto tx_err_link_failure;
> > >
> > > addr6 = (struct in6_addr *)&neigh->primary_key; // <=== HERE
> > > addr_type = ipv6_addr_type(addr6);
> > >
> > > if (addr_type == IPV6_ADDR_ANY)
> > > addr6 = &ipv6_hdr(skb)->daddr;
> > >
> > > memcpy(&fl6->daddr, addr6, sizeof(fl6->daddr));
> > >
> > > Also the network header of the skb at this point should be still IPv4
> > > for 4in6 tunnels, we shold not just use it as IPv6 header.
> > >
> > > This patch fixes it by checking if skb->protocol is ETH_P_IPV6: if it
> > > is, we are safe to do the nexthop lookup using skb_dst() and
> > > ipv6_hdr(skb)->daddr; if not (aka IPv4), we have no clue about which
> > > dest address we can pick here, we have to rely on callers to fill it
> > > from tunnel config, so just fall to ip6_route_output() to make the
> > > decision.
> > >
> > > Fixes: ea3dc9601bda ("ip6_tunnel: Add support for wildcard tunnel endpoints.")
> > > Reported-by: Andrey Konovalov <andreyknvl@google.com>
> > > Reported-by: syzbot+01400f5fc51cf4747bec@syzkaller.appspotmail.com
> > > Tested-by: Andrey Konovalov <andreyknvl@google.com>
> > > Cc: Steffen Klassert <steffen.klassert@secunet.com>
> > > Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
> > > Signed-off-by: David S. Miller <davem@davemloft.net>
> > > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > > Signed-off-by: Alessio Balsini <balsini@android.com>
> > > ---
> > > net/ipv6/ip6_tunnel.c | 32 +++++++++++++++++---------------
> > > 1 file changed, 17 insertions(+), 15 deletions(-)
> >
> > This was already applied to the 4.4.66 kernel release
> >
> > But this patch applies to the 4.4.y tree. Which is really really odd,
> > what is going on here?
> >
> > confused,
> >
> > greg k-h
>
> Totally odd... Now that you gave me this heads up, I can see that the
> patch was applied to v4.4.66 and for some reason dropped since v4.4.118.
>
> Can you please take a look? Thanks!
What dropped it? Fixes that resolved other things? Are you sure this
is still needed?
That's all I can tell, you can see the kernel branch as well as I can :)
greg k-h
next prev parent reply other threads:[~2020-08-20 9:06 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-19 20:11 [PATCH 4.4] ipv6: check skb->protocol before lookup for nexthop Alessio Balsini
2020-08-20 8:09 ` Greg KH
2020-08-20 8:55 ` Alessio Balsini
2020-08-20 9:06 ` Greg KH [this message]
2020-08-20 9:31 ` Alessio Balsini
2020-08-20 10:00 ` Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200820090620.GA1116598@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=andreyknvl@google.com \
--cc=balsini@android.com \
--cc=davem@davemloft.net \
--cc=stable@vger.kernel.org \
--cc=steffen.klassert@secunet.com \
--cc=syzbot+01400f5fc51cf4747bec@syzkaller.appspotmail.com \
--cc=xiyou.wangcong@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.