CVE Database
/

CVE-2023-52854

Back to search

CVE-2023-52854

Published: May 21, 2024

Modified: May 23, 2026

PUBLISHED

Description

In the Linux kernel, the following vulnerability has been resolved: padata: Fix refcnt handling in padata_free_shell() In a high-load arm64 environment, the pcrypt_aead01 test in LTP can lead to system UAF (Use-After-Free) issues. Due to the lengthy analysis of the pcrypt_aead01 function call, I'll describe the problem scenario using a simplified model: Suppose there's a user of padata named `user_function` that adheres to the padata requirement of calling `padata_free_shell` after `serial()` has been invoked, as demonstrated in the following code: ```c struct request { struct padata_priv padata; struct completion *done; }; void parallel(struct padata_priv *padata) { do_something(); } void serial(struct padata_priv *padata) { struct request *request = container_of(padata, struct request, padata); complete(request->done); } void user_function() { DECLARE_COMPLETION(done) padata->parallel = parallel; padata->serial = serial; padata_do_parallel(); wait_for_completion(&done); padata_free_shell(); } ``` In the corresponding padata.c file, there's the following code: ```c static void padata_serial_worker(struct work_struct *serial_work) { ... cnt = 0; while (!list_empty(&local_list)) { ... padata->serial(padata); cnt++; } local_bh_enable(); if (refcount_sub_and_test(cnt, &pd->refcnt)) padata_free_pd(pd); } ``` Because of the high system load and the accumulation of unexecuted softirq at this moment, `local_bh_enable()` in padata takes longer to execute than usual. Subsequently, when accessing `pd->refcnt`, `pd` has already been released by `padata_free_shell()`, resulting in a UAF issue with `pd->refcnt`. The fix is straightforward: add `refcount_dec_and_test` before calling `padata_free_pd` in `padata_free_shell`.

VendorProductVersions

Linux

Linux

affected
07928d9bfc81640bab36f5190e8725894d93b659 - < 41aad9d6953984d134fc50f631f24ef476875d4d
affected
07928d9bfc81640bab36f5190e8725894d93b659 - < 0dd34a7ad395dbcf6ae60e48e9786050e25b9bc5
affected
07928d9bfc81640bab36f5190e8725894d93b659 - < c7c26d0ef5d20f00dbb2ae3befcabbe0efa77275
affected
07928d9bfc81640bab36f5190e8725894d93b659 - < 1e901bcb8af19416b65f5063a4af7996e5a51d7f
affected
07928d9bfc81640bab36f5190e8725894d93b659 - < 1734a79e951914f1db2c65e635012a35db1c674b

+15 more versions

Linux

Linux

affected
5.6
unaffected
0 - < 5.6
unaffected
5.10.201 - <= 5.10.*
unaffected
5.15.139 - <= 5.15.*
unaffected
6.1.63 - <= 6.1.*

+3 more versions

Security Training

Train your team to recognize and prevent security threats with our comprehensive security awareness program.

Start Training

Vulnerability Scanning

Discover vulnerabilities in your applications and infrastructure before attackers do.

Scan Now