Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1402190
| Path | csiph.com!news.redatomik.org!aioe.org!bofh.it!news.nic.it!robomod |
|---|---|
| From | Kees Cook <keescook@chromium.org> |
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH v5 0/4] x86, boot: KASLR memory randomization |
| Date | Tue, 17 May 2016 10:20:01 +0200 |
| Message-ID | <rzIop-252-7@gated-at.bofh.it> (permalink) |
| References | <ry4t4-3G6-1@gated-at.bofh.it> <rzvrh-25A-33@gated-at.bofh.it> |
| X-Original-To | Thomas Garnier <thgarnie@google.com> |
| Dkim-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc; bh=rYoB3RUvQN5Nf6PEFWmFC1f5w3HU4pDc+WucSPefij0=; b=lfufutroHpNuOa8uz7V9AUv+F05R1dQD/Azaqc8a89gRGKnunhZf+nJIM5Dw40h48Z PQAr0lJKjsrnR3xmfCoxZmRmWhc9yjYmSaPDtcyf0j6EcKS/ehJDJti1YsEcFQi1lcOU okVx7dKwf7K9b5QN4ZpOHK04IH61qIJQef4sIel9VCX08wExOdilytbLH8/fzTstZ4AO BkQOuyr0TPxxGjqIjDH2u5PEC2CLs/gocCKMrPiAZabXVN0Q3mmc8D1HSF1kwa95URtG PcADU6zzTiTt7/Rq28ENhOPf+NTubRwyYi4wDQ0jS6lT4fSVn1O/NDuvocCdMSnCk3mI O9pw== |
| Dkim-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc; bh=rYoB3RUvQN5Nf6PEFWmFC1f5w3HU4pDc+WucSPefij0=; b=TTgwb/LHGTXacZdB+JXqaDPSGCL/Prb9vglv/uDiIWBfvmIz4Ah80rGFkLIfQdOZSx PHpgcbVZw5AU5iijsYutyuYIOdUkeEgpr1LLG8BU6yOjEWbbT0U/QcpHBvFZbHjRe4rj n/zWV9vG0NY8o4gt8IBP0ScLlvKe6j5ab0y3E= |
| X-Google-Dkim-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:in-reply-to:references:date :message-id:subject:from:to:cc; bh=rYoB3RUvQN5Nf6PEFWmFC1f5w3HU4pDc+WucSPefij0=; b=RTDdBApCKizhAgzx0SFDCdE52QoxsD+Va+jE1DWadE3eWftHJgOzoXXxPZFCejquSM 542TdLPnAaPWl3IxKQBZoxlJFigj4Is3RIiDYiRi+rR2CnJ6k9A5nF0Dy92TvDy5zEkq BlD2uI+a3mZLdr99S3YbGsPztuwP+kCx0ClqKHM8JTT3fs/S2Yj+xQc37SgJRtbjcR3O fFd66d39c2ymkUtZmPC/dYWx4srtD1Zb0eJRZdPqEG7jZOf7111MUZ9OD+Lz4mQ+JY03 ZsVJWp5e0W7KxYSS661Ie2KON1tcqzlr/orNn4kf8t5KpWuKYKTxXGZ2iYsHIW7/bBmq wo8A== |
| X-Gm-Message-State | AOPr4FV2fHXpYF9EJ/iwfJH1Kf6Z0f6nHnUgIlrLFNDToAd8i+xIwGTBX5g1OuhW40NiBPKAOJ/yiXl27nFKCfBV |
| MIME-Version | 1.0 |
| X-Received | by 10.194.134.137 with SMTP id pk9mr16190461wjb.62.1463472918735; Tue, 17 May 2016 01:15:18 -0700 (PDT) |
| X-Google-Sender-Auth | TbJuqSvp0lYFN_Q8niWXsGSf8Hg |
| Content-Type | text/plain; charset=UTF-8 |
| Sender | robomod@news.nic.it |
| List-ID | <linux-kernel.vger.kernel.org> |
| X-Mailing-List | linux-kernel@vger.kernel.org |
| Approved | robomod@news.nic.it |
| Lines | 124 |
| Organization | linux.* mail to news gateway |
| X-Original-Cc | "H . Peter Anvin" <hpa@zytor.com>, Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@suse.de>, Andy Lutomirski <luto@kernel.org>, Dmitry Vyukov <dvyukov@google.com>, Paolo Bonzini <pbonzini@redhat.com>, Dan Williams <dan.j.williams@intel.com>, Stephen Smalley <sds@tycho.nsa.gov>, Kefeng Wang <wangkefeng.wang@huawei.com>, Jonathan Corbet <corbet@lwn.net>, Matt Fleming <matt@codeblueprint.co.uk>, Toshi Kani <toshi.kani@hpe.com>, Alexander Kuleshov <kuleshovmail@gmail.com>, Alexander Popov <alpopov@ptsecurity.com>, Joerg Roedel <jroedel@suse.de>, Dave Young <dyoung@redhat.com>, Baoquan He <bhe@redhat.com>, Dave Hansen <dave.hansen@linux.intel.com>, Mark Salter <msalter@redhat.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, "x86@kernel.org" <x86@kernel.org>, LKML <linux-kernel@vger.kernel.org>, "linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>, Greg Thelen <gthelen@google.com>, "kernel-hardening@lists.openwall.com" <kernel-hardening@lists.openwall.com> |
| X-Original-Date | Tue, 17 May 2016 01:15:18 -0700 |
| X-Original-Message-ID | <CAGXu5jL7is9TXo=7-2bW-1f65e7a7YrUQed1Pmd1fEgpsM+9aQ@mail.gmail.com> |
| X-Original-References | <1463081300-11127-1-git-send-email-thgarnie@google.com> <CAJcbSZGFweiOPu8UxU0Fyx5X1d26OTO9kQ1JVxG5WZT8XbTCAQ@mail.gmail.com> |
| X-Original-Sender | linux-kernel-owner@vger.kernel.org |
| Xref | csiph.com linux.kernel:1402190 |
Show key headers only | View raw
I'm travelling this week, but I'll try to spend some time on it. -Kees On Mon, May 16, 2016 at 11:25 AM, Thomas Garnier <thgarnie@google.com> wrote: > Any feedback on the patch? Ingo? Kees? > > Kees mentioned he will take care of the build warning on the KASLR > refactor (the function is not used right now). > > Thanks, > Thomas > > On Thu, May 12, 2016 at 12:28 PM, Thomas Garnier <thgarnie@google.com> wrote: >> This is PATCH v5 for KASLR memory implementation for x86_64. >> >> Recent changes: >> Add performance information on commit. >> Add details on PUD alignment. >> Add information on testing against the KASLR bypass exploit. >> Rebase on next-20160511 and merge recent KASLR changes. >> Integrate feedback from Kees. >> >> ***Background: >> The current implementation of KASLR randomizes only the base address of >> the kernel and its modules. Research was published showing that static >> memory can be overwitten to elevate privileges bypassing KASLR. >> >> In more details: >> >> The physical memory mapping holds most allocations from boot and heap >> allocators. Knowning the base address and physical memory size, an >> attacker can deduce the PDE virtual address for the vDSO memory page. >> This attack was demonstrated at CanSecWest 2016, in the "Getting >> Physical Extreme Abuse of Intel Based Paged Systems" >> https://goo.gl/ANpWdV (see second part of the presentation). The >> exploits used against Linux worked successfuly against 4.6+ but fail >> with KASLR memory enabled (https://goo.gl/iTtXMJ). Similar research >> was done at Google leading to this patch proposal. Variants exists to >> overwrite /proc or /sys objects ACLs leading to elevation of privileges. >> These variants were tested against 4.6+. >> >> This set of patches randomizes base address and padding of three >> major memory sections (physical memory mapping, vmalloc & vmemmap). >> It mitigates exploits relying on predictable kernel addresses. This >> feature can be enabled with the CONFIG_RANDOMIZE_MEMORY option. >> >> Padding for the memory hotplug support is managed by >> CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING. The default value is 10 >> terabytes. >> >> The patches were tested on qemu & physical machines. Xen compatibility was >> also verified. Multiple reboots were used to verify entropy for each >> memory section. >> >> ***Problems that needed solving: >> - The three target memory sections are never at the same place between >> boots. >> - The physical memory mapping can use a virtual address not aligned on >> the PGD page table. >> - Have good entropy early at boot before get_random_bytes is available. >> - Add optional padding for memory hotplug compatibility. >> >> ***Parts: >> - The first part prepares for the KASLR memory randomization by >> refactoring entropy functions used by the current implementation and >> support PUD level virtual addresses for physical mapping. >> (Patches 01-02) >> - The second part implements the KASLR memory randomization for all >> sections mentioned. >> (Patch 03) >> - The third part adds support for memory hotplug by adding an option to >> define the padding used between the physical memory mapping section >> and the others. >> (Patch 04) >> >> Performance data: >> >> Kernbench shows almost no difference (-+ less than 1%): >> >> Before: >> >> Average Optimal load -j 12 Run (std deviation): >> Elapsed Time 102.63 (1.2695) >> User Time 1034.89 (1.18115) >> System Time 87.056 (0.456416) >> Percent CPU 1092.9 (13.892) >> Context Switches 199805 (3455.33) >> Sleeps 97907.8 (900.636) >> >> After: >> >> Average Optimal load -j 12 Run (std deviation): >> Elapsed Time 102.489 (1.10636) >> User Time 1034.86 (1.36053) >> System Time 87.764 (0.49345) >> Percent CPU 1095 (12.7715) >> Context Switches 199036 (4298.1) >> Sleeps 97681.6 (1031.11) >> >> Hackbench shows 0% difference on average (hackbench 90 >> repeated 10 times): >> >> attemp,before,after >> 1,0.076,0.069 >> 2,0.072,0.069 >> 3,0.066,0.066 >> 4,0.066,0.068 >> 5,0.066,0.067 >> 6,0.066,0.069 >> 7,0.067,0.066 >> 8,0.063,0.067 >> 9,0.067,0.065 >> 10,0.068,0.071 >> average,0.0677,0.0677 >> >> Thanks! >> -- Kees Cook Chrome OS & Brillo Security
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH v5 0/4] x86, boot: KASLR memory randomization Thomas Garnier <thgarnie@google.com> - 2016-05-12 21:30 +0200
[PATCH v5 2/4] x86, boot: PUD VA support for physical mapping (x86_64) Thomas Garnier <thgarnie@google.com> - 2016-05-12 21:30 +0200
[PATCH v5 1/4] x86, boot: Refactor KASLR entropy functions Thomas Garnier <thgarnie@google.com> - 2016-05-12 21:30 +0200
Re: [PATCH v5 1/4] x86, boot: Refactor KASLR entropy functions kbuild test robot <lkp@intel.com> - 2016-05-12 22:30 +0200
[PATCH v5 4/4] x86, boot: Memory hotplug support for KASLR memory randomization Thomas Garnier <thgarnie@google.com> - 2016-05-12 21:30 +0200
[PATCH v5 3/4] x86, boot: Implement ASLR for kernel memory sections (x86_64) Thomas Garnier <thgarnie@google.com> - 2016-05-12 21:30 +0200
Re: [PATCH v5 0/4] x86, boot: KASLR memory randomization Thomas Garnier <thgarnie@google.com> - 2016-05-16 20:30 +0200
Re: [PATCH v5 0/4] x86, boot: KASLR memory randomization Kees Cook <keescook@chromium.org> - 2016-05-17 10:20 +0200
Re: [PATCH v5 0/4] x86, boot: KASLR memory randomization Kees Cook <keescook@chromium.org> - 2016-05-17 21:40 +0200
Re: [PATCH v5 0/4] x86, boot: KASLR memory randomization Kees Cook <keescook@chromium.org> - 2016-05-17 21:40 +0200
csiph-web