CVE-2024-26870

NFSv4.2: fix nfs4_listxattr kernel BUG at mm/usercopy.c:102

State
Published
Severity
7.8 High
Published
Apr 17, 2024
Updated
Oct 15, 2026
Reserved
Feb 19, 2024

Read the record on cve.org

Description

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

NFSv4.2: fix nfs4_listxattr kernel BUG at mm/usercopy.c:102

A call to listxattr() with a buffer size = 0 returns the actual size of the buffer needed for a subsequent call. When size > 0, nfs4_listxattr() does not return an error because either generic_listxattr() or nfs4_listxattr_nfs4_label() consumes exactly all the bytes then size is 0 when calling nfs4_listxattr_nfs4_user() which then triggers the following kernel BUG:

[ 99.403778] kernel BUG at mm/usercopy.c:102! [ 99.404063] Internal error: Oops - BUG: 00000000f2000800 [#1] SMP [ 99.408463] CPU: 0 PID: 3310 Comm: python3 Not tainted 6.6.0-61.fc40.aarch64 #1 [ 99.415827] Call trace: [ 99.415985] usercopy_abort+0x70/0xa0 [ 99.416227] __check_heap_object+0x134/0x158 [ 99.416505] check_heap_object+0x150/0x188 [ 99.416696] __check_object_size.part.0+0x78/0x168 [ 99.416886] __check_object_size+0x28/0x40 [ 99.417078] listxattr+0x8c/0x120 [ 99.417252] path_listxattr+0x78/0xe0 [ 99.417476] __arm64_sys_listxattr+0x28/0x40 [ 99.417723] invoke_syscall+0x78/0x100 [ 99.417929] el0_svc_common.constprop.0+0x48/0xf0 [ 99.418186] do_el0_svc+0x24/0x38 [ 99.418376] el0_svc+0x3c/0x110 [ 99.418554] el0t_64_sync_handler+0x120/0x130 [ 99.418788] el0t_64_sync+0x194/0x198 [ 99.418994] Code: aa0003e3 d000a3e0 91310000 97f49bdb (d4210000)

Issue is reproduced when generic_listxattr() returns 'system.nfs4_acl', thus calling lisxattr() with size = 16 will trigger the bug.

Add check on nfs4_listxattr() to return ERANGE error when it is called with size > 0 and the return value is greater than size.

Scores

CVSSScoreVectorSource
3.17.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 012a211abd5db098094ce429de5f046368391e68 to before 4403438eaca6e91f02d272211c4d6b045092396bAffected
  • 012a211abd5db098094ce429de5f046368391e68 to before 9d52865ff28245fc2134da9f99baff603a24407aAffected
  • 012a211abd5db098094ce429de5f046368391e68 to before 06e828b3f1b206de08ef520fc46a40b22e1869cbAffected
  • 012a211abd5db098094ce429de5f046368391e68 to before 79cdcc765969d23f4e3d6ea115660c3333498768Affected
  • 012a211abd5db098094ce429de5f046368391e68 to before 80365c9f96015bbf048fdd6c8705d3f8770132bfAffected
  • 012a211abd5db098094ce429de5f046368391e68 to before 23bfecb4d852751d5e403557dd500bb563313bafAffected
  • 012a211abd5db098094ce429de5f046368391e68 to before 251a658bbfceafb4d58c76b77682c8bf7bcfad65Affected
LinuxLinux
  • 5.9Affected
  • before 5.9Not affected
  • 5.10.214 through 5.10.*Not affected
  • 5.15.153 through 5.15.*Not affected
  • 6.1.83 through 6.1.*Not affected
  • 6.6.23 through 6.6.*Not affected
  • 6.7.11 through 6.7.*Not affected
  • 6.8.2 through 6.8.*Not affected
  • 6.9 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.