CVE-2025-38347 (GCVE-0-2025-38347)
Vulnerability from cvelistv5
Published
2025-07-10 08:15
Modified
2025-07-28 04:19
Severity ?
VLAI Severity ?
EPSS score ?
Summary
In the Linux kernel, the following vulnerability has been resolved:
f2fs: fix to do sanity check on ino and xnid
syzbot reported a f2fs bug as below:
INFO: task syz-executor140:5308 blocked for more than 143 seconds.
Not tainted 6.14.0-rc7-syzkaller-00069-g81e4f8d68c66 #0
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
task:syz-executor140 state:D stack:24016 pid:5308 tgid:5308 ppid:5306 task_flags:0x400140 flags:0x00000006
Call Trace:
<TASK>
context_switch kernel/sched/core.c:5378 [inline]
__schedule+0x190e/0x4c90 kernel/sched/core.c:6765
__schedule_loop kernel/sched/core.c:6842 [inline]
schedule+0x14b/0x320 kernel/sched/core.c:6857
io_schedule+0x8d/0x110 kernel/sched/core.c:7690
folio_wait_bit_common+0x839/0xee0 mm/filemap.c:1317
__folio_lock mm/filemap.c:1664 [inline]
folio_lock include/linux/pagemap.h:1163 [inline]
__filemap_get_folio+0x147/0xb40 mm/filemap.c:1917
pagecache_get_page+0x2c/0x130 mm/folio-compat.c:87
find_get_page_flags include/linux/pagemap.h:842 [inline]
f2fs_grab_cache_page+0x2b/0x320 fs/f2fs/f2fs.h:2776
__get_node_page+0x131/0x11b0 fs/f2fs/node.c:1463
read_xattr_block+0xfb/0x190 fs/f2fs/xattr.c:306
lookup_all_xattrs fs/f2fs/xattr.c:355 [inline]
f2fs_getxattr+0x676/0xf70 fs/f2fs/xattr.c:533
__f2fs_get_acl+0x52/0x870 fs/f2fs/acl.c:179
f2fs_acl_create fs/f2fs/acl.c:375 [inline]
f2fs_init_acl+0xd7/0x9b0 fs/f2fs/acl.c:418
f2fs_init_inode_metadata+0xa0f/0x1050 fs/f2fs/dir.c:539
f2fs_add_inline_entry+0x448/0x860 fs/f2fs/inline.c:666
f2fs_add_dentry+0xba/0x1e0 fs/f2fs/dir.c:765
f2fs_do_add_link+0x28c/0x3a0 fs/f2fs/dir.c:808
f2fs_add_link fs/f2fs/f2fs.h:3616 [inline]
f2fs_mknod+0x2e8/0x5b0 fs/f2fs/namei.c:766
vfs_mknod+0x36d/0x3b0 fs/namei.c:4191
unix_bind_bsd net/unix/af_unix.c:1286 [inline]
unix_bind+0x563/0xe30 net/unix/af_unix.c:1379
__sys_bind_socket net/socket.c:1817 [inline]
__sys_bind+0x1e4/0x290 net/socket.c:1848
__do_sys_bind net/socket.c:1853 [inline]
__se_sys_bind net/socket.c:1851 [inline]
__x64_sys_bind+0x7a/0x90 net/socket.c:1851
do_syscall_x64 arch/x86/entry/common.c:52 [inline]
do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
entry_SYSCALL_64_after_hwframe+0x77/0x7f
Let's dump and check metadata of corrupted inode, it shows its xattr_nid
is the same to its i_ino.
dump.f2fs -i 3 chaseyu.img.raw
i_xattr_nid [0x 3 : 3]
So that, during mknod in the corrupted directory, it tries to get and
lock inode page twice, result in deadlock.
- f2fs_mknod
- f2fs_add_inline_entry
- f2fs_get_inode_page --- lock dir's inode page
- f2fs_init_acl
- f2fs_acl_create(dir,..)
- __f2fs_get_acl
- f2fs_getxattr
- lookup_all_xattrs
- __get_node_page --- try to lock dir's inode page
In order to fix this, let's add sanity check on ino and xnid.
References
Impacted products
{ "containers": { "cna": { "affected": [ { "defaultStatus": "unaffected", "product": "Linux", "programFiles": [ "fs/f2fs/inode.c" ], "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "vendor": "Linux", "versions": [ { "lessThan": "aaddc6c696bd1bff20eaacfa88579d6eae64d541", "status": "affected", "version": "98e4da8ca301e062d79ae168c67e56f3c3de3ce4", "versionType": "git" }, { "lessThan": "fed611bd8c7b76b070aa407d0c7558e20d9e1f68", "status": "affected", "version": "98e4da8ca301e062d79ae168c67e56f3c3de3ce4", "versionType": "git" }, { "lessThan": "5a06d97d5340c00510f24e80e8de821bd3bd9285", "status": "affected", "version": "98e4da8ca301e062d79ae168c67e56f3c3de3ce4", "versionType": "git" }, { "lessThan": "061cf3a84bde038708eb0f1d065b31b7c2456533", "status": "affected", "version": "98e4da8ca301e062d79ae168c67e56f3c3de3ce4", "versionType": "git" } ] }, { "defaultStatus": "affected", "product": "Linux", "programFiles": [ "fs/f2fs/inode.c" ], "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "vendor": "Linux", "versions": [ { "status": "affected", "version": "3.8" }, { "lessThan": "3.8", "status": "unaffected", "version": "0", "versionType": "semver" }, { "lessThanOrEqual": "6.6.*", "status": "unaffected", "version": "6.6.95", "versionType": "semver" }, { "lessThanOrEqual": "6.12.*", "status": "unaffected", "version": "6.12.35", "versionType": "semver" }, { "lessThanOrEqual": "6.15.*", "status": "unaffected", "version": "6.15.4", "versionType": "semver" }, { "lessThanOrEqual": "*", "status": "unaffected", "version": "6.16", "versionType": "original_commit_for_fix" } ] } ], "cpeApplicability": [ { "nodes": [ { "cpeMatch": [ { "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionEndExcluding": "6.6.95", "versionStartIncluding": "3.8", "vulnerable": true }, { "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionEndExcluding": "6.12.35", "versionStartIncluding": "3.8", "vulnerable": true }, { "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionEndExcluding": "6.15.4", "versionStartIncluding": "3.8", "vulnerable": true }, { "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionEndExcluding": "6.16", "versionStartIncluding": "3.8", "vulnerable": true } ], "negate": false, "operator": "OR" } ] } ], "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nf2fs: fix to do sanity check on ino and xnid\n\nsyzbot reported a f2fs bug as below:\n\nINFO: task syz-executor140:5308 blocked for more than 143 seconds.\n Not tainted 6.14.0-rc7-syzkaller-00069-g81e4f8d68c66 #0\n\"echo 0 \u003e /proc/sys/kernel/hung_task_timeout_secs\" disables this message.\ntask:syz-executor140 state:D stack:24016 pid:5308 tgid:5308 ppid:5306 task_flags:0x400140 flags:0x00000006\nCall Trace:\n \u003cTASK\u003e\n context_switch kernel/sched/core.c:5378 [inline]\n __schedule+0x190e/0x4c90 kernel/sched/core.c:6765\n __schedule_loop kernel/sched/core.c:6842 [inline]\n schedule+0x14b/0x320 kernel/sched/core.c:6857\n io_schedule+0x8d/0x110 kernel/sched/core.c:7690\n folio_wait_bit_common+0x839/0xee0 mm/filemap.c:1317\n __folio_lock mm/filemap.c:1664 [inline]\n folio_lock include/linux/pagemap.h:1163 [inline]\n __filemap_get_folio+0x147/0xb40 mm/filemap.c:1917\n pagecache_get_page+0x2c/0x130 mm/folio-compat.c:87\n find_get_page_flags include/linux/pagemap.h:842 [inline]\n f2fs_grab_cache_page+0x2b/0x320 fs/f2fs/f2fs.h:2776\n __get_node_page+0x131/0x11b0 fs/f2fs/node.c:1463\n read_xattr_block+0xfb/0x190 fs/f2fs/xattr.c:306\n lookup_all_xattrs fs/f2fs/xattr.c:355 [inline]\n f2fs_getxattr+0x676/0xf70 fs/f2fs/xattr.c:533\n __f2fs_get_acl+0x52/0x870 fs/f2fs/acl.c:179\n f2fs_acl_create fs/f2fs/acl.c:375 [inline]\n f2fs_init_acl+0xd7/0x9b0 fs/f2fs/acl.c:418\n f2fs_init_inode_metadata+0xa0f/0x1050 fs/f2fs/dir.c:539\n f2fs_add_inline_entry+0x448/0x860 fs/f2fs/inline.c:666\n f2fs_add_dentry+0xba/0x1e0 fs/f2fs/dir.c:765\n f2fs_do_add_link+0x28c/0x3a0 fs/f2fs/dir.c:808\n f2fs_add_link fs/f2fs/f2fs.h:3616 [inline]\n f2fs_mknod+0x2e8/0x5b0 fs/f2fs/namei.c:766\n vfs_mknod+0x36d/0x3b0 fs/namei.c:4191\n unix_bind_bsd net/unix/af_unix.c:1286 [inline]\n unix_bind+0x563/0xe30 net/unix/af_unix.c:1379\n __sys_bind_socket net/socket.c:1817 [inline]\n __sys_bind+0x1e4/0x290 net/socket.c:1848\n __do_sys_bind net/socket.c:1853 [inline]\n __se_sys_bind net/socket.c:1851 [inline]\n __x64_sys_bind+0x7a/0x90 net/socket.c:1851\n do_syscall_x64 arch/x86/entry/common.c:52 [inline]\n do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83\n entry_SYSCALL_64_after_hwframe+0x77/0x7f\n\nLet\u0027s dump and check metadata of corrupted inode, it shows its xattr_nid\nis the same to its i_ino.\n\ndump.f2fs -i 3 chaseyu.img.raw\ni_xattr_nid [0x 3 : 3]\n\nSo that, during mknod in the corrupted directory, it tries to get and\nlock inode page twice, result in deadlock.\n\n- f2fs_mknod\n - f2fs_add_inline_entry\n - f2fs_get_inode_page --- lock dir\u0027s inode page\n - f2fs_init_acl\n - f2fs_acl_create(dir,..)\n - __f2fs_get_acl\n - f2fs_getxattr\n - lookup_all_xattrs\n - __get_node_page --- try to lock dir\u0027s inode page\n\nIn order to fix this, let\u0027s add sanity check on ino and xnid." } ], "providerMetadata": { "dateUpdated": "2025-07-28T04:19:33.548Z", "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux" }, "references": [ { "url": "https://git.kernel.org/stable/c/aaddc6c696bd1bff20eaacfa88579d6eae64d541" }, { "url": "https://git.kernel.org/stable/c/fed611bd8c7b76b070aa407d0c7558e20d9e1f68" }, { "url": "https://git.kernel.org/stable/c/5a06d97d5340c00510f24e80e8de821bd3bd9285" }, { "url": "https://git.kernel.org/stable/c/061cf3a84bde038708eb0f1d065b31b7c2456533" } ], "title": "f2fs: fix to do sanity check on ino and xnid", "x_generator": { "engine": "bippy-1.2.0" } } }, "cveMetadata": { "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "assignerShortName": "Linux", "cveId": "CVE-2025-38347", "datePublished": "2025-07-10T08:15:14.907Z", "dateReserved": "2025-04-16T04:51:24.006Z", "dateUpdated": "2025-07-28T04:19:33.548Z", "state": "PUBLISHED" }, "dataType": "CVE_RECORD", "dataVersion": "5.1", "vulnerability-lookup:meta": { "nvd": "{\"cve\":{\"id\":\"CVE-2025-38347\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-07-10T09:15:29.717\",\"lastModified\":\"2025-07-10T13:17:30.017\",\"vulnStatus\":\"Awaiting Analysis\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nf2fs: fix to do sanity check on ino and xnid\\n\\nsyzbot reported a f2fs bug as below:\\n\\nINFO: task syz-executor140:5308 blocked for more than 143 seconds.\\n Not tainted 6.14.0-rc7-syzkaller-00069-g81e4f8d68c66 #0\\n\\\"echo 0 \u003e /proc/sys/kernel/hung_task_timeout_secs\\\" disables this message.\\ntask:syz-executor140 state:D stack:24016 pid:5308 tgid:5308 ppid:5306 task_flags:0x400140 flags:0x00000006\\nCall Trace:\\n \u003cTASK\u003e\\n context_switch kernel/sched/core.c:5378 [inline]\\n __schedule+0x190e/0x4c90 kernel/sched/core.c:6765\\n __schedule_loop kernel/sched/core.c:6842 [inline]\\n schedule+0x14b/0x320 kernel/sched/core.c:6857\\n io_schedule+0x8d/0x110 kernel/sched/core.c:7690\\n folio_wait_bit_common+0x839/0xee0 mm/filemap.c:1317\\n __folio_lock mm/filemap.c:1664 [inline]\\n folio_lock include/linux/pagemap.h:1163 [inline]\\n __filemap_get_folio+0x147/0xb40 mm/filemap.c:1917\\n pagecache_get_page+0x2c/0x130 mm/folio-compat.c:87\\n find_get_page_flags include/linux/pagemap.h:842 [inline]\\n f2fs_grab_cache_page+0x2b/0x320 fs/f2fs/f2fs.h:2776\\n __get_node_page+0x131/0x11b0 fs/f2fs/node.c:1463\\n read_xattr_block+0xfb/0x190 fs/f2fs/xattr.c:306\\n lookup_all_xattrs fs/f2fs/xattr.c:355 [inline]\\n f2fs_getxattr+0x676/0xf70 fs/f2fs/xattr.c:533\\n __f2fs_get_acl+0x52/0x870 fs/f2fs/acl.c:179\\n f2fs_acl_create fs/f2fs/acl.c:375 [inline]\\n f2fs_init_acl+0xd7/0x9b0 fs/f2fs/acl.c:418\\n f2fs_init_inode_metadata+0xa0f/0x1050 fs/f2fs/dir.c:539\\n f2fs_add_inline_entry+0x448/0x860 fs/f2fs/inline.c:666\\n f2fs_add_dentry+0xba/0x1e0 fs/f2fs/dir.c:765\\n f2fs_do_add_link+0x28c/0x3a0 fs/f2fs/dir.c:808\\n f2fs_add_link fs/f2fs/f2fs.h:3616 [inline]\\n f2fs_mknod+0x2e8/0x5b0 fs/f2fs/namei.c:766\\n vfs_mknod+0x36d/0x3b0 fs/namei.c:4191\\n unix_bind_bsd net/unix/af_unix.c:1286 [inline]\\n unix_bind+0x563/0xe30 net/unix/af_unix.c:1379\\n __sys_bind_socket net/socket.c:1817 [inline]\\n __sys_bind+0x1e4/0x290 net/socket.c:1848\\n __do_sys_bind net/socket.c:1853 [inline]\\n __se_sys_bind net/socket.c:1851 [inline]\\n __x64_sys_bind+0x7a/0x90 net/socket.c:1851\\n do_syscall_x64 arch/x86/entry/common.c:52 [inline]\\n do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83\\n entry_SYSCALL_64_after_hwframe+0x77/0x7f\\n\\nLet\u0027s dump and check metadata of corrupted inode, it shows its xattr_nid\\nis the same to its i_ino.\\n\\ndump.f2fs -i 3 chaseyu.img.raw\\ni_xattr_nid [0x 3 : 3]\\n\\nSo that, during mknod in the corrupted directory, it tries to get and\\nlock inode page twice, result in deadlock.\\n\\n- f2fs_mknod\\n - f2fs_add_inline_entry\\n - f2fs_get_inode_page --- lock dir\u0027s inode page\\n - f2fs_init_acl\\n - f2fs_acl_create(dir,..)\\n - __f2fs_get_acl\\n - f2fs_getxattr\\n - lookup_all_xattrs\\n - __get_node_page --- try to lock dir\u0027s inode page\\n\\nIn order to fix this, let\u0027s add sanity check on ino and xnid.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: f2fs: correcci\u00f3n para realizar comprobaciones de integridad en ino y xnid. syzbot report\u00f3 un error de f2fs como el siguiente: INFORMACI\u00d3N: La tarea syz-executor140:5308 se bloque\u00f3 durante m\u00e1s de 143 segundos. No contaminada. 6.14.0-rc7-syzkaller-00069-g81e4f8d68c66 #0 \\\"echo 0 \u0026gt; /proc/sys/kernel/hung_task_timeout_secs\\\" desactiva este mensaje. tarea:syz-executor140 estado:D pila:24016 pid:5308 tgid:5308 ppid:5306 indicadores_de_tarea:0x400140 indicadores:0x00000006 Rastreo de llamadas: context_switch kernel/sched/core.c:5378 [inline] __schedule+0x190e/0x4c90 kernel/sched/core.c:6765 __schedule_loop kernel/sched/core.c:6842 [inline] schedule+0x14b/0x320 kernel/sched/core.c:6857 io_schedule+0x8d/0x110 kernel/sched/core.c:7690 folio_wait_bit_common+0x839/0xee0 mm/filemap.c:1317 __folio_lock mm/filemap.c:1664 [inline] folio_lock include/linux/pagemap.h:1163 [inline] __filemap_get_folio+0x147/0xb40 mm/filemap.c:1917 pagecache_get_page+0x2c/0x130 mm/folio-compat.c:87 find_get_page_flags include/linux/pagemap.h:842 [inline] f2fs_grab_cache_page+0x2b/0x320 fs/f2fs/f2fs.h:2776 __get_node_page+0x131/0x11b0 fs/f2fs/node.c:1463 read_xattr_block+0xfb/0x190 fs/f2fs/xattr.c:306 lookup_all_xattrs fs/f2fs/xattr.c:355 [inline] f2fs_getxattr+0x676/0xf70 fs/f2fs/xattr.c:533 __f2fs_get_acl+0x52/0x870 fs/f2fs/acl.c:179 f2fs_acl_create fs/f2fs/acl.c:375 [inline] f2fs_init_acl+0xd7/0x9b0 fs/f2fs/acl.c:418 f2fs_init_inode_metadata+0xa0f/0x1050 fs/f2fs/dir.c:539 f2fs_add_inline_entry+0x448/0x860 fs/f2fs/inline.c:666 f2fs_add_dentry+0xba/0x1e0 fs/f2fs/dir.c:765 f2fs_do_add_link+0x28c/0x3a0 fs/f2fs/dir.c:808 f2fs_add_link fs/f2fs/f2fs.h:3616 [inline] f2fs_mknod+0x2e8/0x5b0 fs/f2fs/namei.c:766 vfs_mknod+0x36d/0x3b0 fs/namei.c:4191 unix_bind_bsd net/unix/af_unix.c:1286 [inline] unix_bind+0x563/0xe30 net/unix/af_unix.c:1379 __sys_bind_socket net/socket.c:1817 [inline] __sys_bind+0x1e4/0x290 net/socket.c:1848 __do_sys_bind net/socket.c:1853 [inline] __se_sys_bind net/socket.c:1851 [inline] __x64_sys_bind+0x7a/0x90 net/socket.c:1851 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f Volcamos y verificamos los metadatos del inodo da\u00f1ado, muestra que su xattr_nid es el mismo que su i_ino. dump.f2fs -i 3 chaseyu.img.raw i_xattr_nid [0x 3 : 3] Entonces, durante mknod en el directorio da\u00f1ado, intenta obtener y bloquear la p\u00e1gina del inodo dos veces, lo que da como resultado un bloqueo. - f2fs_mknod - f2fs_add_inline_entry - f2fs_get_inode_page --- bloquear la p\u00e1gina de inodo del directorio - f2fs_init_acl - f2fs_acl_create(dir,..) - __f2fs_get_acl - f2fs_getxattr - lookup_all_xattrs - __get_node_page --- intentar bloquear la p\u00e1gina de inodo del directorio Para solucionar esto, agreguemos una verificaci\u00f3n de cordura en ino y xnid.\"}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/061cf3a84bde038708eb0f1d065b31b7c2456533\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/5a06d97d5340c00510f24e80e8de821bd3bd9285\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/aaddc6c696bd1bff20eaacfa88579d6eae64d541\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/fed611bd8c7b76b070aa407d0c7558e20d9e1f68\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}" } }
Loading…
Loading…
Sightings
Author | Source | Type | Date |
---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.
Loading…
Loading…