Race Condition Affecting kernel-livepatch-6.1.102-108.177 package, versions <0:1.0-0.amzn2023


Severity

Recommended
high

Based on Amazon Linux security rating.

Threat Intelligence

EPSS
0.05% (18th percentile)

Do your applications use this vulnerable package?

In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.

Test your applications

Snyk Learn

Learn about Race Condition vulnerabilities in an interactive lesson.

Start learning
  • Snyk IDSNYK-AMZN2023-KERNELLIVEPATCH61102108177-7709557
  • published20 Aug 2024
  • disclosed29 Jul 2024

Introduced: 29 Jul 2024

CVE-2024-41050  (opens in a new tab)
CWE-362  (opens in a new tab)

How to fix?

Upgrade Amazon-Linux:2023 kernel-livepatch-6.1.102-108.177 to version 0:1.0-0.amzn2023 or higher.
This issue was patched in ALAS2023-2024-679.

NVD Description

Note: Versions mentioned in the description apply only to the upstream kernel-livepatch-6.1.102-108.177 package and not the kernel-livepatch-6.1.102-108.177 package as distributed by Amazon-Linux. See How to fix? for Amazon-Linux:2023 relevant fixed versions and status.

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.

CVSS Scores

version 3.1