Benjamin Gray 97228ca375 powerpc/ptrace: Expose HASHKEYR register to ptrace
The HASHKEYR register contains a secret per-process key to enable unique
hashes per process. In general it should not be exposed to userspace
at all and a regular process has no need to know its key.

However, checkpoint restore in userspace (CRIU) functionality requires
that a process be able to set the HASHKEYR of another process, otherwise
existing hashes on the stack would be invalidated by a new random key.

Exposing HASHKEYR in this way also makes it appear in core dumps, which
is a security concern. Multiple threads may share a key, for example
just after a fork() call, where the kernel cannot know if the child is
going to return back along the parent's stack. If such a thread is
coerced into making a core dump, then the HASHKEYR value will be
readable and able to be used against all other threads sharing that key,
effectively undoing any protection offered by hashst/hashchk.

Therefore we expose HASHKEYR to ptrace when CONFIG_CHECKPOINT_RESTORE is
enabled, providing a choice of increased security or migratable ROP
protected processes. This is similar to how ARM exposes its PAC keys.

Signed-off-by: Benjamin Gray <bgray@linux.ibm.com>
Reviewed-by: Russell Currey <ruscur@russell.cc>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20230616034846.311705-8-bgray@linux.ibm.com
2023-06-19 17:36:27 +10:00
..
2021-12-09 22:41:21 +11:00
2022-05-28 11:27:17 -07:00
2022-05-05 22:12:44 +10:00
2022-05-08 22:15:40 +10:00
2022-05-05 22:12:44 +10:00
2022-05-28 11:27:17 -07:00
2022-09-26 23:00:14 +10:00
2020-12-04 01:01:09 +11:00
2022-12-19 07:13:33 -06:00
2022-09-26 23:00:14 +10:00
2021-12-09 22:41:21 +11:00
2022-05-08 22:15:40 +10:00
2022-05-08 22:15:40 +10:00
2022-05-08 22:15:40 +10:00
2022-05-08 22:15:40 +10:00
2022-09-26 20:58:18 +10:00
2023-03-30 23:36:35 +11:00
2022-09-26 23:00:13 +10:00
2022-09-26 22:47:37 +10:00
2022-09-28 19:22:09 +10:00
2021-12-09 22:41:21 +11:00