CVE-2023-52582 netfs: Only call folio_start_fscache() one time for each folio

Medium 5.5 Published Updated

A local attacker can trigger a kernel crash in the Linux netfs subsystem by exploiting a double-call bug in folio handling during network filesystem operations.

Exploited in the wild
Not known
Login needed
Any signed-in user
Attackable
Local or same network only
Victim action needed
Not needed
Fix
Available

What is CVE-2023-52582?

CVE-2023-52582 is a medium-severity vulnerability in Linux kernel, published on 2 Mar 2024. It can only be exploited from the same machine or local network, with no action from the victim.

Official description

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

netfs: Only call folio_start_fscache() one time for each folio

If a network filesystem using netfs implements a clamp_length() function, it can set subrequest lengths smaller than a page size.

When we loop through the folios in netfs_rreq_unlock_folios() to set any folios to be written back, we need to make sure we only call folio_start_fscache() once for each folio.

Otherwise, this simple testcase:

mount -o fsc,rsize=1024,wsize=1024 127.0.0.1:/export /mnt/nfs dd if=/dev/zero of=/mnt/nfs/file.bin bs=4096 count=1 1+0 records in 1+0 records out 4096 bytes (4.1 kB, 4.0 KiB) copied, 0.0126359 s, 324 kB/s echo 3 > /proc/sys/vm/drop_caches cat /mnt/nfs/file.bin > /dev/null

will trigger an oops similar to the following:

page dumped because: VM_BUG_ON_FOLIO(folio_test_private_2(folio)) ------------[ cut here ]------------ kernel BUG at include/linux/netfs.h:44! ... CPU: 5 PID: 134 Comm: kworker/u16:5 Kdump: loaded Not tainted 6.4.0-rc5 ... RIP: 0010:netfs_rreq_unlock_folios+0x68e/0x730 [netfs] ... Call Trace: netfs_rreq_assess+0x497/0x660 [netfs] netfs_subreq_terminated+0x32b/0x610 [netfs] nfs_netfs_read_completion+0x14e/0x1a0 [nfs] nfs_read_completion+0x2f9/0x330 [nfs] rpc_free_task+0x72/0xa0 [sunrpc] rpc_async_release+0x46/0x70 [sunrpc] process_one_work+0x3bd/0x710 worker_thread+0x89/0x610 kthread+0x181/0x1c0 ret_from_fork+0x29/0x50

Which versions are affected by CVE-2023-52582?

It affects 1 product.

Products include Linux kernel.

How do I fix CVE-2023-52582?

Apply the vendor's patch.

Is CVE-2023-52582 being exploited?

There is no known exploitation of CVE-2023-52582 in the wild and no public exploit code.

All Linux kernel vulnerabilities

Sources

Also known as AZL-55796, BELL-CVE-2023-52582, DEBIAN-CVE-2023-52582, GHSA-2g8r-g5wp-xcxp, ROOT-OS-UBUNTU-2204-CVE-2023-52582, UBUNTU-CVE-2023-52582.

Is CVE-2023-52582 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free