[3.13.y.z extended stable] Patch "aio: fix kernel memory disclosure in io_getevents() introduced in v3.10" has been added to staging queue
Kamal Mostafa
kamal at canonical.com
Tue Jul 15 21:29:59 UTC 2014
This is a note to let you know that I have just added a patch titled
aio: fix kernel memory disclosure in io_getevents() introduced in v3.10
to the linux-3.13.y-queue branch of the 3.13.y.z extended stable tree
which can be found at:
http://kernel.ubuntu.com/git?p=ubuntu/linux.git;a=shortlog;h=refs/heads/linux-3.13.y-queue
This patch is scheduled to be released in version 3.13.11.5.
If you, or anyone else, feels it should not be added to this tree, please
reply to this email.
For more information about the 3.13.y.z tree, see
https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable
Thanks.
-Kamal
------
>From 76bef3a512f312c4db1c6c6e2779bad7a4637e35 Mon Sep 17 00:00:00 2001
From: Benjamin LaHaise <bcrl at kvack.org>
Date: Tue, 24 Jun 2014 13:32:51 -0400
Subject: aio: fix kernel memory disclosure in io_getevents() introduced in
v3.10
commit edfbbf388f293d70bf4b7c0bc38774d05e6f711a upstream.
A kernel memory disclosure was introduced in aio_read_events_ring() in v3.10
by commit a31ad380bed817aa25f8830ad23e1a0480fef797. The changes made to
aio_read_events_ring() failed to correctly limit the index into
ctx->ring_pages[], allowing an attacked to cause the subsequent kmap() of
an arbitrary page with a copy_to_user() to copy the contents into userspace.
This vulnerability has been assigned CVE-2014-0206. Thanks to Mateusz and
Petr for disclosing this issue.
This patch applies to v3.12+. A separate backport is needed for 3.10/3.11.
Signed-off-by: Benjamin LaHaise <bcrl at kvack.org>
Cc: Mateusz Guzik <mguzik at redhat.com>
Cc: Petr Matousek <pmatouse at redhat.com>
Cc: Kent Overstreet <kmo at daterainc.com>
Cc: Jeff Moyer <jmoyer at redhat.com>
Signed-off-by: Kamal Mostafa <kamal at canonical.com>
---
fs/aio.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/fs/aio.c b/fs/aio.c
index e9566f2..19e7d95 100644
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -1049,6 +1049,9 @@ static long aio_read_events_ring(struct kioctx *ctx,
if (head == tail)
goto out;
+ head %= ctx->nr_events;
+ tail %= ctx->nr_events;
+
while (ret < nr) {
long avail;
struct io_event *ev;
--
1.9.1
More information about the kernel-team
mailing list