2019-06-04 10:11:33 +02:00
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2019-09-17 11:00:25 -07:00
|
|
|
|
2022-11-01 22:14:09 +01:00
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
2017-02-02 17:54:15 +01:00
|
|
|
|
2017-02-08 18:51:36 +01:00
|
|
|
|
|
|
|
|
|
2017-02-16 18:29:15 +00:00
|
|
|
|
2022-01-10 23:15:28 +00:00
|
|
|
|
2018-07-03 15:43:08 -04:00
|
|
|
|
|
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
2021-10-04 14:45:56 +01:00
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-02-16 12:05:28 -08:00
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2020-08-11 18:33:23 -07:00
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-02-16 12:05:28 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-01-10 14:22:38 -08:00
|
|
|
|
2018-01-10 15:17:01 -08:00
|
|
|
|
|
|
|
|
|
2018-01-10 14:22:38 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-01-10 15:17:01 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-01-10 14:22:38 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
2018-01-10 14:22:38 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-01-10 14:48:22 -08:00
|
|
|
|
|
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
2018-01-10 14:48:22 -08:00
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-22 11:53:59 -05:00
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-01-10 14:48:22 -08:00
|
|
|
|
|
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-01-10 14:48:22 -08:00
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-01-10 13:35:45 -08:00
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
2018-01-10 14:48:22 -08:00
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
2017-01-10 13:35:45 -08:00
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
2018-01-10 14:48:22 -08:00
|
|
|
|
|
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
2018-01-10 14:48:22 -08:00
|
|
|
|
|
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
2019-08-13 15:37:37 -07:00
|
|
|
|
2018-01-10 14:48:22 -08:00
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-01-10 14:48:22 -08:00
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
2018-01-10 14:48:22 -08:00
|
|
|
|
|
|
|
|
|
2016-09-07 09:54:34 -07:00
|
|
|
|
2022-06-16 16:36:17 +02:00
|
|
|
|
2022-06-12 22:32:27 +01:00
|
|
|
|
2021-10-04 14:45:56 +01:00
|
|
|
|
2016-09-07 09:54:34 -07:00
|
|
|
|
2022-01-10 23:15:27 +00:00
|
|
|
|
2022-06-12 22:32:27 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-01-10 23:15:27 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-04-10 19:43:44 +02:00
|
|
|
|
2022-06-12 22:32:26 +01:00
|
|
|
|
2022-01-10 23:15:28 +00:00
|
|
|
|
2022-06-12 22:32:25 +01:00
|
|
|
|
2022-01-10 23:15:28 +00:00
|
|
|
|
|
|
|
|
|
2022-06-12 22:32:27 +01:00
|
|
|
|
|
|
|
|
|
2022-01-10 23:15:28 +00:00
|
|
|
|
2022-06-12 22:32:27 +01:00
|
|
|
|
2022-01-10 23:15:28 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-05-05 07:10:37 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-01-10 23:15:27 +00:00
|
|
|
|
2016-09-07 09:54:34 -07:00
|
|
|
|
2021-10-04 14:45:56 +01:00
|
|
|
|
2018-01-10 14:48:22 -08:00
|
|
|
|
2021-10-04 14:45:56 +01:00
|
|
|
|
2022-01-10 23:15:29 +00:00
|
|
|
|
2022-06-12 22:32:27 +01:00
|
|
|
|
|
|
|
|
|
2022-01-10 23:15:29 +00:00
|
|
|
|
2018-01-10 14:48:22 -08:00
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
2018-07-03 15:43:08 -04:00
|
|
|
|
|
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mm/usercopy.c: no check page span for stack objects
It is easy to trigger this with CONFIG_HARDENED_USERCOPY_PAGESPAN=y,
usercopy: Kernel memory overwrite attempt detected to spans multiple pages (offset 0, size 23)!
kernel BUG at mm/usercopy.c:102!
For example,
print_worker_info
char name[WQ_NAME_LEN] = { };
char desc[WORKER_DESC_LEN] = { };
probe_kernel_read(name, wq->name, sizeof(name) - 1);
probe_kernel_read(desc, worker->desc, sizeof(desc) - 1);
__copy_from_user_inatomic
check_object_size
check_heap_object
check_page_span
This is because on-stack variables could cross PAGE_SIZE boundary, and
failed this check,
if (likely(((unsigned long)ptr & (unsigned long)PAGE_MASK) ==
((unsigned long)end & (unsigned long)PAGE_MASK)))
ptr = FFFF889007D7EFF8
end = FFFF889007D7F00E
Hence, fix it by checking if it is a stack object first.
[keescook@chromium.org: improve comments after reorder]
Link: http://lkml.kernel.org/r/20190103165151.GA32845@beast
Link: http://lkml.kernel.org/r/20181231030254.99441-1-cai@lca.pw
Signed-off-by: Qian Cai <cai@lca.pw>
Signed-off-by: Kees Cook <keescook@chromium.org>
Acked-by: Kees Cook <keescook@chromium.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2019-01-08 15:23:04 -08:00
|
|
|
|
|
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-07-03 15:43:08 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-01-10 14:48:22 -08:00
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-02-16 12:05:28 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
mm/usercopy.c: no check page span for stack objects
It is easy to trigger this with CONFIG_HARDENED_USERCOPY_PAGESPAN=y,
usercopy: Kernel memory overwrite attempt detected to spans multiple pages (offset 0, size 23)!
kernel BUG at mm/usercopy.c:102!
For example,
print_worker_info
char name[WQ_NAME_LEN] = { };
char desc[WORKER_DESC_LEN] = { };
probe_kernel_read(name, wq->name, sizeof(name) - 1);
probe_kernel_read(desc, worker->desc, sizeof(desc) - 1);
__copy_from_user_inatomic
check_object_size
check_heap_object
check_page_span
This is because on-stack variables could cross PAGE_SIZE boundary, and
failed this check,
if (likely(((unsigned long)ptr & (unsigned long)PAGE_MASK) ==
((unsigned long)end & (unsigned long)PAGE_MASK)))
ptr = FFFF889007D7EFF8
end = FFFF889007D7F00E
Hence, fix it by checking if it is a stack object first.
[keescook@chromium.org: improve comments after reorder]
Link: http://lkml.kernel.org/r/20190103165151.GA32845@beast
Link: http://lkml.kernel.org/r/20181231030254.99441-1-cai@lca.pw
Signed-off-by: Qian Cai <cai@lca.pw>
Signed-off-by: Kees Cook <keescook@chromium.org>
Acked-by: Kees Cook <keescook@chromium.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2019-01-08 15:23:04 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
2018-01-10 14:48:22 -08:00
|
|
|
|
2016-06-07 11:05:33 -07:00
|
|
|
|
|
|
|
|
|
2018-07-03 15:43:08 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-11-01 22:14:09 +01:00
|
|
|
|
2022-03-22 14:47:52 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-07-03 15:43:08 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|