lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <ZhgjoyObf+nMihA4@debug.ba.rivosinc.com>
Date: Thu, 11 Apr 2024 10:53:39 -0700
From: Deepak Gupta <debug@...osinc.com>
To: Sami Tolvanen <samitolvanen@...gle.com>
Cc: linux-riscv@...ts.infradead.org, linux-kernel@...r.kernel.org,
	llvm@...ts.linux.dev, paul.walmsley@...ive.com, palmer@...belt.com,
	aou@...s.berkeley.edu, nathan@...nel.org, ndesaulniers@...gle.com,
	morbo@...gle.com, justinstitt@...gle.com, andy.chiu@...ive.com,
	hankuan.chen@...ive.com, guoren@...nel.org, greentime.hu@...ive.com,
	cleger@...osinc.com, apatel@...tanamicro.com,
	ajones@...tanamicro.com, conor.dooley@...rochip.com,
	mchitale@...tanamicro.com, dbarboza@...tanamicro.com,
	waylingii@...il.com, sameo@...osinc.com, alexghiti@...osinc.com,
	akpm@...ux-foundation.org, shikemeng@...weicloud.com,
	rppt@...nel.org, charlie@...osinc.com, xiao.w.wang@...el.com,
	willy@...radead.org, jszhang@...nel.org, leobras@...hat.com,
	songshuaishuai@...ylab.org, haxel@....de, samuel.holland@...ive.com,
	namcaov@...il.com, bjorn@...osinc.com, cuiyunhui@...edance.com,
	wangkefeng.wang@...wei.com, falcon@...ylab.org,
	viro@...iv.linux.org.uk, bhe@...hat.com, chenjiahao16@...wei.com,
	hca@...ux.ibm.com, arnd@...db.de, kent.overstreet@...ux.dev,
	boqun.feng@...il.com, oleg@...hat.com, paulmck@...nel.org,
	broonie@...nel.org, rick.p.edgecombe@...el.com
Subject: Re: [RFC PATCH 02/12] riscv: add landing pad for asm routines.

On Thu, Apr 11, 2024 at 05:15:17PM +0000, Sami Tolvanen wrote:
>On Tue, Apr 9, 2024 at 6:12 AM Deepak Gupta <debug@...osinc.com> wrote:
>>
>> SYM_* macros are used to define assembly routines. In this patch series,
>> re-define those macros in risc-v arch specific include file to include
>> a landing pad instruction at the beginning. This is done only when the
>> compiler flag for landing pad is enabled (i.e. __riscv_zicfilp).
>>
>> Signed-off-by: Deepak Gupta <debug@...osinc.com>
>> ---
>>  arch/riscv/include/asm/linkage.h | 42 ++++++++++++++++++++++++++++++++
>>  1 file changed, 42 insertions(+)
>>
>> diff --git a/arch/riscv/include/asm/linkage.h b/arch/riscv/include/asm/linkage.h
>> index 9e88ba23cd2b..bb43ae7dadeb 100644
>> --- a/arch/riscv/include/asm/linkage.h
>> +++ b/arch/riscv/include/asm/linkage.h
>> @@ -6,7 +6,49 @@
>>  #ifndef _ASM_RISCV_LINKAGE_H
>>  #define _ASM_RISCV_LINKAGE_H
>>
>> +#ifdef __ASSEMBLY__
>> +#include <asm/assembler.h>
>> +#endif
>> +
>>  #define __ALIGN                .balign 4
>>  #define __ALIGN_STR    ".balign 4"
>>
>> +#ifdef __riscv_zicfilp
>> +/*
>> + * A landing pad instruction is needed at start of asm routines
>> + * re-define macros for asm routines to have a landing pad at
>> + * the beginning of function. Currently use label value of 0x1.
>> + * Eventually, label should be calculated as a hash over function
>> + * signature.
>> + */
>
>I haven't seen the compiler implementation for fine-grained Zicfilp
>yet, but in the kernel at least, this would ideally reuse as much of
>the KCFI plumbing as possible. For example, since only C code has type
>information, we left the type hash computation for the compiler, which
>allows assembly functions to just reference the appropriate
>__kcfi_typeid_* symbol.

Fine-grained compiler support hasn't made it in yet.

For reference, compiler that I've been using
https://github.com/sifive/riscv-gnu-toolchain/tree/cfi-dev

Honestly speaking, I didn't realize that kcfi plumbing has made it into
riscv as well. I realized that just after sending the patches.

In principle, I agree it should converge with software based kcfi scheme
as much as possible. However blocker that I see is `hash` is placed just
before function. This breaks for code mapped as execute only scenarios.
And ideally would like to have immediates at callsites instead of loads
(purely perf reason and not security).

But yes in next version, I'll take a look and try to converge as much as
possible.

>
>Sami

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ