KASAN: use-after-free Write in tls_push_record

14 views
Skip to first unread message

syzbot

unread,
Apr 21, 2019, 11:31:06 AM4/21/19
to syzkaller...@googlegroups.com
Hello,

syzbot found the following crash on:

HEAD commit: c98875d9 Linux 4.19.36
git tree: linux-4.19.y
console output: https://syzkaller.appspot.com/x/log.txt?x=17e33690a00000
kernel config: https://syzkaller.appspot.com/x/.config?x=5e40ac5fbcc6366d
dashboard link: https://syzkaller.appspot.com/bug?extid=e0b2e2b3ec4080cdee71
compiler: gcc (GCC) 9.0.0 20181231 (experimental)

Unfortunately, I don't have any reproducer for this crash yet.

IMPORTANT: if you fix the bug, please add the following tag to the commit:
Reported-by: syzbot+e0b2e2...@syzkaller.appspotmail.com

RDX: fffffffffffffee0 RSI: 00000000200005c0 RDI: 0000000000000003
RBP: 000000000073bf00 R08: 0000000000000000 R09: 00000000000000b6
R10: 0000000000000000 R11: 0000000000000246 R12: 00007fda681516d4
R13: 00000000004c659f R14: 00000000004daf70 R15: 0000000000000004
==================================================================
BUG: KASAN: use-after-free in tls_fill_prepend include/net/tls.h:368
[inline]
BUG: KASAN: use-after-free in tls_push_record+0x1035/0x13b0
net/tls/tls_sw.c:220
Write of size 1 at addr ffff888053ab0000 by task syz-executor.3/21270

CPU: 0 PID: 21270 Comm: syz-executor.3 Not tainted 4.19.36 #4
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0x172/0x1f0 lib/dump_stack.c:113
print_address_description.cold+0x7c/0x20d mm/kasan/report.c:256
kasan_report_error mm/kasan/report.c:354 [inline]
kasan_report mm/kasan/report.c:412 [inline]
kasan_report.cold+0x8c/0x2ba mm/kasan/report.c:396
__asan_report_store1_noabort+0x17/0x20 mm/kasan/report.c:435
tls_fill_prepend include/net/tls.h:368 [inline]
tls_push_record+0x1035/0x13b0 net/tls/tls_sw.c:220
tls_sw_push_pending_record+0x23/0x30 net/tls/tls_sw.c:257
tls_handle_open_record net/tls/tls_main.c:156 [inline]
tls_sk_proto_close+0x5c5/0xaa0 net/tls/tls_main.c:271
inet_release+0x105/0x1f0 net/ipv4/af_inet.c:428
inet6_release+0x53/0x80 net/ipv6/af_inet6.c:472
__sock_release+0xd3/0x2b0 net/socket.c:579
sock_close+0x1b/0x30 net/socket.c:1140
__fput+0x2df/0x8b0 fs/file_table.c:278
____fput+0x16/0x20 fs/file_table.c:309
task_work_run+0x14a/0x1c0 kernel/task_work.c:113
tracehook_notify_resume include/linux/tracehook.h:193 [inline]
exit_to_usermode_loop+0x273/0x2c0 arch/x86/entry/common.c:166
prepare_exit_to_usermode arch/x86/entry/common.c:197 [inline]
syscall_return_slowpath arch/x86/entry/common.c:268 [inline]
do_syscall_64+0x52d/0x610 arch/x86/entry/common.c:293
entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x4129e1
Code: 75 14 b8 03 00 00 00 0f 05 48 3d 01 f0 ff ff 0f 83 e4 1a 00 00 c3 48
83 ec 08 e8 0a fc ff ff 48 89 04 24 b8 03 00 00 00 0f 05 <48> 8b 3c 24 48
89 c2 e8 53 fc ff ff 48 89 d0 48 83 c4 08 48 3d 01
RSP: 002b:00007fff0ba20d30 EFLAGS: 00000293 ORIG_RAX: 0000000000000003
RAX: 0000000000000000 RBX: 0000000000000004 RCX: 00000000004129e1
RDX: 0000001b31c20000 RSI: 0000000000000000 RDI: 0000000000000003
RBP: 000000000073c900 R08: 00000000b0e0f1d3 R09: 00000000b0e0f1d7
R10: 00007fff0ba20e00 R11: 0000000000000293 R12: 0000000000000001
R13: 000000000073c900 R14: 00000000000810ad R15: 000000000073bf0c

The buggy address belongs to the page:
page:ffffea00014eac00 count:0 mapcount:-128 mapping:0000000000000000
index:0x0
flags: 0x1fffc0000000000()
raw: 01fffc0000000000 ffffea0001f6ca08 ffffea00024eac08 0000000000000000
raw: 0000000000000000 0000000000000003 00000000ffffff7f 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
ffff888053aaff00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
ffff888053aaff80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
> ffff888053ab0000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
^
ffff888053ab0080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ffff888053ab0100: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
==================================================================


---
This bug is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzk...@googlegroups.com.

syzbot will keep track of this bug report. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

syzbot

unread,
Apr 21, 2019, 12:38:05 PM4/21/19
to syzkaller...@googlegroups.com
syzbot has found a reproducer for the following crash on:

HEAD commit: c98875d9 Linux 4.19.36
git tree: linux-4.19.y
console output: https://syzkaller.appspot.com/x/log.txt?x=10429a90a00000
kernel config: https://syzkaller.appspot.com/x/.config?x=5e40ac5fbcc6366d
dashboard link: https://syzkaller.appspot.com/bug?extid=e0b2e2b3ec4080cdee71
compiler: gcc (GCC) 9.0.0 20181231 (experimental)
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=13a47a90a00000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=15ce3b6b200000

IMPORTANT: if you fix the bug, please add the following tag to the commit:
Reported-by: syzbot+e0b2e2...@syzkaller.appspotmail.com

RDX: fffffffffffffee0 RSI: 00000000200005c0 RDI: 0000000000000003
RBP: 00000000006dac20 R08: 0000000000000000 R09: 00000000000000b6
R10: 0000000000000000 R11: 0000000000000246 R12: 00000000006dac2c
R13: 00007faec64b7d90 R14: 0000000000000004 R15: 20c49ba5e353f7cf
==================================================================
BUG: KASAN: use-after-free in tls_fill_prepend include/net/tls.h:368
[inline]
BUG: KASAN: use-after-free in tls_push_record+0x1035/0x13b0
net/tls/tls_sw.c:220
Write of size 1 at addr ffff8880858e0000 by task syz-executor095/7973

CPU: 0 PID: 7973 Comm: syz-executor095 Not tainted 4.19.36 #4
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0x172/0x1f0 lib/dump_stack.c:113
print_address_description.cold+0x7c/0x20d mm/kasan/report.c:256
kasan_report_error mm/kasan/report.c:354 [inline]
kasan_report mm/kasan/report.c:412 [inline]
kasan_report.cold+0x8c/0x2ba mm/kasan/report.c:396
__asan_report_store1_noabort+0x17/0x20 mm/kasan/report.c:435
tls_fill_prepend include/net/tls.h:368 [inline]
tls_push_record+0x1035/0x13b0 net/tls/tls_sw.c:220
tls_sw_push_pending_record+0x23/0x30 net/tls/tls_sw.c:257
tls_handle_open_record net/tls/tls_main.c:156 [inline]
tls_sk_proto_close+0x5c5/0xaa0 net/tls/tls_main.c:271
inet_release+0x105/0x1f0 net/ipv4/af_inet.c:428
inet6_release+0x53/0x80 net/ipv6/af_inet6.c:472
__sock_release+0xd3/0x2b0 net/socket.c:579
sock_close+0x1b/0x30 net/socket.c:1140
__fput+0x2df/0x8b0 fs/file_table.c:278
____fput+0x16/0x20 fs/file_table.c:309
task_work_run+0x14a/0x1c0 kernel/task_work.c:113
exit_task_work include/linux/task_work.h:22 [inline]
do_exit+0x933/0x2fa0 kernel/exit.c:876
do_group_exit+0x135/0x370 kernel/exit.c:979
get_signal+0x399/0x1d50 kernel/signal.c:2572
do_signal+0x95/0x1950 arch/x86/kernel/signal.c:816
exit_to_usermode_loop+0x244/0x2c0 arch/x86/entry/common.c:162
prepare_exit_to_usermode arch/x86/entry/common.c:197 [inline]
syscall_return_slowpath arch/x86/entry/common.c:268 [inline]
do_syscall_64+0x52d/0x610 arch/x86/entry/common.c:293
entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x445c49
Code: Bad RIP value.
RSP: 002b:00007faec64b7d78 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
RAX: 0000000000004000 RBX: 00000000006dac28 RCX: 0000000000445c49
RDX: fffffffffffffee0 RSI: 00000000200005c0 RDI: 0000000000000003
RBP: 00000000006dac20 R08: 0000000000000000 R09: 00000000000000b6
R10: 0000000000000000 R11: 0000000000000246 R12: 00000000006dac2c
R13: 00007faec64b7d90 R14: 0000000000000004 R15: 20c49ba5e353f7cf

The buggy address belongs to the page:
page:ffffea0002163800 count:0 mapcount:-128 mapping:0000000000000000
index:0x0
flags: 0x1fffc0000000000()
raw: 01fffc0000000000 ffffea00021a2a08 ffff88812fffc878 0000000000000000
raw: 0000000000000000 0000000000000003 00000000ffffff7f 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
ffff8880858dff00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
ffff8880858dff80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
> ffff8880858e0000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
^
ffff8880858e0080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ffff8880858e0100: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
==================================================================

Reply all
Reply to author
Forward
0 new messages