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 02:36:57PM -0700, Zach Brown wrote:
> 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;

Oops, nope, my mistake!  ctx->tail is still stored modulo nr_events.  I
somehow had it in my head that the giant series patches had changed
that.  Never mind.  Carry on :).

- 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]