KASAN: use-after-free Read in tcp_connect

25 views
Skip to first unread message

syzbot

unread,
Apr 11, 2019, 4:44:32 AM4/11/19
to syzkaller-a...@googlegroups.com
Hello,

syzbot found the following crash on:

HEAD commit: 70c65e47 Merge 4.9.103 into android-4.9
git tree: android-4.9
console output: https://syzkaller.appspot.com/x/log.txt?x=12e030d7800000
kernel config: https://syzkaller.appspot.com/x/.config?x=6371d3be19f18973
dashboard link: https://syzkaller.appspot.com/bug?extid=75ab688fd052f6ffbefd
compiler: gcc (GCC) 8.0.1 20180413 (experimental)
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=12e054b7800000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=16351cb7800000

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

IPv6: ADDRCONF(NETDEV_UP): veth0: link is not ready
IPv6: ADDRCONF(NETDEV_UP): veth1: link is not ready
IPv6: ADDRCONF(NETDEV_CHANGE): veth1: link becomes ready
IPv6: ADDRCONF(NETDEV_CHANGE): veth0: link becomes ready
==================================================================
BUG: KASAN: use-after-free in tcp_connect+0x2633/0x2fa0
net/ipv4/tcp_output.c:3401
Read of size 4 at addr ffff8801d832e7a8 by task syz-executor725/4132

CPU: 1 PID: 4132 Comm: syz-executor725 Not tainted 4.9.103-g70c65e4 #34
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
Google 01/01/2011
ffff8801b9bb7930 ffffffff81eb3469 ffffea000760cb80 ffff8801d832e7a8
0000000000000000 ffff8801d832e7a8 ffff8801bb339c18 ffff8801b9bb7968
ffffffff815676bb ffff8801d832e7a8 0000000000000004 0000000000000000
Call Trace:
[<ffffffff81eb3469>] __dump_stack lib/dump_stack.c:15 [inline]
[<ffffffff81eb3469>] dump_stack+0xc1/0x128 lib/dump_stack.c:51
[<ffffffff815676bb>] print_address_description+0x6c/0x234
mm/kasan/report.c:256
[<ffffffff81567ac5>] kasan_report_error mm/kasan/report.c:355 [inline]
[<ffffffff81567ac5>] kasan_report.cold.6+0x242/0x2fe mm/kasan/report.c:412
[<ffffffff8153b724>] __asan_report_load4_noabort+0x14/0x20
mm/kasan/report.c:432
[<ffffffff833acc03>] tcp_connect+0x2633/0x2fa0 net/ipv4/tcp_output.c:3401
[<ffffffff833c2820>] tcp_v4_connect+0x19f0/0x1c20 net/ipv4/tcp_ipv4.c:250
[<ffffffff83421340>] __inet_stream_connect+0x6e0/0xbf0
net/ipv4/af_inet.c:627
[<ffffffff834218a5>] inet_stream_connect+0x55/0xa0 net/ipv4/af_inet.c:691
[<ffffffff83016958>] SYSC_connect+0x1b8/0x300 net/socket.c:1562
[<ffffffff83019224>] SyS_connect+0x24/0x30 net/socket.c:1543
[<ffffffff81006316>] do_syscall_64+0x1a6/0x490 arch/x86/entry/common.c:282
[<ffffffff839f8013>] entry_SYSCALL_64_after_swapgs+0x5d/0xdb

Allocated by task 4131:
save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:57
save_stack+0x43/0xd0 mm/kasan/kasan.c:505
set_track mm/kasan/kasan.c:517 [inline]
kasan_kmalloc+0xc7/0xe0 mm/kasan/kasan.c:609
kasan_slab_alloc+0x12/0x20 mm/kasan/kasan.c:547
slab_post_alloc_hook mm/slab.h:417 [inline]
slab_alloc_node mm/slub.c:2715 [inline]
slab_alloc mm/slub.c:2723 [inline]
kmem_cache_alloc+0xbe/0x290 mm/slub.c:2728
kmem_cache_alloc_node include/linux/slab.h:364 [inline]
__alloc_skb+0xe6/0x600 net/core/skbuff.c:219
alloc_skb_fclone include/linux/skbuff.h:961 [inline]
sk_stream_alloc_skb+0xa3/0x5d0 net/ipv4/tcp.c:828
tcp_sendmsg+0xe57/0x3040 net/ipv4/tcp.c:1230
inet_sendmsg+0x203/0x4d0 net/ipv4/af_inet.c:770
sock_sendmsg_nosec net/socket.c:635 [inline]
sock_sendmsg+0xcc/0x110 net/socket.c:645
SYSC_sendto+0x21c/0x370 net/socket.c:1670
SyS_sendto+0x40/0x50 net/socket.c:1638
do_syscall_64+0x1a6/0x490 arch/x86/entry/common.c:282
entry_SYSCALL_64_after_swapgs+0x5d/0xdb

Freed by task 4132:
save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:57
save_stack+0x43/0xd0 mm/kasan/kasan.c:505
set_track mm/kasan/kasan.c:517 [inline]
kasan_slab_free+0x72/0xc0 mm/kasan/kasan.c:582
slab_free_hook mm/slub.c:1355 [inline]
slab_free_freelist_hook mm/slub.c:1377 [inline]
slab_free mm/slub.c:2958 [inline]
kmem_cache_free+0xbe/0x310 mm/slub.c:2980
kfree_skbmem+0x7c/0x100 net/core/skbuff.c:644
__kfree_skb+0x1d/0x20 net/core/skbuff.c:685
sk_wmem_free_skb include/net/sock.h:1358 [inline]
tcp_write_queue_purge include/net/tcp.h:1530 [inline]
tcp_connect_init net/ipv4/tcp_output.c:3241 [inline]
tcp_connect+0xaaf/0x2fa0 net/ipv4/tcp_output.c:3372
tcp_v4_connect+0x19f0/0x1c20 net/ipv4/tcp_ipv4.c:250
__inet_stream_connect+0x6e0/0xbf0 net/ipv4/af_inet.c:627
inet_stream_connect+0x55/0xa0 net/ipv4/af_inet.c:691
SYSC_connect+0x1b8/0x300 net/socket.c:1562
SyS_connect+0x24/0x30 net/socket.c:1543
do_syscall_64+0x1a6/0x490 arch/x86/entry/common.c:282
entry_SYSCALL_64_after_swapgs+0x5d/0xdb

The buggy address belongs to the object at ffff8801d832e780
which belongs to the cache skbuff_fclone_cache of size 456
The buggy address is located 40 bytes inside of
456-byte region [ffff8801d832e780, ffff8801d832e948)
The buggy address belongs to the page:
page:ffffea000760cb80 count:1 mapcount:0 mapping: (null) index:0x0
compound_mapcount: 0
flags: 0x8000000000004080(slab|head)
page dumped because: kasan: bad access detected

Memory state around the buggy address:
ffff8801d832e680: fb fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc
ffff8801d832e700: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
> ffff8801d832e780: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
^
ffff8801d832e800: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
ffff8801d832e880: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
==================================================================


---
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 can test patches for this bug, for details see:
https://goo.gl/tpsmEJ#testing-patches
Reply all
Reply to author
Forward
0 new messages