From: Jason Yan <yanaijie@huawei.com> To: Diana Madalina Craciun <diana.craciun@nxp.com>, "mpe@ellerman.id.au" <mpe@ellerman.id.au>, "linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>, "christophe.leroy@c-s.fr" <christophe.leroy@c-s.fr>, "benh@kernel.crashing.org" <benh@kernel.crashing.org>, "paulus@samba.org" <paulus@samba.org>, "npiggin@gmail.com" <npiggin@gmail.com>, "keescook@chromium.org" <keescook@chromium.org>, "kernel-hardening@lists.openwall.com" <kernel-hardening@lists.openwall.com> Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "wangkefeng.wang@huawei.com" <wangkefeng.wang@huawei.com>, "yebin10@huawei.com" <yebin10@huawei.com>, "thunder.leizhen@huawei.com" <thunder.leizhen@huawei.com>, "jingxiangfeng@huawei.com" <jingxiangfeng@huawei.com>, "fanchengyang@huawei.com" <fanchengyang@huawei.com>, Laurentiu Tudor <laurentiu.tudor@nxp.com> Subject: Re: [RFC PATCH 00/10] implement KASLR for powerpc/fsl_booke/32 Date: Fri, 26 Jul 2019 15:26:12 +0800 Message-ID: <b50275ae-9eb8-11da-248c-1ad7dbf93469@huawei.com> (raw) In-Reply-To: <VI1PR0401MB24632CD6AB1C5EDCFF817705FFC00@VI1PR0401MB2463.eurprd04.prod.outlook.com> On 2019/7/26 15:04, Diana Madalina Craciun wrote: > Hi Jason, > > I have briefly tested yesterday on a P4080 board and did not see any > issues. I do not have much expertise on KASLR, but I will take a look > over the code. > Hi Diana, thanks. Looking forward to your suggestions. > Regards, > Diana > > On 7/25/2019 10:16 AM, Jason Yan wrote: >> Hi all, any comments? >> >> >> On 2019/7/17 16:06, Jason Yan wrote: >>> This series implements KASLR for powerpc/fsl_booke/32, as a security >>> feature that deters exploit attempts relying on knowledge of the location >>> of kernel internals. >>> >>> Since CONFIG_RELOCATABLE has already supported, what we need to do is >>> map or copy kernel to a proper place and relocate. Freescale Book-E >>> parts expect lowmem to be mapped by fixed TLB entries(TLB1). The TLB1 >>> entries are not suitable to map the kernel directly in a randomized >>> region, so we chose to copy the kernel to a proper place and restart to >>> relocate. >>> >>> Entropy is derived from the banner and timer base, which will change every >>> build and boot. This not so much safe so additionally the bootloader may >>> pass entropy via the /chosen/kaslr-seed node in device tree. >>> >>> We will use the first 512M of the low memory to randomize the kernel >>> image. The memory will be split in 64M zones. We will use the lower 8 >>> bit of the entropy to decide the index of the 64M zone. Then we chose a >>> 16K aligned offset inside the 64M zone to put the kernel in. >>> >>> KERNELBASE >>> >>> |--> 64M <--| >>> | | >>> +---------------+ +----------------+---------------+ >>> | |....| |kernel| | | >>> +---------------+ +----------------+---------------+ >>> | | >>> |-----> offset <-----| >>> >>> kimage_vaddr >>> >>> We also check if we will overlap with some areas like the dtb area, the >>> initrd area or the crashkernel area. If we cannot find a proper area, >>> kaslr will be disabled and boot from the original kernel. >>> >>> Jason Yan (10): >>> powerpc: unify definition of M_IF_NEEDED >>> powerpc: move memstart_addr and kernstart_addr to init-common.c >>> powerpc: introduce kimage_vaddr to store the kernel base >>> powerpc/fsl_booke/32: introduce create_tlb_entry() helper >>> powerpc/fsl_booke/32: introduce reloc_kernel_entry() helper >>> powerpc/fsl_booke/32: implement KASLR infrastructure >>> powerpc/fsl_booke/32: randomize the kernel image offset >>> powerpc/fsl_booke/kaslr: clear the original kernel if randomized >>> powerpc/fsl_booke/kaslr: support nokaslr cmdline parameter >>> powerpc/fsl_booke/kaslr: dump out kernel offset information on panic >>> >>> arch/powerpc/Kconfig | 11 + >>> arch/powerpc/include/asm/nohash/mmu-book3e.h | 10 + >>> arch/powerpc/include/asm/page.h | 7 + >>> arch/powerpc/kernel/Makefile | 1 + >>> arch/powerpc/kernel/early_32.c | 2 +- >>> arch/powerpc/kernel/exceptions-64e.S | 10 - >>> arch/powerpc/kernel/fsl_booke_entry_mapping.S | 23 +- >>> arch/powerpc/kernel/head_fsl_booke.S | 61 ++- >>> arch/powerpc/kernel/kaslr_booke.c | 439 ++++++++++++++++++ >>> arch/powerpc/kernel/machine_kexec.c | 1 + >>> arch/powerpc/kernel/misc_64.S | 5 - >>> arch/powerpc/kernel/setup-common.c | 23 + >>> arch/powerpc/mm/init-common.c | 7 + >>> arch/powerpc/mm/init_32.c | 5 - >>> arch/powerpc/mm/init_64.c | 5 - >>> arch/powerpc/mm/mmu_decl.h | 10 + >>> arch/powerpc/mm/nohash/fsl_booke.c | 8 +- >>> 17 files changed, 580 insertions(+), 48 deletions(-) >>> create mode 100644 arch/powerpc/kernel/kaslr_booke.c >>> >> > > > . >
next prev parent reply index Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-07-17 8:06 Jason Yan 2019-07-17 8:06 ` [RFC PATCH 01/10] powerpc: unify definition of M_IF_NEEDED Jason Yan 2019-07-29 10:59 ` Christophe Leroy 2019-07-17 8:06 ` [RFC PATCH 02/10] powerpc: move memstart_addr and kernstart_addr to init-common.c Jason Yan 2019-07-29 11:00 ` Christophe Leroy 2019-07-29 14:31 ` Christoph Hellwig 2019-07-30 0:47 ` Jason Yan 2019-07-17 8:06 ` [RFC PATCH 03/10] powerpc: introduce kimage_vaddr to store the kernel base Jason Yan 2019-07-29 11:00 ` Christophe Leroy 2019-07-29 14:32 ` Christoph Hellwig 2019-07-17 8:06 ` [RFC PATCH 04/10] powerpc/fsl_booke/32: introduce create_tlb_entry() helper Jason Yan 2019-07-29 11:05 ` Christophe Leroy 2019-07-29 13:26 ` Jason Yan 2019-07-17 8:06 ` [RFC PATCH 05/10] powerpc/fsl_booke/32: introduce reloc_kernel_entry() helper Jason Yan 2019-07-29 11:08 ` Christophe Leroy 2019-07-29 13:35 ` Jason Yan 2019-07-17 8:06 ` [RFC PATCH 06/10] powerpc/fsl_booke/32: implement KASLR infrastructure Jason Yan 2019-07-29 11:16 ` Christophe Leroy 2019-07-17 8:06 ` [RFC PATCH 07/10] powerpc/fsl_booke/32: randomize the kernel image offset Jason Yan 2019-07-29 11:33 ` Christophe Leroy 2019-07-29 13:53 ` Jason Yan 2019-07-17 8:06 ` [RFC PATCH 08/10] powerpc/fsl_booke/kaslr: clear the original kernel if randomized Jason Yan 2019-07-29 11:19 ` Christophe Leroy 2019-07-29 13:43 ` Jason Yan 2019-07-17 8:06 ` [RFC PATCH 09/10] powerpc/fsl_booke/kaslr: support nokaslr cmdline parameter Jason Yan 2019-07-29 11:38 ` Christophe Leroy 2019-07-29 14:04 ` Jason Yan 2019-07-17 8:06 ` [RFC PATCH 10/10] powerpc/fsl_booke/kaslr: dump out kernel offset information on panic Jason Yan 2019-07-29 11:43 ` Christophe Leroy 2019-07-29 14:08 ` Jason Yan 2019-07-25 7:16 ` [RFC PATCH 00/10] implement KASLR for powerpc/fsl_booke/32 Jason Yan 2019-07-25 19:58 ` Kees Cook 2019-07-26 7:20 ` Jason Yan 2019-07-26 16:15 ` Kees Cook 2019-07-26 7:04 ` Diana Madalina Craciun 2019-07-26 7:26 ` Jason Yan [this message] 2019-07-29 14:30 ` Diana Madalina Craciun
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=b50275ae-9eb8-11da-248c-1ad7dbf93469@huawei.com \ --to=yanaijie@huawei.com \ --cc=benh@kernel.crashing.org \ --cc=christophe.leroy@c-s.fr \ --cc=diana.craciun@nxp.com \ --cc=fanchengyang@huawei.com \ --cc=jingxiangfeng@huawei.com \ --cc=keescook@chromium.org \ --cc=kernel-hardening@lists.openwall.com \ --cc=laurentiu.tudor@nxp.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linuxppc-dev@lists.ozlabs.org \ --cc=mpe@ellerman.id.au \ --cc=npiggin@gmail.com \ --cc=paulus@samba.org \ --cc=thunder.leizhen@huawei.com \ --cc=wangkefeng.wang@huawei.com \ --cc=yebin10@huawei.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Kernel-hardening Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/kernel-hardening/0 kernel-hardening/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 kernel-hardening kernel-hardening/ https://lore.kernel.org/kernel-hardening \ kernel-hardening@lists.openwall.com public-inbox-index kernel-hardening Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/com.openwall.lists.kernel-hardening AGPL code for this site: git clone https://public-inbox.org/public-inbox.git