[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20171231075214.gjwbdegozcqyqukk@gauss3.secunet.de>
Date: Sun, 31 Dec 2017 08:52:14 +0100
From: Steffen Klassert <steffen.klassert@...unet.com>
To: Eric Biggers <ebiggers3@...il.com>
CC: <netdev@...r.kernel.org>, Herbert Xu <herbert@...dor.apana.org.au>,
"David S . Miller" <davem@...emloft.net>,
Alexander Potapenko <glider@...gle.com>,
Dmitry Vyukov <dvyukov@...gle.com>,
Kostya Serebryany <kcc@...gle.com>,
syzkaller <syzkaller@...glegroups.com>,
Eric Biggers <ebiggers@...gle.com>, <stable@...r.kernel.org>
Subject: Re: [PATCH] af_key: fix buffer overread in parse_exthdrs()
On Fri, Dec 29, 2017 at 06:15:23PM -0600, Eric Biggers wrote:
> From: Eric Biggers <ebiggers@...gle.com>
>
> If a message sent to a PF_KEY socket ended with an incomplete extension
> header (fewer than 4 bytes remaining), then parse_exthdrs() read past
> the end of the message, into uninitialized memory. Fix it by returning
> -EINVAL in this case.
>
> Reproducer:
>
> #include <linux/pfkeyv2.h>
> #include <sys/socket.h>
> #include <unistd.h>
>
> int main()
> {
> int sock = socket(PF_KEY, SOCK_RAW, PF_KEY_V2);
> char buf[17] = { 0 };
> struct sadb_msg *msg = (void *)buf;
>
> msg->sadb_msg_version = PF_KEY_V2;
> msg->sadb_msg_type = SADB_DELETE;
> msg->sadb_msg_len = 2;
>
> write(sock, buf, 17);
> }
>
> Cc: stable@...r.kernel.org
> Signed-off-by: Eric Biggers <ebiggers@...gle.com>
Also applied to the ipsec tree, thanks a lot!
Powered by blists - more mailing lists