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

Ingo Molnar
2014-04-14T07:28:04Z

* 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