Re: [PATCH 2/2] aio: fix kernel memory disclosure in io_getevents() introduced in v3.10

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

 



On Wed, Jun 25, 2014 at 04:50:51PM -0400, Jeff Moyer wrote:
> 
> From: Benjamin LaHaise <bcrl@xxxxxxxxx>
> 
> 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.
> 
> [jmoyer@xxxxxxxxxx: backported to 3.10]
> Signed-off-by: Benjamin LaHaise <bcrl@xxxxxxxxx>
> Signed-off-by: Jeff Moyer <jmoyer@xxxxxxxxxx>
> Cc: Mateusz Guzik <mguzik@xxxxxxxxxx>
> Cc: Petr Matousek <pmatouse@xxxxxxxxxx>
> Cc: Kent Overstreet <kmo@xxxxxxxxxxxxx>
> Cc: stable@xxxxxxxxxxxxxxx
> ---
>  aio.c |    2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/fs/aio.c b/fs/aio.c
> index e66b948..872fd26 100644
> --- a/fs/aio.c
> +++ b/fs/aio.c
> @@ -717,6 +717,8 @@ static long aio_read_events_ring(struct kioctx *ctx,
>  	if (head == ctx->tail)
>  		goto out;
>  
> +	head %= ctx->nr_events;
> +
>  	while (ret < nr) {
>  		long avail;
>  		struct io_event *ev;


Hmm.  Are you sure it's safe to clamp head but not ctx->tail?  The body
of the loop still has:

  avail = (head <= ctx->tail ? ctx->tail : ctx->nr_events) - head;

Seems to me that a better backport would be to bring in the chunks of
the patch that introduce a local on stack tail and clamp that to match
the current code.

commit 5ffac122dbda89fbb29885f35a5d47b0edb8936d
Author: Kent Overstreet <koverstreet@xxxxxxxxxx>
Date:   Thu May 9 15:36:07 2013 -0700

    aio: Don't use ctx->tail unnecessarily

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




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]