Re: [tip:x86/urgent] x86-64, modify_ldt: Ban 16-bit segments on 64-bit kernels

H. Peter Anvin
2014-04-14T15:47:06Z

For both of these, though, it is really kind of broken that it is a global switch, whereas typically only one application on the whole system needs it, so it would be much better to have application-specific controls. How to do that is another matter...

On April 14, 2014 12:27:56 AM PDT, Ingo Molnar <mingo@kernel.org> wrote:
>
>* H. Peter Anvin <hpa@linux.intel.com> wrote:
>
>> On 04/11/2014 11:41 AM, Linus Torvalds wrote:
>> >
>> > Ok, so you actually do this on x86-64, and it currently works? For
>> > some reason I thought that 16-bit windows apps already didn't work.
>> >
>>
>> Some will work, because not all 16-bit software care about the upper
>> half of ESP getting randomly corrupted.
>>
>> That is the "functionality bit" of the problem. The other bit, of
>> course, is that that random corruption is the address of the kernel
>stack.
>>
>> > Because if we have working users of this, then I don't think we can
>do
>> > the "we don't support 16-bit segments", or at least we need to make
>it
>> > runtime configurable.
>>
>> I'll let you pick what the policy should be here. I personally
>> think that we have to be able to draw a line somewhere sometimes
>> (Microsoft themselves haven't supported running 16-bit binaries for
>> several Windows generations now), but it is your policy, not mine.
>
>I think the mmap_min_addr model works pretty well:
>
> - it defaults to secure
>
> - allow a security policy to grant an exception to a known package,
> built by the distro
>
> - end user can also grant an exception
>
>This essentially punts any 'makes the system less secure' exceptions
>to the distro and the end user.
>
>Thanks,
>
> Ingo

--
Sent from my mobile phone. Please pardon brevity and lack of formatting.