syzbot


KASAN: use-after-free Read in skb_copy_datagram_iter

Status: public: reported C repro on 2019/04/14 00:00
Reported-by: syzbot+98eef4f9c1e88e1e307a@syzkaller.appspotmail.com
First crash: 2406d, last: 2373d
Similar bugs (2)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
android-414 KASAN: use-after-free Read in skb_copy_datagram_iter 1 1995d 1995d 0/1 auto-closed as invalid on 2019/10/25 08:36
upstream KASAN: use-after-free Read in skb_copy_datagram_iter net C 7 2394d 2432d 5/28 fixed on 2018/06/07 13:52

Sample crash report:
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 ffff8801d6dd85c0 by task syz-executor988/3802

CPU: 1 PID: 3802 Comm: syz-executor988 Not tainted 4.9.102-gc5aceac #32
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
 ffff8801c499f7e0 ffffffff81eb3489 ffffea00075b7600 ffff8801d6dd85c0
 0000000000000000 ffff8801d6dd85c0 0000000000000000 ffff8801c499f818
 ffffffff815676bb ffff8801d6dd85c0 0000000000000001 0000000000000000
Call Trace:
 [<ffffffff81eb3489>] __dump_stack lib/dump_stack.c:15 [inline]
 [<ffffffff81eb3489>] 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
 [<ffffffff8153b6e4>] __asan_report_load1_noabort+0x14/0x20 mm/kasan/report.c:430
 [<ffffffff8304e928>] skb_copy_datagram_iter+0x898/0x8f0 net/core/datagram.c:399
 [<ffffffff8301e058>] skb_copy_datagram_msg include/linux/skbuff.h:3049 [inline]
 [<ffffffff8301e058>] sock_recv_errqueue+0xb8/0x3f0 net/core/sock.c:2634
 [<ffffffff8368cdff>] packet_recvmsg+0x88f/0xf40 net/packet/af_packet.c:3314
 [<ffffffff830154c6>] sock_recvmsg_nosec net/socket.c:737 [inline]
 [<ffffffff830154c6>] sock_recvmsg+0xc6/0x110 net/socket.c:744
 [<ffffffff83017df2>] ___sys_recvmsg+0x242/0x550 net/socket.c:2128
 [<ffffffff8301a0e6>] __sys_recvmsg+0xd6/0x190 net/socket.c:2173
 [<ffffffff8301a1cd>] SYSC_recvmsg net/socket.c:2185 [inline]
 [<ffffffff8301a1cd>] SyS_recvmsg+0x2d/0x50 net/socket.c:2180
 [<ffffffff81006316>] do_syscall_64+0x1a6/0x490 arch/x86/entry/common.c:282
 [<ffffffff839f78d3>] entry_SYSCALL_64_after_swapgs+0x5d/0xdb

Allocated by task 3802:
 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:4679
 sock_alloc_send_pskb+0x5a9/0x750 net/core/sock.c:1893
 packet_alloc_skb net/packet/af_packet.c:2817 [inline]
 packet_snd net/packet/af_packet.c:2908 [inline]
 packet_sendmsg+0x1581/0x4470 net/packet/af_packet.c:2985
 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 3802:
 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:2960 [inline]
 packet_sendmsg+0x1eff/0x4470 net/packet/af_packet.c:2985
 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 ffff8801d6dd8500
 which belongs to the cache kmalloc-512 of size 512
The buggy address is located 192 bytes inside of
 512-byte region [ffff8801d6dd8500, ffff8801d6dd8700)
The buggy address belongs to the page:
page:ffffea00075b7600 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:
 ffff8801d6dd8480: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
 ffff8801d6dd8500: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>ffff8801d6dd8580: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                           ^
 ffff8801d6dd8600: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ffff8801d6dd8680: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
==================================================================

Crashes (6):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2018/05/24 14:10 https://android.googlesource.com/kernel/common android-4.9 c5aceac71b68 f48c20b8 .config console log report syz C ci-android-49-kasan-gce-root
2018/04/21 07:02 https://android.googlesource.com/kernel/common android-4.9 13cc54013b24 ca03d688 .config console log report syz C ci-android-49-kasan-gce-root
2018/05/08 11:22 https://android.googlesource.com/kernel/common android-4.9 a03d0bbacd41 045bbd4a .config console log report ci-android-49-kasan-gce-root
2018/04/25 02:31 https://android.googlesource.com/kernel/common android-4.9 320d53a9d07c 37e76fe2 .config console log report ci-android-49-kasan-gce-root
2018/04/23 05:57 https://android.googlesource.com/kernel/common android-4.9 ee0bcd679075 d23fcf6c .config console log report ci-android-49-kasan-gce-root
2018/04/21 05:23 https://android.googlesource.com/kernel/common android-4.9 13cc54013b24 ca03d688 .config console log report ci-android-49-kasan-gce-root
* Struck through repros no longer work on HEAD.