2015-11-03 11:25:09

by Quentin Casasnovas

[permalink] [raw]
Subject: Re: [PATCH] RDS: fix race condition when sending a message on unbound socket.

On Fri, Oct 16, 2015 at 10:47:49AM -0700, santosh shilimkar wrote:
> On 10/16/2015 8:11 AM, Quentin Casasnovas wrote:
> > Sasha's found a NULL pointer dereference in the RDS connection code when
> > sending a message to an apparently unbound socket. The problem is caused
> > by the code checking if the socket is bound in rds_sendmsg(), which checks
> > the rs_bound_addr field without taking a lock on the socket. This opens a
> > race where rs_bound_addr is temporarily set but where the transport is not
> > in rds_bind(), leading to a NULL pointer dereference when trying to
> > dereference 'trans' in __rds_conn_create().
> >
> > Vegard wrote a reproducer for this issue, so kindly ask him to share if
> > you're interested.
> >
> > I cannot reproduce the NULL pointer dereference using Vegard's reproducer
> > with this patch, whereas I could without.
> >
> > Complete earlier incomplete fix to CVE-2015-6937:
> >
> > 74e98eb08588 ("RDS: verify the underlying transport exists before creating a connection")
> >

For reference, this has been assigned CVE-2015-7990 on the oss-sec thread:

http://seclists.org/oss-sec/2015/q4/179

Quentin


2015-11-03 16:27:40

by Santosh Shilimkar

[permalink] [raw]
Subject: Re: [PATCH] RDS: fix race condition when sending a message on unbound socket.

On 11/3/2015 3:25 AM, Quentin Casasnovas wrote:
> On Fri, Oct 16, 2015 at 10:47:49AM -0700, santosh shilimkar wrote:
>> On 10/16/2015 8:11 AM, Quentin Casasnovas wrote:
>>> Sasha's found a NULL pointer dereference in the RDS connection code when
>>> sending a message to an apparently unbound socket. The problem is caused
>>> by the code checking if the socket is bound in rds_sendmsg(), which checks
>>> the rs_bound_addr field without taking a lock on the socket. This opens a
>>> race where rs_bound_addr is temporarily set but where the transport is not
>>> in rds_bind(), leading to a NULL pointer dereference when trying to
>>> dereference 'trans' in __rds_conn_create().
>>>
>>> Vegard wrote a reproducer for this issue, so kindly ask him to share if
>>> you're interested.
>>>
>>> I cannot reproduce the NULL pointer dereference using Vegard's reproducer
>>> with this patch, whereas I could without.
>>>
>>> Complete earlier incomplete fix to CVE-2015-6937:
>>>
>>> 74e98eb08588 ("RDS: verify the underlying transport exists before creating a connection")
>>>
>
> For reference, this has been assigned CVE-2015-7990 on the oss-sec thread:
>
> http://seclists.org/oss-sec/2015/q4/179
>
New CVE number than the older one. Thanks for the note.

Regards,
Santosh

2015-11-24 18:26:03

by Ben Hutchings

[permalink] [raw]
Subject: Re: [PATCH] RDS: fix race condition when sending a message on unbound socket.

On Tue, 2015-11-03 at 12:25 +0100, Quentin Casasnovas wrote:
> On Fri, Oct 16, 2015 at 10:47:49AM -0700, santosh shilimkar wrote:
> > On 10/16/2015 8:11 AM, Quentin Casasnovas wrote:
> > > Sasha's found a NULL pointer dereference in the RDS connection code when
> > > sending a message to an apparently unbound socket.  The problem is caused
> > > by the code checking if the socket is bound in rds_sendmsg(), which checks
> > > the rs_bound_addr field without taking a lock on the socket.  This opens a
> > > race where rs_bound_addr is temporarily set but where the transport is not
> > > in rds_bind(), leading to a NULL pointer dereference when trying to
> > > dereference 'trans' in __rds_conn_create().
> > >
> > > Vegard wrote a reproducer for this issue, so kindly ask him to share if
> > > you're interested.
> > >
> > > I cannot reproduce the NULL pointer dereference using Vegard's reproducer
> > > with this patch, whereas I could without.
> > >
> > > Complete earlier incomplete fix to CVE-2015-6937:
> > >
> > >    74e98eb08588 ("RDS: verify the underlying transport exists before creating a connection")
> > >
>
> For reference, this has been assigned CVE-2015-7990 on the oss-sec thread:
>
>   http://seclists.org/oss-sec/2015/q4/179

But the patch doesn't seem to have gone anywhere.  Santosh, can you
apply this in your tree and ask David to pull, or should Quentin re-
send it to netdev?

Ben.

--
Ben Hutchings
Unix is many things to many people,
but it's never been everything to anybody.


Attachments:
signature.asc (811.00 B)
This is a digitally signed message part

2015-11-24 18:43:48

by Santosh Shilimkar

[permalink] [raw]
Subject: Re: [PATCH] RDS: fix race condition when sending a message on unbound socket.

On 11/24/2015 10:25 AM, Ben Hutchings wrote:
> On Tue, 2015-11-03 at 12:25 +0100, Quentin Casasnovas wrote:
>> On Fri, Oct 16, 2015 at 10:47:49AM -0700, santosh shilimkar wrote:
>>> On 10/16/2015 8:11 AM, Quentin Casasnovas wrote:
>>>> Sasha's found a NULL pointer dereference in the RDS connection code when
>>>> sending a message to an apparently unbound socket. The problem is caused
>>>> by the code checking if the socket is bound in rds_sendmsg(), which checks
>>>> the rs_bound_addr field without taking a lock on the socket. This opens a
>>>> race where rs_bound_addr is temporarily set but where the transport is not
>>>> in rds_bind(), leading to a NULL pointer dereference when trying to
>>>> dereference 'trans' in __rds_conn_create().
>>>>
>>>> Vegard wrote a reproducer for this issue, so kindly ask him to share if
>>>> you're interested.
>>>>
>>>> I cannot reproduce the NULL pointer dereference using Vegard's reproducer
>>>> with this patch, whereas I could without.
>>>>
>>>> Complete earlier incomplete fix to CVE-2015-6937:
>>>>
>>>> 74e98eb08588 ("RDS: verify the underlying transport exists before creating a connection")
>>>>
>>
>> For reference, this has been assigned CVE-2015-7990 on the oss-sec thread:
>>
>> http://seclists.org/oss-sec/2015/q4/179
>
> But the patch doesn't seem to have gone anywhere. Santosh, can you
> apply this in your tree and ask David to pull, or should Quentin re-
> send it to netdev?
>
Indeed, its not picked up yet. I will send the refreshed patch for
Dave to pull. Thanks for reporting Ben.

Regards,
Santosh