CVE-2024-38599·Kernel vulnerability
In the Linux kernel, the following vulnerability has been resolved: jffs2: prevent xattr node from overflowing the eraseblock Add a check to make sure that the requested xattr node size is no larger than the eraseblock minus the cleanmarker. Unlike the usual inode nodes, the xattr nodes aren't split into parts and spread across multiple eraseblocks, which means that a xattr node must not occupy more than one eraseblock. If the requested xattr value is too large, the xattr node can spill onto the next eraseblock, overwriting the nodes and causing errors such as: jffs2: argh. node added in wrong place at 0x0000b050(2) jffs2: nextblock 0x0000a000, expected at 0000b00c jffs2: error: (823) do_verify_xattr_datum: node CRC failed at 0x01e050, read=0xfc892c93, calc=0x000000 jffs2: notice: (823) jffs2_get_inode_nodes: Node header CRC failed at 0x01e00c. {848f,2fc4,0fef511f,59a3d171} jffs2: Node at 0x0000000c with length 0x00001044 would run over the end of the erase block jffs2: Perhaps the file system was created with the wrong erase size? jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000010: 0x1044 instead This breaks the filesystem and can lead to KASAN crashes such as: BUG: KASAN: slab-out-of-bounds in jffs2_sum_add_kvec+0x125e/0x15d0 Read of size 4 at addr ffff88802c31e914 by task repro/830 CPU: 0 PID: 830 Comm: repro Not tainted 6.9.0-rc3+ #1 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Arch Linux 1.16.3-1-1 04/01/2014 Call Trace: <TASK> dump_stack_lvl+0xc6/0x120 print_report+0xc4/0x620 ? __virt_addr_valid+0x308/0x5b0 kasan_report+0xc1/0xf0 ? jffs2_sum_add_kvec+0x125e/0x15d0 ? jffs2_sum_add_kvec+0x125e/0x15d0 jffs2_sum_add_kvec+0x125e/0x15d0 jffs2_flash_direct_writev+0xa8/0xd0 jffs2_flash_writev+0x9c9/0xef0 ? __x64_sys_setxattr+0xc4/0x160 ? do_syscall_64+0x69/0x140 ? entry_SYSCALL_64_after_hwframe+0x76/0x7e [...] Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
- Severity
- high
- Software
- Kernel
- Fixed in
- 6.9.3
- Published
- 2024-06-19
Affected versions
From: 6.9
Until: 6.9.3
Fixed in: 6.9.3
How to fix this CVE
Update your Linux kernel to version 6.9.3 or later to patch the jffs2 xattr node overflow vulnerability. This fix adds validation to prevent extended attribute nodes from exceeding eraseblock boundaries, which was causing filesystem corruption and kernel crashes. Apply the update immediately to all systems using kernel versions 6.9.0 through 6.9.2.
sudo dnf update kernel kernel-develDefensia detects this vulnerability
How to check if you are affected
- Check installed kernel version: uname -r — verify if it falls within 6.9.0 to 6.9.2 range
- Check if jffs2 filesystem is in use: mount | grep jffs2 — if output is empty, this CVE has minimal impact on your system
- Search system logs for jffs2 corruption indicators: grep -i 'jffs2.*node added in wrong place\|nextblock.*expected\|node CRC failed' /var/log/kern.log /var/log/syslog — these errors indicate active exploitation or corruption
- Verify kernel patch applied: grep 'xattr node from overflowing' /usr/src/linux-headers-$(uname -r)/fs/jffs2/xattr.c || echo 'Vulnerable' — patch presence indicates fix is applied
FAQ
What is CVE-2024-38599?
CVE-2024-38599 is a buffer overflow vulnerability in the Linux kernel's JFFS2 filesystem implementation where extended attribute (xattr) nodes can exceed the size limits of a single eraseblock, causing filesystem corruption, data loss, and kernel crashes via KASAN out-of-bounds errors.
Is CVE-2024-38599 being actively exploited?
No, CVE-2024-38599 is not currently listed on the CISA Known Exploited Vulnerabilities catalog and has no public exploit code available. However, it can be triggered by unprivileged local users via xattr syscalls.
What versions of Kernel are affected by CVE-2024-38599?
Linux kernel versions 6.9.0 through 6.9.2 are vulnerable. The fix is included in kernel 6.9.3 and later stable releases.
How do I check if my server is vulnerable to CVE-2024-38599?
Run 'uname -r' and check if the output shows 6.9.0, 6.9.1, or 6.9.2. If yes, your system is vulnerable unless a backported patch has been applied. Then verify jffs2 is mounted with 'mount | grep jffs2'.
Does Defensia detect CVE-2024-38599?
Yes — Defensia's CVE advisory scanner compares installed kernel versions against the NVD database. If your kernel version falls within 6.9.0–6.9.2, CVE-2024-38599 will appear in your security dashboard with remediation steps.
Related Kernel CVEs
References
- https://git.kernel.org/stable/c/2904e1d9b64f72d291095e3cbb31634f08788b11
- https://git.kernel.org/stable/c/526235dffcac74c7823ed504dfac4f88d84ba5df
- https://git.kernel.org/stable/c/8d431391320c5c5398ff966fb3a95e68a7def275
- https://git.kernel.org/stable/c/978a12c91b38bf1a213e567f3c20e2beef215f07
- https://git.kernel.org/stable/c/a1d21bcd78cf4a4353e1e835789429c6b76aca8b
Track CVEs across your fleet automatically
Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2024-38599. Free for 1 server.
Get started free