Thread (10 messages) 10 messages, 6 authors, 2017-04-25

Re: [kernel-hardening] Re: [PATCH v2] powerpc/mm: Add support for runtime configuration of ASLR limits

From: Kees Cook <hidden>
Date: 2017-04-24 17:56:08

On Mon, Apr 24, 2017 at 7:29 AM, Michael Ellerman [off-list ref] wrote:
Balbir Singh [off-list ref] writes:
quoted
On Fri, 2017-04-21 at 00:36 +1000, Michael Ellerman wrote:
quoted
Add powerpc support for mmap_rnd_bits and mmap_rnd_compat_bits, which are two
sysctls that allow a user to configure the number of bits of randomness used for
ASLR.
...
quoted
Could we please suggest that this should not be sent to stable or back-ported
as the 128T default is new?
I'm not sure I follow. I didn't tag it for stable. Do you mean we should
explicitly mark it as not-for-stable?

If someone sends it to stable@vger I'll be pinged before it goes in and
nak it, if someone wants to backport it (incorrectly) to their own tree
then good luck to them :)
quoted
quoted
diff --git a/arch/powerpc/mm/mmap.c b/arch/powerpc/mm/mmap.c
index a5d9ef59debe..6141cfff634e 100644
--- a/arch/powerpc/mm/mmap.c
+++ b/arch/powerpc/mm/mmap.c
@@ -59,13 +59,14 @@ static inline int mmap_is_legacy(void)

 unsigned long arch_mmap_rnd(void)
 {
-    unsigned long rnd;
+    unsigned long shift, rnd;

-    /* 8MB for 32bit, 1GB for 64bit */
+    shift = mmap_rnd_bits;
+#ifdef CONFIG_COMPAT
     if (is_32bit_task())
-            rnd = get_random_long() % (1<<(23-PAGE_SHIFT));
-    else
-            rnd = get_random_long() % (1UL<<(30-PAGE_SHIFT));
+            shift = mmap_rnd_compat_bits;
+#endif
+    rnd = get_random_long() % (1 << shift);
Nitpick, 1 should be 1UL?
Nice catch!
No, shift can only be 29 at most IIRC?
The largest value in the kconfigs is 33?
But it's a bit fragile, so I'll change it.
Thanks!

-Kees

-- 
Kees Cook
Pixel Security
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help