Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1200932
| From | James Hogan <james.hogan@imgtec.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 1/7] test_user_copy: Check legit kernel accesses |
| Date | 2015-08-05 18:00 +0200 |
| Message-ID | <pU9gK-5S2-5@gated-at.bofh.it> (permalink) |
| References | <pU974-5Ga-7@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Check that the use of the user accessors for accessing kernel memory succeed as expected after set_fs(get_ds()) is used to increases the address limit, as used by the kernel to directly invoke system call code with kernel pointers. The tests are basically the same as the tests normally expected to be treated as invalid, but without any user addresses (no reversed copies), and with the result inverted such that they should succeed instead. New tests: - legitimate all-kernel copy_from_user - legitimate all-kernel copy_to_user - legitimate kernel get_user - legitimate kernel put_user Signed-off-by: James Hogan <james.hogan@imgtec.com> Cc: Kees Cook <keescook@chromium.org> Cc: Andrew Morton <akpm@linux-foundation.org> --- lib/test_user_copy.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/lib/test_user_copy.c b/lib/test_user_copy.c index 0ecef3e4690e..445ca92b0b80 100644 --- a/lib/test_user_copy.c +++ b/lib/test_user_copy.c @@ -41,6 +41,7 @@ static int __init test_user_copy_init(void) char *bad_usermem; unsigned long user_addr; unsigned long value = 0x5A; + mm_segment_t fs = get_fs(); kmem = kmalloc(PAGE_SIZE * 2, GFP_KERNEL); if (!kmem) @@ -86,6 +87,28 @@ static int __init test_user_copy_init(void) ret |= test(!put_user(value, (unsigned long __user *)kmem), "illegal put_user passed"); + /* + * Test access to kernel memory by adjusting address limit. + * This is used by the kernel to invoke system calls with kernel + * pointers. + */ + set_fs(get_ds()); + + /* Legitimate usage: none of these should fail. */ + ret |= test(copy_from_user(kmem, (char __user *)(kmem + PAGE_SIZE), + PAGE_SIZE), + "legitimate all-kernel copy_from_user failed"); + ret |= test(copy_to_user((char __user *)kmem, kmem + PAGE_SIZE, + PAGE_SIZE), + "legitimate all-kernel copy_to_user failed"); + ret |= test(get_user(value, (unsigned long __user *)kmem), + "legitimate kernel get_user failed"); + ret |= test(put_user(value, (unsigned long __user *)kmem), + "legitimate kernel put_user failed"); + + /* Restore previous address limit. */ + set_fs(fs); + vm_munmap(user_addr, PAGE_SIZE * 2); kfree(kmem); -- 2.3.6 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 0/7] test_user_copy improvements James Hogan <james.hogan@imgtec.com> - 2015-08-05 17:50 +0200
[PATCH 7/7] test_user_copy: Check user checksum functions James Hogan <james.hogan@imgtec.com> - 2015-08-05 17:50 +0200
[PATCH 2/7] test_user_copy: Check unchecked accessors James Hogan <james.hogan@imgtec.com> - 2015-08-05 17:50 +0200
[PATCH 3/7] test_user_copy: Check __clear_user()/clear_user() James Hogan <james.hogan@imgtec.com> - 2015-08-05 18:00 +0200
[PATCH 1/7] test_user_copy: Check legit kernel accesses James Hogan <james.hogan@imgtec.com> - 2015-08-05 18:00 +0200
[PATCH 6/7] test_user_copy: Check user string accessors James Hogan <james.hogan@imgtec.com> - 2015-08-05 18:00 +0200
[PATCH 4/7] test_user_copy: Check __copy_in_user()/copy_in_user() James Hogan <james.hogan@imgtec.com> - 2015-08-05 18:00 +0200
[PATCH 5/7] test_user_copy: Check __copy_{to,from}_user_inatomic() James Hogan <james.hogan@imgtec.com> - 2015-08-05 18:00 +0200
Re: [PATCH 0/7] test_user_copy improvements Kees Cook <keescook@chromium.org> - 2015-08-05 22:30 +0200
Re: [PATCH 0/7] test_user_copy improvements James Hogan <james.hogan@imgtec.com> - 2015-08-06 18:30 +0200
Re: [PATCH 0/7] test_user_copy improvements Guenter Roeck <linux@roeck-us.net> - 2015-08-06 12:00 +0200
Re: [PATCH 0/7] test_user_copy improvements James Hogan <james.hogan@imgtec.com> - 2015-08-06 12:10 +0200
Re: [PATCH 0/7] test_user_copy improvements James Hogan <james.hogan@imgtec.com> - 2015-08-06 17:10 +0200
csiph-web