On Mon, Nov 9, 2015 at 10:56 AM, Daniel Cashman <dcashman@xxxxxxxxxxx> wrote: > On 11/08/2015 07:47 PM, Michael Ellerman wrote: >> On Fri, 2015-11-06 at 12:52 -0800, Kees Cook wrote: >>> On Thu, Nov 5, 2015 at 10:44 AM, Daniel Cashman <dcashman@xxxxxxxxxxx> wrote: >>>> On 11/04/2015 10:30 AM, Daniel Cashman wrote: >>>>> On 11/3/15 3:21 PM, Kees Cook wrote: >>>>>> On Tue, Nov 3, 2015 at 3:14 PM, Daniel Cashman <dcashman@xxxxxxxxxxx> wrote: >>>>>>> On 11/03/2015 11:19 AM, Kees Cook wrote: >>>>>>>> Do you have patches for x86 and arm64? >>>>>>> >>>>>>> I was holding off on those until I could gauge upstream reception. If >>>>>>> desired, I could put those together and add them as [PATCH 3/4] and >>>>>>> [PATCH 4/4]. >>>>>> >>>>>> If they're as trivial as I'm hoping, yeah, let's toss them in now. If >>>>>> not, skip 'em. PowerPC, MIPS, and s390 should be relatively simple >>>>>> too, but one or two of those have somewhat stranger calculations when >>>>>> I looked, so their Kconfigs may not be as clean. >>>>> >>>>> Creating the patches should be simple, it's the choice of minimum and >>>>> maximum values for each architecture that I'd be most concerned about. >>>>> I'll put them together, though, and the ranges can be changed following >>>>> discussion with those more knowledgeable, if needed. I also don't have >>>>> devices on which to test the PowerPC, MIPS and s390 changes, so I'll >>>>> need someone's help for that. >>>> >>>> Actually, in preparing the x86 and arm64 patches, it became apparent >>>> that the current patch-set does not address 32-bit executables running >>>> on 64-bit systems (compatibility mode), since only one procfs >>>> mmap_rnd_bits variable is created and exported. Some possible solutions: >>> >>> How about a single new CONFIG+sysctl that is the compat delta. For >>> example, on x86, it's 20 bits. Then we don't get splashed with a whole >>> new set of min/maxes, but we can reasonably control compat? >> >> Do you mean in addition to mmap_rnd_bits? >> >> So we'd end up with mmap_rnd_bits and also mmap_rnd_bits_compat_delta? >> (naming TBD) >> >> If so yeah I think that would work. >> >> It would have the nice property of allowing you to add some more randomness to >> all processes by bumping mmap_rnd_bits. But at the same time if you want to add >> a lot more randomness to 64-bit processes, but just a bit (or none) to 32-bit >> processes you can also do that. > > I may be misunderstanding the suggestion, or perhaps simply too > conservative in my desire to prevent bad values, but I still think we > would have need for two min-max ranges. If using a single > mmap_rnd_bits_compat value, there are two approaches: to either use > mmap_rnd_bits for 32-bit applications and then add the compat value for > 64-bit or the opposite, to have mmap_rnd_bits be the default and > subtract the compat value for the 32-bit applications. In either case, > the compat value would need to be sensibly bounded, and that bounding > depends on acceptable values for both 32 and 64 bit applications. Yeah, I think I wasn't thinking about this well. I think two sysctls should be fine: mmap_rnd_bits and mmap_compat_rnd_bits. And internally, we'd have a second set of CONFIGs (and ranges) to deal with CONFIG_COMPAT. -Kees -- Kees Cook Chrome OS Security -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>