From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andy Lutomirski Subject: Re: [PATCH v3 01/11] x86/boot: enumerate documentation for the x86 hardware_subarch Date: Wed, 24 Feb 2016 17:29:28 -0800 Message-ID: References: <1456212255-23959-1-git-send-email-mcgrof@kernel.org> <1456212255-23959-2-git-send-email-mcgrof@kernel.org> <20160223085119.GA10182@gmail.com> <20160223103409.GF25240@wotan.suse.de> <20160223204135.GH25240@wotan.suse.de> <20160224083259.GA20579@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Return-path: In-Reply-To: Sender: owner-linux-security-module@vger.kernel.org To: "Luis R. Rodriguez" Cc: Kees Cook , Thomas Gleixner , Ingo Molnar , Borislav Petkov , X86 ML , Andrew Morton , Rusty Russell , Andrew Cooper , Konrad Rzeszutek Wilk , David Vrabel , Ingo Molnar , Xen Devel , Linus Torvalds , Boris Ostrovsky , lguest@lists.ozlabs.org, Andy Shevchenko , "linux-kernel@vger.kernel.org" , "H. Peter Anvin" , linux-security-module List-Id: xen-devel@lists.xenproject.org On Wed, Feb 24, 2016 at 5:18 PM, Luis R. Rodriguez wrote: > > On Feb 24, 2016 8:40 AM, "Andy Lutomirski" wrote: >> >> On Feb 24, 2016 12:33 AM, "Ingo Molnar" wrote: >> > >> > For hard coded platform quirks I'd suggest we add x86_platform.quirks >> > flags. For >> > example the F00F hack for Xen could be done via: >> > >> > x86_platform.quirks.idt_remap = 0; >> > >> >> Don't we unconditionally remap the IDT? I think Kees did it for >> general purpose hardening due to our complete inability to hide the >> IDT address. I.e. I think we can remove the f00f condition entirely. >> > > Kees can you confirm ? > No need. /* * Set the IDT descriptor to a fixed read-only location, so that the * "sidt" instruction will not leak the location of the kernel, and * to defend the IDT against arbitrary memory write vulnerabilities. * It will be reloaded in cpu_init() */ __set_fixmap(FIX_RO_IDT, __pa_symbol(idt_table), PAGE_KERNEL_RO); idt_descr.address = fix_to_virt(FIX_RO_IDT); IIUI this works around f00f as a side effect. The only other thing needed is the code that X86_BUG_F00F guards, which is responsible for fixing up the error generated on attempted F00F exploitation from an OOPS to a SIGILL. I see no reason why that code couldn't be allowed to run on even a PV guest on a F00F-affected CPU -- it would never trigger anyway.