From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Corneliu ZUZU <czuzu@bitdefender.com>, Jan Beulich <JBeulich@suse.com>
Cc: Xen-devel <xen-devel@lists.xen.org>
Subject: Re: [PATCH] x86/hvm: Fix use-after-free introduced by c/s 428607a
Date: Tue, 2 Feb 2016 12:05:19 +0000 [thread overview]
Message-ID: <56B09B7F.8080307@citrix.com> (raw)
In-Reply-To: <56B0955D.2010002@bitdefender.com>
On 02/02/16 11:39, Corneliu ZUZU wrote:
> On 2/2/2016 12:52 PM, Jan Beulich wrote:
>>> NULLing the pointers would cause things like rtc_deinit() to always
>>> blow
>>> up when it followed the NULL pointer.
>>>
>>> IMO, we should unconditionally always NULL pointers when freeing a
>>> pointer which isn't in local scope. It would make issues such as these
>>> completely obvious.
>> As would poisoning the pointers, yet poisoning has the advantage
>> of not allowing PV guests to control what the hypervisor might
>> access when erroneously de-referencing such a pointer.
>>
>> Jan
>
> Jan, that sounds interesting. I hope I'm not intruding, but when you
> have the time, could you please expand on this?
> Besides distinguishing a nuked pointer from zeroed-out memory, I did
> not know of any other advantage of 0xDEADBEEF pointer poisoning
> (generally or specifically).
Xen is 64bit only these days. Bit 47 of a 64bit pointer must be signed
extended, or a #GP fault occurs because of the use of a non-canonical
address.
Therefore, a pointer such as 0xdeadc0de00000000ULL will unconditionally
cause a #GP fault if Xen accidentally used it.
> How could possibly setting a pointer to NULL allow a PV guest to
> control what the hypervisor might access, if the hypervisor *can't
> access* a NULL pointer?
> And can a PV guest write data @ *hypervisor's* 0 page (virtual and/or
> physical)?
Xen and PV guests share the virtual address space, in exactly the same
way as a native kernel and its userspace. PV guests can map pages at 0.
Therefore, if Xen were to accidentally follow a NULL pointer, it may not
result in a pagefault. (Hardware mechanisms such as SMEP and SMAP are
added protection against this, but don't work on older hardware)
~Andrew
next prev parent reply other threads:[~2016-02-02 12:05 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-01 17:56 [PATCH] x86/hvm: Fix use-after-free introduced by c/s 428607a Andrew Cooper
2016-02-02 8:00 ` Corneliu ZUZU
2016-02-02 10:04 ` Andrew Cooper
2016-02-02 10:43 ` Jan Beulich
2016-02-02 10:48 ` Andrew Cooper
2016-02-02 10:52 ` Jan Beulich
2016-02-02 10:57 ` Andrew Cooper
2016-02-02 11:39 ` Corneliu ZUZU
2016-02-02 11:44 ` Jan Beulich
2016-02-02 12:05 ` Andrew Cooper [this message]
2016-02-02 12:51 ` Corneliu ZUZU
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56B09B7F.8080307@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=JBeulich@suse.com \
--cc=czuzu@bitdefender.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.