RE: [PATCH nf v2] netfilter: cttimeout: Fix one possible use-after-free issue

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> From: Pablo Neira Ayuso [mailto:pablo@xxxxxxxxxxxxx]
> On Fri, Apr 14, 2017 at 09:13:40AM +0800, gfree.wind@xxxxxxxxxxx wrote:
> > From: Gao Feng <fgao@xxxxxxxxxx>
> >
> > The function ctnl_untimeout is used to untimeout every conntrack which
> > is using the timeout. But it is necessary to add one barrier
> > synchronize_rcu because of racing. Maybe one conntrack has already
> > owned this timeout, but it is not inserted into unconfirmed list or
> > the hash list, when ctnl_untimeout untimeout the conntracks
> >
> > Let me describe it with a call path
> > CPU1				CPU2
> > alloc new conn
> > add timeout ext
> > 				ctnl_timeout_try_del
> > 				untimeout all conns in list
> > 				kfree_rcu.
> > conn is confirmed.
> 
> Then this confirmed conn gets a timeout_ext->timeout == NULL since
> ctnl_untimeout() is called first.

The new conn gets the timeout_ext->timeout before ctnl_untimeout, when add
the timeout ext.
Then ctnl_untimeout happens before the new conn is inserted into unconfirmed
list.
It could not reset the timeout pointer of new conn to NULL.
Maybe I should add the "insert unconfirm list" in the call path.

I could not understand why the conn gets one NULL pointer, not invalid
pointer in this case.

Regards
Feng




--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux