{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2025-38707","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2025-04-16T04:51:24.032Z","datePublished":"2025-09-04T15:32:58.386Z","dateUpdated":"2026-08-05T12:04:08.373Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T12:04:08.373Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nfs/ntfs3: Add sanity check for file name\n\nThe length of the file name should be smaller than the directory entry size."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H","baseScore":7.1,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - `ntfs_dir_emit()` is reached only through `ntfs_readdir()` → `ntfs_read_hdr()`, i.e. a local `getdents64(2)` on a directory of an attacker-authored NTFS volume (loop image or removable media); there is no network-facing consumer of fs/ntfs3/dir.c.\nAC:L - `fname->name_len` is a raw on-disk u8 the attacker writes into the index entry, and `ntfs_read_hdr()` only validates `e->size >= 0x10` and `key_size >= 0x44`, so an entry with `e->size = 0x10`, `name_len = 255` placed at the tail of `hdr->used` deterministically overreads ~590 bytes past the `kmalloc(index_block_size)` buffer on the first readdir — no race, no timing window, and adjacent slab contents can be groomed beforehand.\nPR:L - ntfs3 is FS_REQUIRES_DEV without FS_USERNS_MOUNT so a bare `mount(2)` needs CAP_SYS_ADMIN, but in the most severe reasonable deployment an unprivileged local user gets the crafted image mounted via udisks2 loop-setup, desktop/kiosk removable-media automount, or `user`/autofs fstab delegation; the `getdents64` that fires the overread needs no privilege at all.\nUI:N - The attacker performs every step personally — presents the crafted volume, which an automounter consumes with no human action, then runs the directory read itself. No second victim user must be induced to act.\nS:U - The out-of-bounds read happens in ntfs3 name conversion inside the kernel and its effects stay within that same kernel security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - `ntfs_utf16_to_nls(sbi, fname->name, fname->name_len, ...)` reads up to 510 bytes from `e + 0x52` with no bound tied to `e->size`, walking off the end of the `kmalloc(bytes)` INDEX_BUFFER (or the `kmalloc(sbi->record_size)` MFT record) into neighbouring slab objects, and every harvested byte is handed to `dir_emit()` and returned to userspace as a filename — a repeatable, attacker-length-controlled kernel heap disclosure primitive usable to defeat KASLR and lift secrets from groomed adjacent objects.\nI:N - The defect is strictly a read overrun; stores into the PATH_MAX `name` buffer stay bounded by `buf_len`/`utf16s_to_utf8s()` maxout with `NTFS_NAME_LEN * 4 < PATH_MAX` statically asserted, so no kernel memory is modified.\nA:H - The multi-hundred-byte overread can run off the end of the page-backed index buffer into unmapped memory, faulting inside `iterate_dir()` while the inode rwsem is held and wedging the filesystem; under KASAN, SLUB_DEBUG, or debug_pagealloc it faults immediately (this is exactly how syzbot hit it), and with panic_on_oops it is a full panic the attacker can repeat at will."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/ntfs3/dir.c"],"versions":[{"version":"4534a70b7056fd4b9a1c6db5a4ce3c98546b291e","lessThan":"bde58c1539f3ffddffc94d64007de16964e6b8eb","status":"affected","versionType":"git"},{"version":"4534a70b7056fd4b9a1c6db5a4ce3c98546b291e","lessThan":"f99eb9a641f4ef927d8724f4966dcfd1f0e9f835","status":"affected","versionType":"git"},{"version":"4534a70b7056fd4b9a1c6db5a4ce3c98546b291e","lessThan":"3572737a768dadea904ebc4eb34b6ed575bb72d9","status":"affected","versionType":"git"},{"version":"4534a70b7056fd4b9a1c6db5a4ce3c98546b291e","lessThan":"2ac47f738ddfc1957a33be163bc97ee8f78e85a6","status":"affected","versionType":"git"},{"version":"4534a70b7056fd4b9a1c6db5a4ce3c98546b291e","lessThan":"b51642fc52d1c7243a9361555d5c4b24d7569d7e","status":"affected","versionType":"git"},{"version":"4534a70b7056fd4b9a1c6db5a4ce3c98546b291e","lessThan":"27ee9a42b245efe6529e28b03453291a775cb3e4","status":"affected","versionType":"git"},{"version":"4534a70b7056fd4b9a1c6db5a4ce3c98546b291e","lessThan":"e841ecb139339602bc1853f5f09daa5d1ea920a2","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/ntfs3/dir.c"],"versions":[{"version":"5.15","status":"affected"},{"version":"0","lessThan":"5.15","status":"unaffected","versionType":"semver"},{"version":"5.15.190","lessThanOrEqual":"5.15.*","status":"unaffected","versionType":"semver"},{"version":"6.1.149","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.6.103","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.12.43","lessThanOrEqual":"6.12.*","status":"unaffected","versionType":"semver"},{"version":"6.15.11","lessThanOrEqual":"6.15.*","status":"unaffected","versionType":"semver"},{"version":"6.16.2","lessThanOrEqual":"6.16.*","status":"unaffected","versionType":"semver"},{"version":"6.17","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.15","versionEndExcluding":"5.15.190"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.15","versionEndExcluding":"6.1.149"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.15","versionEndExcluding":"6.6.103"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.15","versionEndExcluding":"6.12.43"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.15","versionEndExcluding":"6.15.11"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.15","versionEndExcluding":"6.16.2"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.15","versionEndExcluding":"6.17"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/bde58c1539f3ffddffc94d64007de16964e6b8eb"},{"url":"https://git.kernel.org/stable/c/f99eb9a641f4ef927d8724f4966dcfd1f0e9f835"},{"url":"https://git.kernel.org/stable/c/3572737a768dadea904ebc4eb34b6ed575bb72d9"},{"url":"https://git.kernel.org/stable/c/2ac47f738ddfc1957a33be163bc97ee8f78e85a6"},{"url":"https://git.kernel.org/stable/c/b51642fc52d1c7243a9361555d5c4b24d7569d7e"},{"url":"https://git.kernel.org/stable/c/27ee9a42b245efe6529e28b03453291a775cb3e4"},{"url":"https://git.kernel.org/stable/c/e841ecb139339602bc1853f5f09daa5d1ea920a2"}],"title":"fs/ntfs3: Add sanity check for file name","x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CVE Program Container","references":[{"url":"https://lists.debian.org/debian-lts-announce/2025/10/msg00008.html"}],"providerMetadata":{"orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE","dateUpdated":"2025-11-03T17:41:37.372Z"}},{"x_adpType":"supplier","providerMetadata":{"orgId":"0b142b55-0307-4c5a-b3c9-f314f3fb7c5e","shortName":"siemens-SADP","dateUpdated":"2026-05-12T12:05:43.177Z"},"affected":[{"vendor":"Siemens","product":"SIMATIC CN 4100","versions":[{"status":"affected","version":"0","lessThan":"V5.0","versionType":"custom"}],"defaultStatus":"unknown"}],"references":[{"url":"https://cert-portal.siemens.com/productcert/html/ssa-032379.html"}]}]}}