CVE-2023-52784
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
21/05/2024
Last modified:
21/05/2024
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
bonding: stop the device in bond_setup_by_slave()<br />
<br />
Commit 9eed321cde22 ("net: lapbether: only support ethernet devices")<br />
has been able to keep syzbot away from net/lapb, until today.<br />
<br />
In the following splat [1], the issue is that a lapbether device has<br />
been created on a bonding device without members. Then adding a non<br />
ARPHRD_ETHER member forced the bonding master to change its type.<br />
<br />
The fix is to make sure we call dev_close() in bond_setup_by_slave()<br />
so that the potential linked lapbether devices (or any other devices<br />
having assumptions on the physical device) are removed.<br />
<br />
A similar bug has been addressed in commit 40baec225765<br />
("bonding: fix panic on non-ARPHRD_ETHER enslave failure")<br />
<br />
[1]<br />
skbuff: skb_under_panic: text:ffff800089508810 len:44 put:40 head:ffff0000c78e7c00 data:ffff0000c78e7bea tail:0x16 end:0x140 dev:bond0<br />
kernel BUG at net/core/skbuff.c:192 !<br />
Internal error: Oops - BUG: 00000000f2000800 [#1] PREEMPT SMP<br />
Modules linked in:<br />
CPU: 0 PID: 6007 Comm: syz-executor383 Not tainted 6.6.0-rc3-syzkaller-gbf6547d8715b #0<br />
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/04/2023<br />
pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)<br />
pc : skb_panic net/core/skbuff.c:188 [inline]<br />
pc : skb_under_panic+0x13c/0x140 net/core/skbuff.c:202<br />
lr : skb_panic net/core/skbuff.c:188 [inline]<br />
lr : skb_under_panic+0x13c/0x140 net/core/skbuff.c:202<br />
sp : ffff800096a06aa0<br />
x29: ffff800096a06ab0 x28: ffff800096a06ba0 x27: dfff800000000000<br />
x26: ffff0000ce9b9b50 x25: 0000000000000016 x24: ffff0000c78e7bea<br />
x23: ffff0000c78e7c00 x22: 000000000000002c x21: 0000000000000140<br />
x20: 0000000000000028 x19: ffff800089508810 x18: ffff800096a06100<br />
x17: 0000000000000000 x16: ffff80008a629a3c x15: 0000000000000001<br />
x14: 1fffe00036837a32 x13: 0000000000000000 x12: 0000000000000000<br />
x11: 0000000000000201 x10: 0000000000000000 x9 : cb50b496c519aa00<br />
x8 : cb50b496c519aa00 x7 : 0000000000000001 x6 : 0000000000000001<br />
x5 : ffff800096a063b8 x4 : ffff80008e280f80 x3 : ffff8000805ad11c<br />
x2 : 0000000000000001 x1 : 0000000100000201 x0 : 0000000000000086<br />
Call trace:<br />
skb_panic net/core/skbuff.c:188 [inline]<br />
skb_under_panic+0x13c/0x140 net/core/skbuff.c:202<br />
skb_push+0xf0/0x108 net/core/skbuff.c:2446<br />
ip6gre_header+0xbc/0x738 net/ipv6/ip6_gre.c:1384<br />
dev_hard_header include/linux/netdevice.h:3136 [inline]<br />
lapbeth_data_transmit+0x1c4/0x298 drivers/net/wan/lapbether.c:257<br />
lapb_data_transmit+0x8c/0xb0 net/lapb/lapb_iface.c:447<br />
lapb_transmit_buffer+0x178/0x204 net/lapb/lapb_out.c:149<br />
lapb_send_control+0x220/0x320 net/lapb/lapb_subr.c:251<br />
__lapb_disconnect_request+0x9c/0x17c net/lapb/lapb_iface.c:326<br />
lapb_device_event+0x288/0x4e0 net/lapb/lapb_iface.c:492<br />
notifier_call_chain+0x1a4/0x510 kernel/notifier.c:93<br />
raw_notifier_call_chain+0x3c/0x50 kernel/notifier.c:461<br />
call_netdevice_notifiers_info net/core/dev.c:1970 [inline]<br />
call_netdevice_notifiers_extack net/core/dev.c:2008 [inline]<br />
call_netdevice_notifiers net/core/dev.c:2022 [inline]<br />
__dev_close_many+0x1b8/0x3c4 net/core/dev.c:1508<br />
dev_close_many+0x1e0/0x470 net/core/dev.c:1559<br />
dev_close+0x174/0x250 net/core/dev.c:1585<br />
lapbeth_device_event+0x2e4/0x958 drivers/net/wan/lapbether.c:466<br />
notifier_call_chain+0x1a4/0x510 kernel/notifier.c:93<br />
raw_notifier_call_chain+0x3c/0x50 kernel/notifier.c:461<br />
call_netdevice_notifiers_info net/core/dev.c:1970 [inline]<br />
call_netdevice_notifiers_extack net/core/dev.c:2008 [inline]<br />
call_netdevice_notifiers net/core/dev.c:2022 [inline]<br />
__dev_close_many+0x1b8/0x3c4 net/core/dev.c:1508<br />
dev_close_many+0x1e0/0x470 net/core/dev.c:1559<br />
dev_close+0x174/0x250 net/core/dev.c:1585<br />
bond_enslave+0x2298/0x30cc drivers/net/bonding/bond_main.c:2332<br />
bond_do_ioctl+0x268/0xc64 drivers/net/bonding/bond_main.c:4539<br />
dev_ifsioc+0x754/0x9ac<br />
dev_ioctl+0x4d8/0xd34 net/core/dev_ioctl.c:786<br />
sock_do_ioctl+0x1d4/0x2d0 net/socket.c:1217<br />
sock_ioctl+0x4e8/0x834 net/socket.c:1322<br />
vfs_ioctl fs/ioctl.c:51 [inline]<br />
__do_<br />
---truncated---
Impact
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/19554aa901b5833787df4417a05ccdebf351b7f4
- https://git.kernel.org/stable/c/396baca6683f415b5bc2b380289387bef1406edc
- https://git.kernel.org/stable/c/3cffa2ddc4d3fcf70cde361236f5a614f81a09b2
- https://git.kernel.org/stable/c/53064e8239dd2ecfefc5634e991f1025abc2ee0c
- https://git.kernel.org/stable/c/87c49806a37f88eddde3f537c162fd0c2834170c
- https://git.kernel.org/stable/c/b4f0e605a508f6d7cda6df2f03a0c676b778b1fe
- https://git.kernel.org/stable/c/d98c91215a5748a0f536e7ccea26027005196859