Thread (1 message) 1 message, 1 author, 2018-02-07

KASAN: use-after-free Read in inet_shutdown

From: syzbot <hidden>
Date: 2018-02-07 15:31:04
Also in: lkml

Hello,

syzbot has tested the proposed patch but the reproducer still triggered crash:
KASAN: use-after-free Read in l2tp_tunnel_del_work

l2tp_core: tunl 3: fd 0 wrong protocol, got 1, expected 17
==================================================================
BUG: KASAN: use-after-free in l2tp_tunnel_del_work+0x22e/0x240 net/l2tp/l2tp_core.c:1292
Read of size 8 at addr ffff8801cdbf2520 by task kworker/u4:14/5459

CPU: 1 PID: 5459 Comm: kworker/u4:14 Not tainted 4.15.0+ #35
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Workqueue: l2tp l2tp_tunnel_del_work
Call Trace:
 __dump_stack lib/dump_stack.c:17 [inline]
 dump_stack+0x194/0x257 lib/dump_stack.c:53
 print_address_description+0x73/0x250 mm/kasan/report.c:252
 kasan_report_error mm/kasan/report.c:351 [inline]
 kasan_report+0x25b/0x340 mm/kasan/report.c:409
 __asan_report_load8_noabort+0x14/0x20 mm/kasan/report.c:430
 l2tp_tunnel_del_work+0x22e/0x240 net/l2tp/l2tp_core.c:1292
 process_one_work+0xbbf/0x1af0 kernel/workqueue.c:2113
 worker_thread+0x223/0x1990 kernel/workqueue.c:2247
 kthread+0x33c/0x400 kernel/kthread.c:238
 ret_from_fork+0x3a/0x50 arch/x86/entry/entry_64.S:542

Allocated by task 13247:
 save_stack+0x43/0xd0 mm/kasan/kasan.c:447
 set_track mm/kasan/kasan.c:459 [inline]
 kasan_kmalloc+0xad/0xe0 mm/kasan/kasan.c:551
 kasan_slab_alloc+0x12/0x20 mm/kasan/kasan.c:489
 kmem_cache_alloc+0x12e/0x760 mm/slab.c:3541
 sock_alloc_inode+0x70/0x300 net/socket.c:244
 alloc_inode+0x65/0x180 fs/inode.c:209
 new_inode_pseudo+0x69/0x190 fs/inode.c:891
 sock_alloc+0x41/0x270 net/socket.c:565
 __sock_create+0x148/0x850 net/socket.c:1249
 sock_create net/socket.c:1325 [inline]
 SYSC_socket net/socket.c:1355 [inline]
 SyS_socket+0xeb/0x1d0 net/socket.c:1335
 entry_SYSCALL_64_fastpath+0x29/0xa0

Freed by task 13264:
 save_stack+0x43/0xd0 mm/kasan/kasan.c:447
 set_track mm/kasan/kasan.c:459 [inline]
 kasan_slab_free+0x71/0xc0 mm/kasan/kasan.c:524
 __cache_free mm/slab.c:3485 [inline]
 kmem_cache_free+0x83/0x2a0 mm/slab.c:3743
 sock_destroy_inode+0x56/0x70 net/socket.c:274
 destroy_inode+0x15d/0x200 fs/inode.c:266
 evict+0x57e/0x920 fs/inode.c:571
 iput_final fs/inode.c:1516 [inline]
 iput+0x7b9/0xaf0 fs/inode.c:1543
 dentry_unlink_inode+0x4b0/0x5e0 fs/dcache.c:371
 __dentry_kill+0x3de/0x700 fs/dcache.c:575
 dentry_kill fs/dcache.c:616 [inline]
 dput.part.21+0x6fb/0x830 fs/dcache.c:826
 dput+0x1f/0x30 fs/dcache.c:790
 __fput+0x51c/0x7e0 fs/file_table.c:227
 ____fput+0x15/0x20 fs/file_table.c:243
 task_work_run+0x199/0x270 kernel/task_work.c:113
 tracehook_notify_resume include/linux/tracehook.h:191 [inline]
 exit_to_usermode_loop+0x275/0x2f0 arch/x86/entry/common.c:165
 prepare_exit_to_usermode arch/x86/entry/common.c:195 [inline]
 syscall_return_slowpath+0x490/0x550 arch/x86/entry/common.c:264
 entry_SYSCALL_64_fastpath+0x9e/0xa0

The buggy address belongs to the object at ffff8801cdbf2500
 which belongs to the cache sock_inode_cache of size 992
The buggy address is located 32 bytes inside of
 992-byte region [ffff8801cdbf2500, ffff8801cdbf28e0)
The buggy address belongs to the page:
page:ffffea000736fc80 count:1 mapcount:0 mapping:ffff8801cdbf2080 index:0xffff8801cdbf2ffd
flags: 0x2fffc0000000100(slab)
raw: 02fffc0000000100 ffff8801cdbf2080 ffff8801cdbf2ffd 0000000100000003
raw: ffffea0006eb0420 ffffea000736fee0 ffff8801d9fea380 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
 ffff8801cdbf2400: fb fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc
 ffff8801cdbf2480: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
ffff8801cdbf2500: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                               ^
 ffff8801cdbf2580: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ffff8801cdbf2600: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
==================================================================


Tested on https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git/master commit
617aebe6a97efa539cc4b8a52adccd89596e6be0 (Sun Feb 4 00:25:42 2018 +0000)
Merge tag 'usercopy-v4.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux

compiler: gcc (GCC) 7.1.1 20170620
Patch is attached.
Kernel config is attached.
Raw console output is attached.

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help