From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Biggers Subject: Re: KASAN: use-after-free Read in __dev_queue_xmit Date: Wed, 9 May 2018 00:37:54 -0700 Message-ID: <20180509073754.GG711@sol.localdomain> References: <94eb2c0ce3aa27cfa40561ec2dc3@google.com> <1515048794.131759.4.camel@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Cc: Eric Dumazet , syzbot , alexander.deucher@amd.com, Andrey Konovalov , Anoob Soman , chris@chris-wilson.co.uk, David Miller , elena.reshetova@intel.com, Greg Kroah-Hartman , Kees Cook , LKML , Mike Maloney , mchehab@kernel.org, netdev , rami.rosen@intel.com, Sowmini Varadhan , syzkaller-bugs@googlegroups.com, Willem de Bruijn To: Eric Dumazet Return-path: Content-Disposition: inline In-Reply-To: <1515048794.131759.4.camel@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org On Wed, Jan 03, 2018 at 10:53:14PM -0800, Eric Dumazet wrote: > On Wed, 2018-01-03 at 21:13 -0800, Eric Dumazet wrote: > > Note: all commands must start from beginning of the line in the email body. > > > > I guess skb_probe_transport_header() should be hardened to reject malicious > > packets given by user space, instead of being gentle. > > Although bug triggered for this particular repro is in flow dissector > :/ > > I will test : > > diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c > index 15ce300637650e17fcab7e378b20fe7972686d46..544bddf08e13c7f6e47aadc737244c9ba5af56b2 100644 > --- a/net/core/flow_dissector.c > +++ b/net/core/flow_dissector.c > @@ -976,8 +976,8 @@ bool __skb_flow_dissect(const struct sk_buff *skb, >  out_good: >         ret = true; >   > -       key_control->thoff = (u16)nhoff; >  out: > +       key_control->thoff = min_t(u16, nhoff, skb ? skb->len : hlen); >         key_basic->n_proto = proto; >         key_basic->ip_proto = ip_proto; >   > @@ -985,7 +985,6 @@ bool __skb_flow_dissect(const struct sk_buff *skb, >   >  out_bad: >         ret = false; > -       key_control->thoff = min_t(u16, nhoff, skb ? skb->len : hlen); >         goto out; >  } >  EXPORT_SYMBOL(__skb_flow_dissect); Fix for this was commit d0c081b49137cd: #syz fix: flow_dissector: properly cap thoff field But a crash with the same signature is still occurring, so it should eventually get reported again. C reproducer is here, it works on Linus' tree (commit 036db8bd963): https://syzkaller.appspot.com/text?tag=ReproC&x=105b1ae7800000 - Eric