Re: KASAN: slab-out-of-bounds Write in tcp_v6_syn_recv_sock

From: Wei Wang
Date: Wed Jan 17 2018 - 13:02:59 EST


On Wed, Jan 3, 2018 at 3:31 PM, Cong Wang <xiyou.wangcong@xxxxxxxxx> wrote:
>
> On Wed, Jan 3, 2018 at 12:55 PM, Ozgur <ozgur@xxxxxxxxxx> wrote:
> >
> >
> > 03.01.2018, 21:57, "Cong Wang" <xiyou.wangcong@xxxxxxxxx>:
> >> On Tue, Jan 2, 2018 at 3:58 PM, syzbot
> >> <syzbot+6dc95bddc6976b800b0b@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote:
> >>> Hello,
> >>>
> >>> syzkaller hit the following crash on
> >>> 61233580f1f33c50e159c50e24d80ffd2ba2e06b
> >>> git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/master
> >>> compiler: gcc (GCC) 7.1.1 20170620
> >>> .config is attached
> >>> Raw console output is attached.
> >>> C reproducer is attached
> >>> syzkaller reproducer is attached. See https://goo.gl/kgGztJ
> >>> for information about syzkaller reproducers
> >>>
> >>> IMPORTANT: if you fix the bug, please add the following tag to the commit:
> >>> Reported-by: syzbot+6dc95bddc6976b800b0b@xxxxxxxxxxxxxxxxxxxxxxxxx
> >>> It will help syzbot understand when the bug is fixed. See footer for
> >>> details.
> >>> If you forward the report, please keep this part and the footer.
> >>>
> >>> TCP: request_sock_TCPv6: Possible SYN flooding on port 20002. Sending
> >>> cookies. Check SNMP counters.
> >>> ==================================================================
> >>> BUG: KASAN: slab-out-of-bounds in memcpy include/linux/string.h:344 [inline]
> >>> BUG: KASAN: slab-out-of-bounds in tcp_v6_syn_recv_sock+0x628/0x23a0
> >>> net/ipv6/tcp_ipv6.c:1144
> >>> Write of size 160 at addr ffff8801cbdd7460 by task syzkaller545407/3196
> >>>
> >>> CPU: 1 PID: 3196 Comm: syzkaller545407 Not tainted 4.15.0-rc5+ #241
> >>> Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
> >>> Google 01/01/2011
> >>> Call Trace:
> >>> <IRQ>
> >>> __dump_stack lib/dump_stack.c:17 [inline]
> >>> dump_stack+0x194/0x257 lib/dump_stack.c:53
> >>> print_address_description+0x73/0x250 mm/kasan/report.c:252
> >>> kasan_report_error mm/kasan/report.c:351 [inline]
> >>> kasan_report+0x25b/0x340 mm/kasan/report.c:409
> >>> check_memory_region_inline mm/kasan/kasan.c:260 [inline]
> >>> check_memory_region+0x137/0x190 mm/kasan/kasan.c:267
> >>> memcpy+0x37/0x50 mm/kasan/kasan.c:303
> >>> memcpy include/linux/string.h:344 [inline]
> >>> tcp_v6_syn_recv_sock+0x628/0x23a0 net/ipv6/tcp_ipv6.c:1144
> >>
> >> tls_init() changes sk->sk_prot from IPv6 to IPv4, which leads
> >> to this bug. I guess IPv6 is not supported for TLS? If so, need
> >> a check on proto in tls_init()...
> >
> > Hello,
> >
> > I think IPv6 supports with TLS.
> > There was a previously posted commit by Mellanox:
> >
> > https://patchwork.ozlabs.org/patch/801530/
>
> Good to know.
>
> Can you resend the fix? It could probably fix another warning
> reported by syzbot too.

What is the status on resending the patch?
(https://patchwork.ozlabs.org/patch/801530/)
Another slab-out-of-bound report that could be fixed by it:

syzbot has found reproducer for the following crash on
6bd39bc3da0f4a301fae69c4a32db2768f5118be
git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git master
compiler: gcc (GCC) 7.1.1 20170620

==================================================================
BUG: KASAN: slab-out-of-bounds in ip6_dst_idev
include/net/ip6_fib.h:192 [inline]
BUG: KASAN: slab-out-of-bounds in ip6_xmit+0x1ce9/0x2090
net/ipv6/ip6_output.c:264
Read of size 8 at addr ffff8801d99a1018 by task syzkaller716686/3664

CPU: 0 PID: 3664 Comm: syzkaller716686 Not tainted 4.15.0-rc7+ #187
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/0x257 lib/dump_stack.c:53
print_address_description+0x73/0x250 mm/kasan/report.c:252
kasan_report_error mm/kasan/report.c:351 [inline]
kasan_report+0x25b/0x340 mm/kasan/report.c:409
__asan_report_load8_noabort+0x14/0x20 mm/kasan/report.c:430
ip6_dst_idev include/net/ip6_fib.h:192 [inline]
ip6_xmit+0x1ce9/0x2090 net/ipv6/ip6_output.c:264
inet6_csk_xmit+0x2fc/0x580 net/ipv6/inet6_connection_sock.c:139
tcp_transmit_skb+0x1b1b/0x38c0 net/ipv4/tcp_output.c:1176
tcp_send_syn_data net/ipv4/tcp_output.c:3457 [inline]
tcp_connect+0x1edb/0x4090 net/ipv4/tcp_output.c:3496
tcp_v4_connect+0x15ef/0x1e70 net/ipv4/tcp_ipv4.c:257
__inet_stream_connect+0x2d4/0xf00 net/ipv4/af_inet.c:620
tcp_sendmsg_fastopen net/ipv4/tcp.c:1168 [inline]
tcp_sendmsg_locked+0x264e/0x3c70 net/ipv4/tcp.c:1214
tcp_sendmsg+0x2f/0x50 net/ipv4/tcp.c:1463
inet_sendmsg+0x11f/0x5e0 net/ipv4/af_inet.c:764
sock_sendmsg_nosec net/socket.c:630 [inline]
sock_sendmsg+0xca/0x110 net/socket.c:640
___sys_sendmsg+0x320/0x8b0 net/socket.c:2020
__sys_sendmmsg+0x1ee/0x620 net/socket.c:2110
SYSC_sendmmsg net/socket.c:2141 [inline]
SyS_sendmmsg+0x35/0x60 net/socket.c:2136
entry_SYSCALL_64_fastpath+0x23/0x9a
RIP: 0033:0x43fdd9
RSP: 002b:00007ffcaf235288 EFLAGS: 00000217 ORIG_RAX: 0000000000000133
RAX: ffffffffffffffda RBX: 00000000004002c8 RCX: 000000000043fdd9
RDX: 0000000000000001 RSI: 00000000205f8fc8 RDI: 0000000000000004
RBP: 00000000006ca018 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000020000000 R11: 0000000000000217 R12: 0000000000401740
R13: 00000000004017d0 R14: 0000000000000000 R15: 0000000000000000