Re: [PATCH v4 2/3] x86/ldt: Make modify_ldt optional

From: Andy Lutomirski
Date: Sat Jul 25 2015 - 12:04:23 EST


On Sat, Jul 25, 2015 at 2:15 AM, Borislav Petkov <bp@xxxxxxxxx> wrote:
> On Fri, Jul 24, 2015 at 10:36:45PM -0700, Andy Lutomirski wrote:
>> The modify_ldt syscall exposes a large attack surface and is
>> unnecessary for modern userspace. Make it optional.
>>
>> Signed-off-by: Andy Lutomirski <luto@xxxxxxxxxx>
>> ---
>> arch/x86/Kconfig | 17 +++++++++++++++++
>> arch/x86/include/asm/mmu.h | 2 ++
>> arch/x86/include/asm/mmu_context.h | 31 +++++++++++++++++++++++--------
>> arch/x86/kernel/Makefile | 3 ++-
>> arch/x86/kernel/cpu/perf_event.c | 4 ++++
>> arch/x86/kernel/process_64.c | 2 ++
>> arch/x86/kernel/step.c | 2 ++
>> kernel/sys_ni.c | 1 +
>> 8 files changed, 53 insertions(+), 9 deletions(-)
>>
>> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
>> index b3a1a5d77d92..ede52be845db 100644
>> --- a/arch/x86/Kconfig
>> +++ b/arch/x86/Kconfig
>> @@ -1015,6 +1015,7 @@ config VM86
>> config X86_16BIT
>> bool "Enable support for 16-bit segments" if EXPERT
>> default y
>> + depends on MODIFY_LDT_SYSCALL
>> ---help---
>> This option is required by programs like Wine to run 16-bit
>> protected mode legacy code on x86 processors. Disabling
>> @@ -2053,6 +2054,22 @@ config CMDLINE_OVERRIDE
>> This is used to work around broken boot loaders. This should
>> be set to 'N' under normal conditions.
>>
>> +config MODIFY_LDT_SYSCALL
>> + bool "Enable the LDT (local descriptor table)" if EXPERT
>
> bool "Enable modify_ldt() for per-process Local Descriptor Table"
>
> is how I'd call it.

Okay with me.

>
>> + default y
>
> Is that "default y" going to turn into a "default n" after a grace
> period?

Let's see how Willy's default-off sysctl plays out. In the long run,
maybe we'll have it compiled in but runtime-disabled by default.
There's a big community of users who *really* like using Wine :)

--Andy
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/