Kees Cook
06b32fdb03
lkdtm: Check for SMEP clearing protections
...
This adds an x86-specific test for pinned cr4 bits. A successful test
will validate pinning and check the ROP-style call-middle-of-function
defense, if needed. For example, in the case of native_write_cr4()
looking like this:
ffffffff8171bce0 <native_write_cr4>:
ffffffff8171bce0: 48 8b 35 79 46 f2 00 mov 0xf24679(%rip),%rsi
ffffffff8171bce7: 48 09 f7 or %rsi,%rdi
ffffffff8171bcea: 0f 22 e7 mov %rdi,%cr4
...
ffffffff8171bd5a: c3 retq
The UNSET_SMEP test will jump to ffffffff8171bcea (the mov to cr4)
instead of ffffffff8171bce0 (native_write_cr4() entry) to simulate a
direct-call bypass attempt.
Expected successful results:
# echo UNSET_SMEP > /sys/kernel/debug/provoke-crash/DIRECT
# dmesg
[ 79.594433] lkdtm: Performing direct entry UNSET_SMEP
[ 79.596459] lkdtm: trying to clear SMEP normally
[ 79.598406] lkdtm: ok: SMEP did not get cleared
[ 79.599981] lkdtm: trying to clear SMEP with call gadget
[ 79.601810] ------------[ cut here ]------------
[ 79.603421] Attempt to unpin cr4 bits: 100000; bypass attack?!
...
[ 79.650170] ---[ end trace 2452ca0f6126242e ]---
[ 79.650937] lkdtm: ok: SMEP removal was reverted
Signed-off-by: Kees Cook <keescook@chromium.org >
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2019-06-23 07:05:56 +02:00
..
2019-05-24 17:36:47 +02:00
2019-06-20 07:56:14 +02:00
2019-06-05 17:36:37 +02:00
2019-06-22 11:49:16 +02:00
2019-06-05 17:37:16 +02:00
2019-05-30 11:26:41 -07:00
2019-05-30 11:26:32 -07:00
2019-05-15 08:46:44 -07:00
2019-06-08 13:16:05 -07:00
2019-06-05 17:37:06 +02:00
2019-05-30 11:26:41 -07:00
2019-05-21 11:28:39 +02:00
2019-06-09 09:11:21 +02:00
2019-06-05 17:37:18 +02:00
2019-06-05 17:37:07 +02:00
2019-05-30 11:26:35 -07:00
2019-06-09 09:11:21 +02:00
2019-06-05 17:37:17 +02:00
2019-06-05 17:37:16 +02:00
2019-06-05 17:37:17 +02:00
2019-06-05 17:36:38 +02:00
2019-05-24 17:27:11 +02:00
2019-06-05 17:36:37 +02:00
2019-05-21 10:50:46 +02:00
2019-06-08 12:52:42 -07:00
2019-06-08 12:52:42 -07:00
2019-06-05 17:37:17 +02:00
2019-05-30 11:29:53 -07:00
2019-06-05 17:36:37 +02:00
2019-05-30 11:26:35 -07:00
2019-06-09 09:11:21 +02:00
2019-05-24 17:36:45 +02:00
2019-06-20 10:41:37 +02:00
2019-06-19 19:35:51 +02:00
2019-05-21 10:50:46 +02:00
2019-06-05 17:37:17 +02:00
2019-06-08 12:52:42 -07:00
2019-06-05 17:37:17 +02:00
2019-06-05 17:37:07 +02:00
2019-06-05 17:37:05 +02:00
2019-06-08 12:52:42 -07:00
2019-06-20 08:06:56 +02:00
2019-06-08 12:52:42 -07:00
2019-05-21 10:50:46 +02:00
2019-06-05 17:37:06 +02:00
2019-06-05 17:37:06 +02:00
2019-06-05 17:37:18 +02:00
2019-06-08 12:52:42 -07:00
2019-06-05 17:37:17 +02:00
2019-05-21 10:50:46 +02:00
2019-06-05 17:37:06 +02:00
2019-06-05 17:37:17 +02:00
2019-06-05 17:37:06 +02:00
2019-05-31 08:34:32 -07:00
2019-06-05 17:37:17 +02:00
2019-06-05 17:37:14 +02:00
2019-06-05 17:37:10 +02:00
2019-06-05 17:36:37 +02:00
2019-06-05 17:37:17 +02:00
2019-06-05 17:37:16 +02:00
2019-06-05 17:37:18 +02:00
2019-06-21 16:08:19 +02:00
2019-05-28 09:53:54 +02:00
2019-05-21 10:50:46 +02:00
2019-06-05 17:37:18 +02:00
2019-06-23 07:05:56 +02:00
2019-06-08 12:52:42 -07:00
2019-06-05 17:37:17 +02:00
2019-06-21 15:59:53 +02:00
2019-06-08 12:52:42 -07:00
2019-06-05 17:37:15 +02:00
2019-06-05 17:36:37 +02:00
2019-05-21 10:50:46 +02:00
2019-06-05 17:36:38 +02:00
2019-06-07 14:04:28 -06:00
2019-06-19 19:35:51 +02:00
2019-06-05 17:37:16 +02:00
2019-05-21 10:50:46 +02:00
2019-06-08 12:52:42 -07:00
2019-06-08 12:50:36 -07:00
2019-05-27 10:55:08 +02:00
2019-06-05 17:30:27 +02:00
2019-06-05 17:36:37 +02:00
2019-06-05 17:37:18 +02:00
2019-06-05 17:37:18 +02:00
2019-06-05 17:37:17 +02:00
2019-05-30 11:25:19 -07:00
2019-06-05 17:37:18 +02:00
2019-06-05 17:37:04 +02:00
2019-05-24 17:36:45 +02:00
2019-05-30 11:26:39 -07:00
2019-05-30 11:26:39 -07:00
2019-06-05 17:37:10 +02:00
2019-05-30 11:26:37 -07:00
2019-05-21 10:50:46 +02:00
2019-06-05 17:37:18 +02:00
2019-06-05 17:36:37 +02:00
2019-06-05 17:37:15 +02:00
2019-06-05 17:37:17 +02:00
2019-06-07 09:29:14 -07:00
2019-05-24 17:36:45 +02:00
2019-06-08 12:52:42 -07:00
2019-05-21 10:50:46 +02:00
2019-05-21 10:50:46 +02:00
2019-05-21 10:50:46 +02:00
2019-06-20 10:45:22 +02:00
2019-05-21 10:50:46 +02:00
2019-06-05 17:37:14 +02:00
2019-05-21 10:50:46 +02:00
2019-06-05 17:37:18 +02:00
2019-06-05 17:36:37 +02:00
2019-05-21 10:50:46 +02:00
2019-05-31 08:31:45 -07:00
2019-06-05 17:37:06 +02:00
2019-05-21 10:50:46 +02:00
2019-06-05 17:36:37 +02:00
2019-06-05 17:37:15 +02:00
2019-05-21 10:50:46 +02:00
2019-05-24 17:08:18 +02:00
2019-06-05 17:37:06 +02:00
2019-05-29 13:26:32 -07:00
2019-06-05 17:30:29 +02:00
2019-05-30 11:29:52 -07:00
2019-05-27 11:08:23 -04:00
2019-06-05 17:37:18 +02:00
2019-05-21 10:50:46 +02:00
2019-05-27 11:08:22 -04:00
2019-05-21 10:50:46 +02:00
2019-05-24 17:39:00 +02:00
2019-05-30 11:26:32 -07:00
2019-06-09 09:11:21 +02:00
2019-06-05 17:37:18 +02:00
2019-06-05 17:37:05 +02:00
2019-05-21 10:50:46 +02:00
2019-04-25 21:33:37 +02:00
2019-04-25 21:33:37 +02:00