[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20200928050727.GE20687@gauss3.secunet.de>
Date: Mon, 28 Sep 2020 07:07:27 +0200
From: Steffen Klassert <steffen.klassert@...unet.com>
To: Herbert Xu <herbert@...dor.apana.org.au>
CC: syzbot <syzbot+577fbac3145a6eb2e7a5@...kaller.appspotmail.com>,
<davem@...emloft.net>, <kuba@...nel.org>,
<linux-kernel@...r.kernel.org>, <netdev@...r.kernel.org>,
<syzkaller-bugs@...glegroups.com>,
James Morris <jmorris@...ei.org>,
"Serge E. Hallyn" <serge@...lyn.com>,
<linux-security-module@...r.kernel.org>
Subject: Re: [PATCH] xfrm: Use correct address family in xfrm_state_find
On Fri, Sep 25, 2020 at 02:42:56PM +1000, Herbert Xu wrote:
> Resend with proper subject.
>
> ---8<---
> The struct flowi must never be interpreted by itself as its size
> depends on the address family. Therefore it must always be grouped
> with its original family value.
>
> In this particular instance, the original family value is lost in
> the function xfrm_state_find. Therefore we get a bogus read when
> it's coupled with the wrong family which would occur with inter-
> family xfrm states.
>
> This patch fixes it by keeping the original family value.
>
> Note that the same bug could potentially occur in LSM through
> the xfrm_state_pol_flow_match hook. I checked the current code
> there and it seems to be safe for now as only secid is used which
> is part of struct flowi_common. But that API should be changed
> so that so that we don't get new bugs in the future. We could
> do that by replacing fl with just secid or adding a family field.
>
> Reported-by: syzbot+577fbac3145a6eb2e7a5@...kaller.appspotmail.com
> Fixes: 48b8d78315bf ("[XFRM]: State selection update to use inner...")
> Signed-off-by: Herbert Xu <herbert@...dor.apana.org.au>
Applied, thanks a lot Herbert!
Powered by blists - more mailing lists