syzbot


KASAN: out-of-bounds Read in ip6_xmit

Status: fixed on 2018/05/09 07:47
Subsystems: net
[Documentation on labels]
Reported-by: syzbot+c8e66da874feb11aaca6@syzkaller.appspotmail.com
Fix commit: b954f94023dc l2tp: fix races with ipv4-mapped ipv6 addresses
First crash: 2281d, last: 2238d
Discussions (1)
Title Replies (including bot) Last reply
KASAN: out-of-bounds Read in ip6_xmit 2 (3) 2018/05/15 13:06

Sample crash report:
==================================================================
BUG: KASAN: out-of-bounds in ip6_dst_idev include/net/ip6_fib.h:192 [inline]
BUG: KASAN: out-of-bounds in ip6_xmit+0x1f76/0x2260 net/ipv6/ip6_output.c:264
Read of size 8 at addr ffff8801d2567e18 by task syz-executor5/21062

CPU: 0 PID: 21062 Comm: syz-executor5 Not tainted 4.16.0-rc4+ #260
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
 __dump_stack lib/dump_stack.c:17 [inline]
 dump_stack+0x194/0x24d lib/dump_stack.c:53
 print_address_description+0x73/0x250 mm/kasan/report.c:256
 kasan_report_error mm/kasan/report.c:354 [inline]
 kasan_report+0x23c/0x360 mm/kasan/report.c:412
 __asan_report_load8_noabort+0x14/0x20 mm/kasan/report.c:433
 ip6_dst_idev include/net/ip6_fib.h:192 [inline]
 ip6_xmit+0x1f76/0x2260 net/ipv6/ip6_output.c:264
 inet6_csk_xmit+0x2fc/0x580 net/ipv6/inet6_connection_sock.c:139
 l2tp_xmit_core net/l2tp/l2tp_core.c:1053 [inline]
 l2tp_xmit_skb+0x105f/0x1410 net/l2tp/l2tp_core.c:1148
 pppol2tp_sendmsg+0x470/0x670 net/l2tp/l2tp_ppp.c:341
 sock_sendmsg_nosec net/socket.c:629 [inline]
 sock_sendmsg+0xca/0x110 net/socket.c:639
 SYSC_sendto+0x361/0x5c0 net/socket.c:1748
 SyS_sendto+0x40/0x50 net/socket.c:1716
 do_syscall_64+0x281/0x940 arch/x86/entry/common.c:287
 entry_SYSCALL_64_after_hwframe+0x42/0xb7
RIP: 0033:0x453e69
RSP: 002b:00007f3cd0e37c68 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
RAX: ffffffffffffffda RBX: 00007f3cd0e386d4 RCX: 0000000000453e69
RDX: 000000000000100b RSI: 0000000020001180 RDI: 0000000000000015
RBP: 000000000072bf58 R08: 00000000200021c0 R09: 0000000000000080
R10: 0000000000040001 R11: 0000000000000246 R12: 00000000ffffffff
R13: 00000000000004ca R14: 00000000006f7390 R15: 0000000000000001

Allocated by task 21069:
 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:552
 kasan_slab_alloc+0x12/0x20 mm/kasan/kasan.c:489
 kmem_cache_alloc+0x12e/0x760 mm/slab.c:3541
 dst_alloc+0x11f/0x1a0 net/core/dst.c:104
 rt_dst_alloc+0xe9/0x4e0 net/ipv4/route.c:1508
 __mkroute_output net/ipv4/route.c:2245 [inline]
 ip_route_output_key_hash_rcu+0xa59/0x2fe0 net/ipv4/route.c:2471
 ip_route_output_key_hash+0x20b/0x370 net/ipv4/route.c:2300
 __ip_route_output_key include/net/route.h:123 [inline]
 ip_route_output_flow+0x26/0xa0 net/ipv4/route.c:2554
 ip_route_output_key include/net/route.h:133 [inline]
 sctp_v4_get_dst+0x5f9/0x15b0 net/sctp/protocol.c:458
 sctp_transport_route+0xa8/0x430 net/sctp/transport.c:293
 sctp_assoc_add_peer+0x4fe/0x1190 net/sctp/associola.c:655
 sctp_process_param net/sctp/sm_make_chunk.c:2546 [inline]
 sctp_process_init+0x1567/0x2440 net/sctp/sm_make_chunk.c:2362
 sctp_sf_do_unexpected_init.isra.37+0x73d/0x13b0 net/sctp/sm_statefuns.c:1519
 sctp_sf_do_5_2_1_siminit+0x35/0x40 net/sctp/sm_statefuns.c:1648
 sctp_do_sm+0x192/0x6ed0 net/sctp/sm_sideeffect.c:1178
 sctp_assoc_bh_rcv+0x283/0x4b0 net/sctp/associola.c:1065
 sctp_inq_push+0x23b/0x300 net/sctp/inqueue.c:95
 sctp_backlog_rcv+0x177/0xa90 net/sctp/input.c:350
 sk_backlog_rcv include/net/sock.h:909 [inline]
 __release_sock+0x124/0x360 net/core/sock.c:2276
 release_sock+0xa4/0x2a0 net/core/sock.c:2791
 sctp_wait_for_connect+0x346/0x570 net/sctp/socket.c:8279
 __sctp_connect+0xa90/0xca0 net/sctp/socket.c:1255
 sctp_connect+0xb4/0xf0 net/sctp/socket.c:4315
 inet_dgram_connect+0x16b/0x1f0 net/ipv4/af_inet.c:542
 SYSC_connect+0x213/0x4a0 net/socket.c:1640
 SyS_connect+0x24/0x30 net/socket.c:1621
 do_syscall_64+0x281/0x940 arch/x86/entry/common.c:287
 entry_SYSCALL_64_after_hwframe+0x42/0xb7

Freed by task 15430:
 save_stack+0x43/0xd0 mm/kasan/kasan.c:447
 set_track mm/kasan/kasan.c:459 [inline]
 __kasan_slab_free+0x11a/0x170 mm/kasan/kasan.c:520
 kasan_slab_free+0xe/0x10 mm/kasan/kasan.c:527
 __cache_free mm/slab.c:3485 [inline]
 kmem_cache_free+0x83/0x2a0 mm/slab.c:3743
 dst_destroy+0x257/0x370 net/core/dst.c:140
 dst_destroy_rcu+0x16/0x20 net/core/dst.c:153
 __rcu_reclaim kernel/rcu/rcu.h:172 [inline]
 rcu_do_batch kernel/rcu/tree.c:2674 [inline]
 invoke_rcu_callbacks kernel/rcu/tree.c:2933 [inline]
 __rcu_process_callbacks kernel/rcu/tree.c:2900 [inline]
 rcu_process_callbacks+0xd6c/0x17f0 kernel/rcu/tree.c:2917
 __do_softirq+0x2d7/0xb85 kernel/softirq.c:285

The buggy address belongs to the object at ffff8801d2567e00
 which belongs to the cache ip_dst_cache of size 160
The buggy address is located 24 bytes inside of
 160-byte region [ffff8801d2567e00, ffff8801d2567ea0)
The buggy address belongs to the page:
page:ffffea00074959c0 count:1 mapcount:0 mapping:ffff8801d2567000 index:0x0
flags: 0x2fffc0000000100(slab)
raw: 02fffc0000000100 ffff8801d2567000 0000000000000000 0000000100000010
raw: ffffea00070e3d60 ffffea0006caa360 ffff8801d6bca1c0 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
 ffff8801d2567d00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 ffff8801d2567d80: 00 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc
>ffff8801d2567e00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
                               ^
 ffff8801d2567e80: 00 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc
 ffff8801d2567f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
==================================================================

Crashes (2):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2018/03/11 08:04 net-next-old f44b1886a5f8 36d1c454 .config console log report ci-upstream-net-kasan-gce
2018/01/27 21:35 net-next-old 6bb46bc57c8e 08146b1a .config console log report ci-upstream-net-kasan-gce
* Struck through repros no longer work on HEAD.