Linux: Out-of-bounds Read
CVE-2025-37739 is a high-severity out-of-bounds read vulnerability in Linux, with a CVSS 3.1 base score of 7.1 out of 10. It can be exploited with local access to the system by an attacker with a low-privileged account, without any action from a user. The record lists versions a67e1bf03c609a751d1740a1789af25e599966fa, 67e16ccba74dd8de0a7b10062f1e02d77432f573, 98dbf2af63de0b551082c9bc48333910e009b09f as the first without the flaw, so updating Linux to one of those releases or later removes the exposure. There is no confirmed exploitation so far. EPSS estimates a 0.2% chance of exploitation within 30 days, which is low compared with other CVEs.
High severity with no evidence of exploitation so far.
What to do
- Update Linux to a67e1bf03c609a751d1740a1789af25e599966fa or 67e16ccba74dd8de0a7b10062f1e02d77432f573 or 98dbf2af63de0b551082c9bc48333910e009b09f or 8b5e5aac44fee122947a269f9034c048e4c295de, whichever matches your release line, or a later version.
- Update Linux Kernel to 5.10.237 or 5.15.181 or 6.1.135 or 6.6.88, whichever matches your release line, or a later version.
Affected products and versions
| Vendor | Product | Affected versions | Fixed in |
|---|---|---|---|
| Linux | Linux | 98e4da8ca301e062d79ae168c67e56f3c3de3ce4 up to, but not including, a67e1bf03c609a751d1740a1789af25e599966fa; 98e4da8ca301e062d79ae168c67e56f3c3de3ce4 up to, but not including, 67e16ccba74dd8de0a7b10062f1e02d77432f573; 98e4da8ca301e062d79ae168c67e56f3c3de3ce4 up to, but not including, 98dbf2af63de0b551082c9bc48333910e009b09f; 98e4da8ca301e062d79ae168c67e56f3c3de3ce4 up to, but not including, 8b5e5aac44fee122947a269f9034c048e4c295de; 98e4da8ca301e062d79ae168c67e56f3c3de3ce4 up to, but not including, ecc461331604b07cdbdb7360dbdf78471653264c; 98e4da8ca301e062d79ae168c67e56f3c3de3ce4 up to, but not including, d7242fd7946d4cba0411effb6b5048ca55125747; 98e4da8ca301e062d79ae168c67e56f3c3de3ce4 up to, but not including, 6ba8b41d0aa4b82f90f0c416cb53fcef9696525d; 98e4da8ca301e062d79ae168c67e56f3c3de3ce4 up to, but not including, e6494977bd4a83862118a05f57a8df40256951c0; and 1 more ranges | a67e1bf03c609a751d1740a1789af25e599966fa, 67e16ccba74dd8de0a7b10062f1e02d77432f573, 98dbf2af63de0b551082c9bc48333910e009b09f, 8b5e5aac44fee122947a269f9034c048e4c295de, ecc461331604b07cdbdb7360dbdf78471653264c, d7242fd7946d4cba0411effb6b5048ca55125747 |
| Linux | Linux Kernel | 3.8 up to, but not including, 5.10.237; 5.11 up to, but not including, 5.15.181; 5.16 up to, but not including, 6.1.135; 6.2 up to, but not including, 6.6.88; 6.7 up to, but not including, 6.12.24; 6.13 up to, but not including, 6.13.12; 6.14 up to, but not including, 6.14.3 | 5.10.237, 5.15.181, 6.1.135, 6.6.88, 6.12.24, 6.13.12 |
| Debian | Debian Linux | 11.0 | Not stated |
Version data comes from the organisation that assigned the CVE. Confirm against the vendor advisory before deciding you are unaffected.
How the severity score breaks down
- Attack vector
- LocalThe attacker needs local access or must trick a user into running something.
- Attack complexity
- LowNo special conditions are needed; the attack works reliably.
- Privileges required
- LowA basic user account is enough.
- User interaction
- NoneNo action by a victim is required.
- Scope
- UnchangedImpact stays within the vulnerable component.
- Confidentiality
- HighAll data handled by the component can be read.
- Integrity
- NoneNothing can be modified.
- Availability
- HighThe component can be taken down completely.
Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H. Scored by NVD.
Official description
In the Linux kernel, the following vulnerability has been resolved: f2fs: fix to avoid out-of-bounds access in f2fs_truncate_inode_blocks() syzbot reports an UBSAN issue as below: ------------[ cut here ]------------ UBSAN: array-index-out-of-bounds in fs/f2fs/node.h:381:10 index 18446744073709550692 is out of range for type '__le32[5]' (aka 'unsigned int[5]') CPU: 0 UID: 0 PID: 5318 Comm: syz.0.0 Not tainted 6.14.0-rc3-syzkaller-00060-g6537cfb395f3 #0 Call Trace: <TASK> __dump_stack lib/dump_stack.c:94 [inline] dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120 ubsan_epilogue lib/ubsan.c:231 [inline] __ubsan_handle_out_of_bounds+0x121/0x150 lib/ubsan.c:429 get_nid fs/f2fs/node.h:381 [inline] f2fs_truncate_inode_blocks+0xa5e/0xf60 fs/f2fs/node.c:1181 f2fs_do_truncate_blocks+0x782/0x1030 fs/f2fs/file.c:808 f2fs_truncate_blocks+0x10d/0x300 fs/f2fs/file.c:836 f2fs_truncate+0x417/0x720 fs/f2fs/file.c:886 f2fs_file_write_iter+0x1bdb/0x2550 fs/f2fs/file.c:5093 aio_write+0x56b/0x7c0 fs/aio.c:1633 io_submit_one+0x8a7/0x18a0 fs/aio.c:2052 __do_sys_io_submit fs/aio.c:2111 [inline] __se_sys_io_submit+0x171/0x2e0 fs/aio.c:2081 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 RIP: 0033:0x7f238798cde9 index 18446744073709550692 (decimal, unsigned long long) = 0xfffffffffffffc64 (hexadecimal, unsigned long long) = -924 (decimal, long long) In f2fs_truncate_inode_blocks(), UBSAN detects that get_nid() tries to access .i_nid[-924], it means both offset[0] and level should zero. The possible case should be in f2fs_do_truncate_blocks(), we try to truncate inode size to zero, however, dn.ofs_in_node is zero and dn.node_page is not an inode page, so it fails to truncate inode page, and then pass zeroed free_from to f2fs_truncate_inode_blocks(), result in this issue. if (dn.ofs_in_node || IS_INODE(dn.node_page)) { f2fs_truncate_data_blocks_range(&dn, count); free_from += count; } I guess the reason why dn.node_page is not an inode page could be: there are multiple nat entries share the same node block address, once the node block address was reused, f2fs_get_node_page() may load a non-inode block. Let's add a sanity check for such condition to avoid out-of-bounds access issue.
Source: the CVE record as published by its numbering authority, via NVD and CVE.org.
The underlying weakness: Out-of-bounds Read
The product reads data past the end, or before the beginning, of the intended buffer.
How developers prevent this class of flaw
- Use a language that provides appropriate memory abstractions.
Timeline
- CVE record published.
- Record last changed materially (score, affected products, status or references).
References
Patches and release notes
- git.kernel.org/stable/c/67e16ccba74dd8de0a7b10062f1e02d77432f573
- git.kernel.org/stable/c/6ba8b41d0aa4b82f90f0c416cb53fcef9696525d
- git.kernel.org/stable/c/8b5e5aac44fee122947a269f9034c048e4c295de
- git.kernel.org/stable/c/98dbf2af63de0b551082c9bc48333910e009b09f
- git.kernel.org/stable/c/a67e1bf03c609a751d1740a1789af25e599966fa
- git.kernel.org/stable/c/d7242fd7946d4cba0411effb6b5048ca55125747
- git.kernel.org/stable/c/e6494977bd4a83862118a05f57a8df40256951c0
- git.kernel.org/stable/c/ecc461331604b07cdbdb7360dbdf78471653264c
Other references
Recent Out-of-bounds Read vulnerabilities
- 8.8 High severity
- 7.1 High severity
- 7.1 High severity
- 7.1 High severity
- 7.1 High severity
- 7.1 High severity
Spotted an error? Tell us.