CVE-2023-52803

Source
https://cve.org/CVERecord?id=CVE-2023-52803
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2023-52803.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2023-52803
Downstream
Related
Published
2024-05-21T15:31:15.063Z
Modified
2026-03-13T07:48:11.918425Z
Summary
SUNRPC: Fix RPC client cleaned up the freed pipefs dentries
Details

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

SUNRPC: Fix RPC client cleaned up the freed pipefs dentries

RPC client pipefs dentries cleanup is in separated rpcremovepipedir() workqueue,which takes care about pipefs superblock locking. In some special scenarios, when kernel frees the pipefs sb of the current client and immediately alloctes a new pipefs sb, rpcremovepipedir function would misjudge the existence of pipefs sb which is not the one it used to hold. As a result, the rpcremovepipedir would clean the released freed pipefs dentries.

To fix this issue, rpcremovepipedir should check whether the current pipefs sb is consistent with the original pipefs sb.

This error can be catched by KASAN:

[ 250.497700] BUG: KASAN: slab-use-after-free in dgetparent+0x195/0x200 [ 250.498315] Read of size 4 at addr ffff88800a2ab804 by task kworker/0:18/106503 [ 250.500549] Workqueue: events rpcfreeclientwork [ 250.501001] Call Trace: [ 250.502880] kasanreport+0xb6/0xf0 [ 250.503209] ? dgetparent+0x195/0x200 [ 250.503561] dget_parent+0x195/0x200 [ 250.503897] ? __pfxrpcclntdirdepopulate+0x10/0x10 [ 250.504384] rpcrmdirdepopulate+0x1b/0x90 [ 250.504781] rpcremoveclientdir+0xf5/0x150 [ 250.505195] rpcfreeclientwork+0xe4/0x230 [ 250.505598] processonework+0x8ee/0x13b0 ... [ 22.039056] Allocated by task 244: [ 22.039390] kasansavestack+0x22/0x50 [ 22.039758] kasanset_track+0x25/0x30 [ 22.040109] __kasanslaballoc+0x59/0x70 [ 22.040487] kmemcachealloc_lru+0xf0/0x240 [ 22.040889] __dalloc+0x31/0x8e0 [ 22.041207] dalloc+0x44/0x1f0 [ 22.041514] __rpclookupcreateexclusive+0x11c/0x140 [ 22.041987] rpcmkdir_populate.constprop.0+0x5f/0x110 [ 22.042459] rpccreateclientdir+0x34/0x150 [ 22.042874] rpcsetuppipedirsb+0x102/0x1c0 [ 22.043284] rpcclientregister+0x136/0x4e0 [ 22.043689] rpcnewclient+0x911/0x1020 [ 22.044057] rpccreatexprt+0xcb/0x370 [ 22.044417] rpccreate+0x36b/0x6c0 ... [ 22.049524] Freed by task 0: [ 22.049803] kasansavestack+0x22/0x50 [ 22.050165] kasansettrack+0x25/0x30 [ 22.050520] kasansavefreeinfo+0x2b/0x50 [ 22.050921] __kasanslabfree+0x10e/0x1a0 [ 22.051306] kmem_cachefree+0xa5/0x390 [ 22.051667] rcucore+0x62c/0x1930 [ 22.051995] __dosoftirq+0x165/0x52a [ 22.052347] [ 22.052503] Last potentially related work creation: [ 22.052952] kasansave_stack+0x22/0x50 [ 22.053313] __kasanrecordaux_stack+0x8e/0xa0 [ 22.053739] __callrcucommon.constprop.0+0x6b/0x8b0 [ 22.054209] dentry_free+0xb2/0x140 [ 22.054540] __dentrykill+0x3be/0x540 [ 22.054900] shrinkdentrylist+0x199/0x510 [ 22.055293] shrinkdcacheparent+0x190/0x240 [ 22.055703] doonetree+0x11/0x40 [ 22.056028] shrinkdcacheforumount+0x61/0x140 [ 22.056461] genericshutdownsuper+0x70/0x590 [ 22.056879] killanonsuper+0x3a/0x60 [ 22.057234] rpckillsb+0x121/0x200

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/52xxx/CVE-2023-52803.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
0157d021d23a087eecfa830502f81cfe843f0d16
Fixed
17866066b8ac1cc38fb449670bc15dc9fee4b40a
Fixed
7d61d1da2ed1f682c41cae0c8d4719cdaccee5c5
Fixed
dedf2a0eb9448ae73b270743e6ea9b108189df46
Fixed
194454afa6aa9d6ed74f0c57127bc8beb27c20df
Fixed
7749fd2dbef72a52b5c9ffdbf877691950ed4680
Fixed
1cdb52ffd6600a37bd355d8dce58ecd03e55e618
Fixed
cc2e7ebbeb1d0601f7f3c8d93b78fcc03a95e44a
Fixed
bfca5fb4e97c46503ddfc582335917b0cc228264

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2023-52803.json"