CVE-2024-41050 cachefiles: cyclic allocation of msg_id to avoid reuse

High 7.8 Published Updated

A race condition in the Linux kernel cachefiles module allows a malicious user to cause a system hang by reusing message IDs during object reopening.

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-2024-41050?

CVE-2024-41050 is a high-severity vulnerability in Linux kernel, published on 29 Jul 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:

cachefiles: cyclic allocation of msg_id to avoid reuse

Reusing the msg_id after a maliciously completed reopen request may cause a read request to remain unprocessed and result in a hung, as shown below:

t1 | t2 | t3 ------------------------------------------------- cachefiles_ondemand_select_req cachefiles_ondemand_object_is_close(A) cachefiles_ondemand_set_object_reopening(A) queue_work(fscache_object_wq, &info->work) ondemand_object_worker cachefiles_ondemand_init_object(A) cachefiles_ondemand_send_req(OPEN) // get msg_id 6 wait_for_completion(&req_A->done) cachefiles_ondemand_daemon_read // read msg_id 6 req_A cachefiles_ondemand_get_fd copy_to_user // Malicious completion msg_id 6 copen 6,-1 cachefiles_ondemand_copen complete(&req_A->done) // will not set the object to close // because ondemand_id && fd is valid.

// ondemand_object_worker() is done // but the object is still reopening.

// new open req_B cachefiles_ondemand_init_object(B) cachefiles_ondemand_send_req(OPEN) // reuse msg_id 6 process_open_req copen 6,A.size // The expected failed copen was executed successfully

Expect copen to fail, and when it does, it closes fd, which sets the object to close, and then close triggers reopen again. However, due to msg_id reuse resulting in a successful copen, the anonymous fd is not closed until the daemon exits. Therefore read requests waiting for reopen to complete may trigger hung task.

To avoid this issue, allocate the msg_id cyclically to avoid reusing the msg_id for a very short duration of time.

Weakness: CWE-416

Which versions are affected by CVE-2024-41050?

It affects 1 product.

Products include Linux kernel.

How do I fix CVE-2024-41050?

Apply the vendor's patch.

Is CVE-2024-41050 being exploited?

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

All Linux kernel vulnerabilities

Sources

Also known as BELL-CVE-2024-41050, DEBIAN-CVE-2024-41050, GHSA-f68f-787f-7j6w, ROOT-OS-UBUNTU-2204-CVE-2024-41050, UBUNTU-CVE-2024-41050.

Is CVE-2024-41050 in your software?

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

Check your SBOMs for free