{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2024-42104", "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "state": "PUBLISHED", "assignerShortName": "Linux", "dateReserved": "2024-07-29T15:50:41.175Z", "datePublished": "2024-07-30T07:46:00.180Z", "dateUpdated": "2026-08-05T11:35:37.917Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux", "dateUpdated": "2026-08-05T11:35:37.917Z" }, "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnilfs2: add missing check for inode numbers on directory entries\n\nSyzbot reported that mounting and unmounting a specific pattern of\ncorrupted nilfs2 filesystem images causes a use-after-free of metadata\nfile inodes, which triggers a kernel bug in lru_add_fn().\n\nAs Jan Kara pointed out, this is because the link count of a metadata file\ngets corrupted to 0, and nilfs_evict_inode(), which is called from iput(),\ntries to delete that inode (ifile inode in this case).\n\nThe inconsistency occurs because directories containing the inode numbers\nof these metadata files that should not be visible in the namespace are\nread without checking.\n\nFix this issue by treating the inode numbers of these internal files as\nerrors in the sanity check helper when reading directory folios/pages.\n\nAlso thanks to Hillf Danton and Matthew Wilcox for their initial mm-layer\nanalysis." } ], "metrics": [ { "cvssV3_1": { "version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "baseScore": 7.8, "baseSeverity": "HIGH" }, "scenarios": [ { "lang": "en", "value": "AV:L - The bug is triggered by on-disk data in a crafted nilfs2 image processed by local mount and ordinary VFS operations (lookup/unlink/umount); there is no network-facing component. Reachable via local syscalls on media the attacker supplies, e.g. a USB device auto-mounted by udisks2 on a desktop or kiosk.\nAC:L - The attacker fully controls the on-disk directory block, so simply placing a metadata inode number (e.g. ifile=6) in a directory entry makes `nilfs_check_folio()` accept it and `nilfs_iget()` return the live metadata inode deterministically. No race and no uncontrolled precondition is involved.\nPR:L - The attacker needs local unprivileged access to attach the malicious image (removable media auto-mounted by udisks2/systemd for the console user, or any environment granting the user mount of removable/loop devices) and then only needs ordinary file operations on the mount to trigger the metadata-inode eviction.\nUI:N - In the automount scenario the attacker performs every step themselves — inserting the media and running `ls`/`rm` on the resulting mount — so no separate victim action is required.\nS:U - The corruption stays within the kernel's own security authority; there is no crossing of a VM, IOMMU, or sandbox boundary.\nC:H - The freed metadata inode (and its page cache/palloc cache) continues to be dereferenced by the filesystem, and a use-after-free of a slab-allocated `struct inode` gives an attacker who reclaims the object a path to disclose kernel memory; the ifile inode also exposes raw filesystem metadata through the namespace.\nI:H - `nilfs_evict_inode()` truncates and deletes the filesystem's own ifile inode while it is still in use, and the resulting use-after-free of the inode object allows heap-spray reclaim of attacker-controlled data into a structure the kernel then writes through — a write/control-flow primitive, not just metadata damage.\nA:H - Syzbot reproduced a kernel BUG in `lru_add_fn()` from this use-after-free on mount/unmount; any local user able to mount the crafted image can panic the machine reliably." } ] } ], "affected": [ { "product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "fs/nilfs2/dir.c", "fs/nilfs2/nilfs.h" ], "versions": [ { "version": "2ba466d74ed74f073257f86e61519cb8f8f46184", "lessThan": "c33c2b0d92aa1c2262d999b2598ad6fbd53bd479", "status": "affected", "versionType": "git" }, { "version": "2ba466d74ed74f073257f86e61519cb8f8f46184", "lessThan": "07c176e7acc5579c133bb923ab21316d192d0a95", "status": "affected", "versionType": "git" }, { "version": "2ba466d74ed74f073257f86e61519cb8f8f46184", "lessThan": "2f2fa9cf7c3537958a82fbe8c8595a5eb0861ad7", "status": "affected", "versionType": "git" }, { "version": "2ba466d74ed74f073257f86e61519cb8f8f46184", "lessThan": "b11e8fb93ea5eefb2e4e719497ea177a58ff6131", "status": "affected", "versionType": "git" }, { "version": "2ba466d74ed74f073257f86e61519cb8f8f46184", "lessThan": "1b7d549ed2c1fa202c751b69423a0d3a6bd5a180", "status": "affected", "versionType": "git" }, { "version": "2ba466d74ed74f073257f86e61519cb8f8f46184", "lessThan": "3ab40870edb883b9633dc5cd55f5a2a11afa618d", "status": "affected", "versionType": "git" }, { "version": "2ba466d74ed74f073257f86e61519cb8f8f46184", "lessThan": "265fff1a01cdc083aeaf0d934c929db5cc64aebf", "status": "affected", "versionType": "git" }, { "version": "2ba466d74ed74f073257f86e61519cb8f8f46184", "lessThan": "bb76c6c274683c8570ad788f79d4b875bde0e458", "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/nilfs2/dir.c", "fs/nilfs2/nilfs.h" ], "versions": [ { "version": "2.6.30", "status": "affected" }, { "version": "0", "lessThan": "2.6.30", "status": "unaffected", "versionType": "semver" }, { "version": "4.19.318", "lessThanOrEqual": "4.19.*", "status": "unaffected", "versionType": "semver" }, { "version": "5.4.280", "lessThanOrEqual": "5.4.*", "status": "unaffected", "versionType": "semver" }, { "version": "5.10.222", "lessThanOrEqual": "5.10.*", "status": "unaffected", "versionType": "semver" }, { "version": "5.15.163", "lessThanOrEqual": "5.15.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.1.98", "lessThanOrEqual": "6.1.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.6.39", "lessThanOrEqual": "6.6.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.9.9", "lessThanOrEqual": "6.9.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.10", "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": "2.6.30", "versionEndExcluding": "4.19.318" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "2.6.30", "versionEndExcluding": "5.4.280" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "2.6.30", "versionEndExcluding": "5.10.222" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "2.6.30", "versionEndExcluding": "5.15.163" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "2.6.30", "versionEndExcluding": "6.1.98" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "2.6.30", "versionEndExcluding": "6.6.39" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "2.6.30", "versionEndExcluding": "6.9.9" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "2.6.30", "versionEndExcluding": "6.10" } ] } ] } ], "references": [ { "url": "https://git.kernel.org/stable/c/c33c2b0d92aa1c2262d999b2598ad6fbd53bd479" }, { "url": "https://git.kernel.org/stable/c/07c176e7acc5579c133bb923ab21316d192d0a95" }, { "url": "https://git.kernel.org/stable/c/2f2fa9cf7c3537958a82fbe8c8595a5eb0861ad7" }, { "url": "https://git.kernel.org/stable/c/b11e8fb93ea5eefb2e4e719497ea177a58ff6131" }, { "url": "https://git.kernel.org/stable/c/1b7d549ed2c1fa202c751b69423a0d3a6bd5a180" }, { "url": "https://git.kernel.org/stable/c/3ab40870edb883b9633dc5cd55f5a2a11afa618d" }, { "url": "https://git.kernel.org/stable/c/265fff1a01cdc083aeaf0d934c929db5cc64aebf" }, { "url": "https://git.kernel.org/stable/c/bb76c6c274683c8570ad788f79d4b875bde0e458" } ], "title": "nilfs2: add missing check for inode numbers on directory entries", "x_generator": { "engine": "bippy-1.2.0" } }, "adp": [ { "title": "CVE Program Container", "references": [ { "url": "https://git.kernel.org/stable/c/c33c2b0d92aa1c2262d999b2598ad6fbd53bd479", "tags": [ "x_transferred" ] }, { "url": "https://git.kernel.org/stable/c/07c176e7acc5579c133bb923ab21316d192d0a95", "tags": [ "x_transferred" ] }, { "url": "https://git.kernel.org/stable/c/2f2fa9cf7c3537958a82fbe8c8595a5eb0861ad7", "tags": [ "x_transferred" ] }, { "url": "https://git.kernel.org/stable/c/b11e8fb93ea5eefb2e4e719497ea177a58ff6131", "tags": [ "x_transferred" ] }, { "url": "https://git.kernel.org/stable/c/1b7d549ed2c1fa202c751b69423a0d3a6bd5a180", "tags": [ "x_transferred" ] }, { "url": "https://git.kernel.org/stable/c/3ab40870edb883b9633dc5cd55f5a2a11afa618d", "tags": [ "x_transferred" ] }, { "url": "https://git.kernel.org/stable/c/265fff1a01cdc083aeaf0d934c929db5cc64aebf", "tags": [ "x_transferred" ] }, { "url": "https://git.kernel.org/stable/c/bb76c6c274683c8570ad788f79d4b875bde0e458", "tags": [ "x_transferred" ] }, { "url": "https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html" } ], "providerMetadata": { "orgId": "af854a3a-2127-422b-91ae-364da2661108", "shortName": "CVE", "dateUpdated": "2025-11-03T22:01:39.601Z" } }, { "metrics": [ { "other": { "type": "ssvc", "content": { "id": "CVE-2024-42104", "role": "CISA Coordinator", "options": [ { "Exploitation": "none" }, { "Automatable": "no" }, { "Technical Impact": "partial" } ], "version": "2.0.3", "timestamp": "2024-09-10T16:17:52.439171Z" } } } ], "title": "CISA ADP Vulnrichment", "providerMetadata": { "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "shortName": "CISA-ADP", "dateUpdated": "2024-09-11T17:32:46.802Z" } } ] } }