CVE-2023-52528

net: usb: smsc75xx: Fix uninit-value access in __smsc75xx_read_reg

published March 2, 2024

CVSS
—
EPSS
0%
Percentile
13.1
In the wild
Unconfirmed
What it is

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

net: usb: smsc75xx: Fix uninit-value access in __smsc75xx_read_reg

syzbot reported the following uninit-value access issue:

=====================================================

BUG: KMSAN: uninit-value in smsc75xx_wait_ready drivers/net/usb/smsc75xx.c:975 [inline]

BUG: KMSAN: uninit-value in smsc75xx_bind+0x5c9/0x11e0 drivers/net/usb/smsc75xx.c:1482

CPU: 0 PID: 8696 Comm: kworker/0:3 Not tainted 5.8.0-rc5-syzkaller #0

Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011

Workqueue: usb_hub_wq hub_event

Call Trace:

__dump_stack lib/dump_stack.c:77 [inline]

dump_stack+0x21c/0x280 lib/dump_stack.c:118

kmsan_report+0xf7/0x1e0 mm/kmsan/kmsan_report.c:121

__msan_warning+0x58/0xa0 mm/kmsan/kmsan_instr.c:215

smsc75xx_wait_ready drivers/net/usb/smsc75xx.c:975 [inline]

smsc75xx_bind+0x5c9/0x11e0 drivers/net/usb/smsc75xx.c:1482

usbnet_probe+0x1152/0x3f90 drivers/net/usb/usbnet.c:1737

usb_probe_interface+0xece/0x1550 drivers/usb/core/driver.c:374

really_probe+0xf20/0x20b0 drivers/base/dd.c:529

driver_probe_device+0x293/0x390 drivers/base/dd.c:701

__device_attach_driver+0x63f/0x830 drivers/base/dd.c:807

bus_for_each_drv+0x2ca/0x3f0 drivers/base/bus.c:431

__device_attach+0x4e2/0x7f0 drivers/base/dd.c:873

device_initial_probe+0x4a/0x60 drivers/base/dd.c:920

bus_probe_device+0x177/0x3d0 drivers/base/bus.c:491

device_add+0x3b0e/0x40d0 drivers/base/core.c:2680

usb_set_configuration+0x380f/0x3f10 drivers/usb/core/message.c:2032

usb_generic_driver_probe+0x138/0x300 drivers/usb/core/generic.c:241

usb_probe_device+0x311/0x490 drivers/usb/core/driver.c:272

really_probe+0xf20/0x20b0 drivers/base/dd.c:529

driver_probe_device+0x293/0x390 drivers/base/dd.c:701

__device_attach_driver+0x63f/0x830 drivers/base/dd.c:807

bus_for_each_drv+0x2ca/0x3f0 drivers/base/bus.c:431

__device_attach+0x4e2/0x7f0 drivers/base/dd.c:873

device_initial_probe+0x4a/0x60 drivers/base/dd.c:920

bus_probe_device+0x177/0x3d0 drivers/base/bus.c:491

device_add+0x3b0e/0x40d0 drivers/base/core.c:2680

usb_new_device+0x1bd4/0x2a30 drivers/usb/core/hub.c:2554

hub_port_connect drivers/usb/core/hub.c:5208 [inline]

hub_port_connect_change drivers/usb/core/hub.c:5348 [inline]

port_event drivers/usb/core/hub.c:5494 [inline]

hub_event+0x5e7b/0x8a70 drivers/usb/core/hub.c:5576

process_one_work+0x1688/0x2140 kernel/workqueue.c:2269

worker_thread+0x10bc/0x2730 kernel/workqueue.c:2415

kthread+0x551/0x590 kernel/kthread.c:292

ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:293

Local variable ----buf.i87@smsc75xx_bind created at:

__smsc75xx_read_reg drivers/net/usb/smsc75xx.c:83 [inline]

smsc75xx_wait_ready drivers/net/usb/smsc75xx.c:968 [inline]

smsc75xx_bind+0x485/0x11e0 drivers/net/usb/smsc75xx.c:1482

__smsc75xx_read_reg drivers/net/usb/smsc75xx.c:83 [inline]

smsc75xx_wait_ready drivers/net/usb/smsc75xx.c:968 [inline]

smsc75xx_bind+0x485/0x11e0 drivers/net/usb/smsc75xx.c:1482

This issue is caused because usbnet_read_cmd() reads less bytes than requested

(zero byte in the reproducer). In this case, 'buf' is not properly filled.

This patch fixes the issue by returning -ENODATA if usbnet_read_cmd() reads

less bytes than requested.

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00230 · 13.1th percentile
Published
2024-03-02T21:52Z
EPSS history
Timeline
  • 02 MAR 21:52Z
    net: usb: smsc75xx: Fix uninit-value access in __smsc75xx_read_reg
    cvelistv5