KASAN: use-after-free Read in skb_copy_datagram_iter

16 views
Skip to first unread message

syzbot

unread,
Apr 13, 2019, 8:00:31 PM4/13/19
to syzkaller-a...@googlegroups.com
Hello,

syzbot found the following crash on:

HEAD commit: 13cc5401 ANDROID: arm-smccc: fix clang build
git tree: android-4.9
console output: https://syzkaller.appspot.com/x/log.txt?x=17b7bd3b800000
kernel config: https://syzkaller.appspot.com/x/.config?x=fab87dc152343eaa
dashboard link: https://syzkaller.appspot.com/bug?extid=98eef4f9c1e88e1e307a
compiler: gcc (GCC) 8.0.1 20180413 (experimental)
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=13942d3b800000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=17909d3b800000

IMPORTANT: if you fix the bug, please add the following tag to the commit:
Reported-by: syzbot+98eef4...@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 skb_copy_datagram_iter+0x898/0x8f0
net/core/datagram.c:399
Read of size 1 at addr ffff8801c1789c40 by task syzkaller795386/3813

CPU: 1 PID: 3813 Comm: syzkaller795386 Not tainted 4.9.95-g13cc540 #2
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
Google 01/01/2011
ffff8801d9987660 ffffffff81eb0ba9 ffffea000705e200 ffff8801c1789c40
0000000000000000 ffff8801c1789c40 0000000000000000 ffff8801d9987698
ffffffff815653cb ffff8801c1789c40 0000000000000001 0000000000000000
Call Trace:
[<ffffffff81eb0ba9>] __dump_stack lib/dump_stack.c:15 [inline]
[<ffffffff81eb0ba9>] dump_stack+0xc1/0x128 lib/dump_stack.c:51
[<ffffffff815653cb>] print_address_description+0x6c/0x234
mm/kasan/report.c:256
[<ffffffff815657d5>] kasan_report_error mm/kasan/report.c:355 [inline]
[<ffffffff815657d5>] kasan_report.cold.6+0x242/0x2fe mm/kasan/report.c:412
[<ffffffff815393f4>] __asan_report_load1_noabort+0x14/0x20
mm/kasan/report.c:430
[<ffffffff83049928>] skb_copy_datagram_iter+0x898/0x8f0
net/core/datagram.c:399
[<ffffffff83019058>] skb_copy_datagram_msg include/linux/skbuff.h:3049
[inline]
[<ffffffff83019058>] sock_recv_errqueue+0xb8/0x3f0 net/core/sock.c:2634
[<ffffffff836877ea>] packet_recvmsg+0x88a/0xf40 net/packet/af_packet.c:3305
[<ffffffff830104c6>] sock_recvmsg_nosec net/socket.c:737 [inline]
[<ffffffff830104c6>] sock_recvmsg+0xc6/0x110 net/socket.c:744
[<ffffffff83012df2>] ___sys_recvmsg+0x242/0x550 net/socket.c:2128
[<ffffffff8301544d>] __sys_recvmmsg+0x25d/0x700 net/socket.c:2236
[<ffffffff830159db>] SYSC_recvmmsg net/socket.c:2317 [inline]
[<ffffffff830159db>] SyS_recvmmsg+0xeb/0x1c0 net/socket.c:2301
[<ffffffff81006316>] do_syscall_64+0x1a6/0x490 arch/x86/entry/common.c:282
[<ffffffff839f2313>] entry_SYSCALL_64_after_swapgs+0x5d/0xdb

Allocated by task 3813:
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]
__kmalloc_track_caller+0xdc/0x2b0 mm/slub.c:4232
__kmalloc_reserve.isra.37+0x33/0xc0 net/core/skbuff.c:138
__alloc_skb+0x11a/0x600 net/core/skbuff.c:231
alloc_skb include/linux/skbuff.h:919 [inline]
alloc_skb_with_frags+0xaf/0x520 net/core/skbuff.c:4678
sock_alloc_send_pskb+0x5a9/0x750 net/core/sock.c:1893
packet_alloc_skb net/packet/af_packet.c:2810 [inline]
packet_snd net/packet/af_packet.c:2901 [inline]
packet_sendmsg+0x1599/0x44e0 net/packet/af_packet.c:2978
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 3813:
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]
kfree+0xfb/0x310 mm/slub.c:3878
skb_free_head+0x8b/0xb0 net/core/skbuff.c:580
skb_release_data+0x329/0x400 net/core/skbuff.c:611
skb_release_all+0x4a/0x60 net/core/skbuff.c:670
__kfree_skb+0x15/0x20 net/core/skbuff.c:684
kfree_skb+0xcc/0x340 net/core/skbuff.c:705
sit_tunnel_xmit+0xfb/0x2590 net/ipv6/sit.c:1033
__netdev_start_xmit include/linux/netdevice.h:4062 [inline]
netdev_start_xmit include/linux/netdevice.h:4071 [inline]
xmit_one net/core/dev.c:2955 [inline]
dev_hard_start_xmit+0x197/0x8b0 net/core/dev.c:2971
__dev_queue_xmit+0x19a5/0x2080 net/core/dev.c:3451
dev_queue_xmit+0x17/0x20 net/core/dev.c:3484
packet_snd net/packet/af_packet.c:2953 [inline]
packet_sendmsg+0x1f17/0x44e0 net/packet/af_packet.c:2978
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

The buggy address belongs to the object at ffff8801c1789b80
which belongs to the cache kmalloc-512 of size 512
The buggy address is located 192 bytes inside of
512-byte region [ffff8801c1789b80, ffff8801c1789d80)
The buggy address belongs to the page:
page:ffffea000705e200 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:
ffff8801c1789b00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
ffff8801c1789b80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
> ffff8801c1789c00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
^
ffff8801c1789c80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
ffff8801c1789d00: 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