CVE-2023-53798

Source
https://cve.org/CVERecord?id=CVE-2023-53798
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2023-53798.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2023-53798
Downstream
Published
2025-12-09T00:00:54.769Z
Modified
2025-12-09T03:46:29.566823Z
Summary
ethtool: Fix uninitialized number of lanes
Details

In the Linux kernel, the following vulnerability has been resolved:

ethtool: Fix uninitialized number of lanes

It is not possible to set the number of lanes when setting link modes using the legacy IOCTL ethtool interface. Since 'struct ethtoollinkksettings' is not initialized in this path, drivers receive an uninitialized number of lanes in 'struct ethtoollinkksettings::lanes'.

When this information is later queried from drivers, it results in the ethtool code making decisions based on uninitialized memory, leading to the following KMSAN splat [1]. In practice, this most likely only happens with the tun driver that simply returns whatever it got in the set operation.

As far as I can tell, this uninitialized memory is not leaked to user space thanks to the 'ethtoolops->caplinklanessupported' check in linkmodespreparedata().

Fix by initializing the structure in the IOCTL path. Did not find any more call sites that pass an uninitialized structure when calling 'ethtoolops::setlink_ksettings()'.

[1] BUG: KMSAN: uninit-value in ethnlupdatelinkmodes net/ethtool/linkmodes.c:273 [inline] BUG: KMSAN: uninit-value in ethnlsetlinkmodes+0x190b/0x19d0 net/ethtool/linkmodes.c:333 ethnlupdatelinkmodes net/ethtool/linkmodes.c:273 [inline] ethnlsetlinkmodes+0x190b/0x19d0 net/ethtool/linkmodes.c:333 ethnldefaultsetdoit+0x88d/0xde0 net/ethtool/netlink.c:640 genlfamilyrcvmsgdoit net/netlink/genetlink.c:968 [inline] genlfamilyrcvmsg net/netlink/genetlink.c:1048 [inline] genlrcvmsg+0x141a/0x14c0 net/netlink/genetlink.c:1065 netlinkrcvskb+0x3f8/0x750 net/netlink/afnetlink.c:2577 genlrcv+0x40/0x60 net/netlink/genetlink.c:1076 netlinkunicastkernel net/netlink/afnetlink.c:1339 [inline] netlinkunicast+0xf41/0x1270 net/netlink/afnetlink.c:1365 netlinksendmsg+0x127d/0x1430 net/netlink/afnetlink.c:1942 socksendmsgnosec net/socket.c:724 [inline] socksendmsg net/socket.c:747 [inline] _syssendmsg+0xa24/0xe40 net/socket.c:2501 syssendmsg+0x2a1/0x3f0 net/socket.c:2555 _syssendmsg net/socket.c:2584 [inline] _dosyssendmsg net/socket.c:2593 [inline] _sesyssendmsg net/socket.c:2591 [inline] _x64syssendmsg+0x36b/0x540 net/socket.c:2591 dosyscallx64 arch/x86/entry/common.c:50 [inline] dosyscall64+0x41/0xc0 arch/x86/entry/common.c:80 entrySYSCALL64after_hwframe+0x63/0xcd

Uninit was stored to memory at: tungetlinkksettings+0x37/0x60 drivers/net/tun.c:3544 ethtoolgetlinkksettings+0x17b/0x260 net/ethtool/ioctl.c:441 ethnlsetlinkmodes+0xee/0x19d0 net/ethtool/linkmodes.c:327 ethnldefaultsetdoit+0x88d/0xde0 net/ethtool/netlink.c:640 genlfamilyrcvmsgdoit net/netlink/genetlink.c:968 [inline] genlfamilyrcvmsg net/netlink/genetlink.c:1048 [inline] genlrcvmsg+0x141a/0x14c0 net/netlink/genetlink.c:1065 netlinkrcvskb+0x3f8/0x750 net/netlink/afnetlink.c:2577 genlrcv+0x40/0x60 net/netlink/genetlink.c:1076 netlinkunicastkernel net/netlink/afnetlink.c:1339 [inline] netlinkunicast+0xf41/0x1270 net/netlink/afnetlink.c:1365 netlinksendmsg+0x127d/0x1430 net/netlink/afnetlink.c:1942 socksendmsgnosec net/socket.c:724 [inline] socksendmsg net/socket.c:747 [inline] syssendmsg+0xa24/0xe40 net/socket.c:2501 _syssendmsg+0x2a1/0x3f0 net/socket.c:2555 _syssendmsg net/socket.c:2584 [inline] _dosyssendmsg net/socket.c:2593 [inline] _sesyssendmsg net/socket.c:2591 [inline] _x64syssendmsg+0x36b/0x540 net/socket.c:2591 dosyscallx64 arch/x86/entry/common.c:50 [inline] dosyscall64+0x41/0xc0 arch/x86/entry/common.c:80 entrySYSCALL64after_hwframe+0x63/0xcd

Uninit was stored to memory at: tunsetlinkksettings+0x37/0x60 drivers/net/tun.c:3553 ethtoolsetlinkksettings+0x600/0x690 net/ethtool/ioctl.c:609 _devethtool net/ethtool/ioctl.c:3024 [inline] devethtool+0x1db9/0x2a70 net/ethtool/ioctl.c:3078 devioctl+0xb07/0x1270 net/core/devioctl.c:524 sockdoioctl+0x295/0x540 net/socket.c:1213 socki ---truncated---

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/53xxx/CVE-2023-53798.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
012ce4dd3102a0f4d80167de343e9d44b257c1b8
Fixed
da81af0ef8092ecacd87fac3229c29e2e0ce39fd
Fixed
942a2a0184f7bb1c1ae4bbc556559c86c054b0d2
Fixed
6456d80045d6de47734b1a3879c91f72af186529
Fixed
72808c4ab5fd01bf1214195005e15b434bf55cef
Fixed
9ad685dbfe7e856bbf17a7177b64676d324d6ed7

Affected versions

v5.*
v5.11
v5.11-rc7
v5.12
v5.12-rc1
v5.12-rc1-dontuse
v5.12-rc2
v5.12-rc3
v5.12-rc4
v5.12-rc5
v5.12-rc6
v5.12-rc7
v5.12-rc8
v5.13
v5.13-rc1
v5.13-rc2
v5.13-rc3
v5.13-rc4
v5.13-rc5
v5.13-rc6
v5.13-rc7
v5.14
v5.14-rc1
v5.14-rc2
v5.14-rc3
v5.14-rc4
v5.14-rc5
v5.14-rc6
v5.14-rc7
v5.15
v5.15-rc1
v5.15-rc2
v5.15-rc3
v5.15-rc4
v5.15-rc5
v5.15-rc6
v5.15-rc7
v5.15.1
v5.15.10
v5.15.100
v5.15.101
v5.15.102
v5.15.103
v5.15.104
v5.15.105
v5.15.106
v5.15.107
v5.15.108
v5.15.109
v5.15.11
v5.15.110
v5.15.111
v5.15.12
v5.15.13
v5.15.14
v5.15.15
v5.15.16
v5.15.17
v5.15.18
v5.15.19
v5.15.2
v5.15.20
v5.15.21
v5.15.22
v5.15.23
v5.15.24
v5.15.25
v5.15.26
v5.15.27
v5.15.28
v5.15.29
v5.15.3
v5.15.30
v5.15.31
v5.15.32
v5.15.33
v5.15.34
v5.15.35
v5.15.36
v5.15.37
v5.15.38
v5.15.39
v5.15.4
v5.15.40
v5.15.41
v5.15.42
v5.15.43
v5.15.44
v5.15.45
v5.15.46
v5.15.47
v5.15.48
v5.15.49
v5.15.5
v5.15.50
v5.15.51
v5.15.52
v5.15.53
v5.15.54
v5.15.55
v5.15.56
v5.15.57
v5.15.58
v5.15.59
v5.15.6
v5.15.60
v5.15.61
v5.15.62
v5.15.63
v5.15.64
v5.15.65
v5.15.66
v5.15.67
v5.15.68
v5.15.69
v5.15.7
v5.15.70
v5.15.71
v5.15.72
v5.15.73
v5.15.74
v5.15.75
v5.15.76
v5.15.77
v5.15.78
v5.15.79
v5.15.8
v5.15.80
v5.15.81
v5.15.82
v5.15.83
v5.15.84
v5.15.85
v5.15.86
v5.15.87
v5.15.88
v5.15.89
v5.15.9
v5.15.90
v5.15.91
v5.15.92
v5.15.93
v5.15.94
v5.15.95
v5.15.96
v5.15.97
v5.15.98
v5.15.99
v5.16
v5.16-rc1
v5.16-rc2
v5.16-rc3
v5.16-rc4
v5.16-rc5
v5.16-rc6
v5.16-rc7
v5.16-rc8
v5.17
v5.17-rc1
v5.17-rc2
v5.17-rc3
v5.17-rc4
v5.17-rc5
v5.17-rc6
v5.17-rc7
v5.17-rc8
v5.18
v5.18-rc1
v5.18-rc2
v5.18-rc3
v5.18-rc4
v5.18-rc5
v5.18-rc6
v5.18-rc7
v5.19
v5.19-rc1
v5.19-rc2
v5.19-rc3
v5.19-rc4
v5.19-rc5
v5.19-rc6
v5.19-rc7
v5.19-rc8
v6.*
v6.0
v6.0-rc1
v6.0-rc2
v6.0-rc3
v6.0-rc4
v6.0-rc5
v6.0-rc6
v6.0-rc7
v6.1
v6.1-rc1
v6.1-rc2
v6.1-rc3
v6.1-rc4
v6.1-rc5
v6.1-rc6
v6.1-rc7
v6.1-rc8
v6.1.1
v6.1.10
v6.1.11
v6.1.12
v6.1.13
v6.1.14
v6.1.15
v6.1.16
v6.1.17
v6.1.18
v6.1.19
v6.1.2
v6.1.20
v6.1.21
v6.1.22
v6.1.23
v6.1.24
v6.1.25
v6.1.26
v6.1.27
v6.1.28
v6.1.3
v6.1.4
v6.1.5
v6.1.6
v6.1.7
v6.1.8
v6.1.9
v6.2
v6.2-rc1
v6.2-rc2
v6.2-rc3
v6.2-rc4
v6.2-rc5
v6.2-rc6
v6.2-rc7
v6.2-rc8
v6.2.1
v6.2.10
v6.2.11
v6.2.12
v6.2.13
v6.2.14
v6.2.15
v6.2.2
v6.2.3
v6.2.4
v6.2.5
v6.2.6
v6.2.7
v6.2.8
v6.2.9
v6.3
v6.3-rc1
v6.3-rc2
v6.3-rc3
v6.3-rc4
v6.3-rc5
v6.3-rc6
v6.3-rc7
v6.3.1
v6.3.2

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2023-53798.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
5.12.0
Fixed
5.15.112
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.1.29
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.2.16
Type
ECOSYSTEM
Events
Introduced
6.3.0
Fixed
6.3.3

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2023-53798.json"