CVE-2024-46780 (GCVE-0-2024-46780)
Vulnerability from cvelistv5
Published
2024-09-18 07:12
Modified
2026-08-05 11:38
Summary
In the Linux kernel, the following vulnerability has been resolved: nilfs2: protect references to superblock parameters exposed in sysfs The superblock buffers of nilfs2 can not only be overwritten at runtime for modifications/repairs, but they are also regularly swapped, replaced during resizing, and even abandoned when degrading to one side due to backing device issues. So, accessing them requires mutual exclusion using the reader/writer semaphore "nilfs->ns_sem". Some sysfs attribute show methods read this superblock buffer without the necessary mutual exclusion, which can cause problems with pointer dereferencing and memory access, so fix it.
Impacted products
Vendor Product Version
Linux Linux Version: da7141fb78db915680616e15677539fc8140cf53
Version: da7141fb78db915680616e15677539fc8140cf53
Version: da7141fb78db915680616e15677539fc8140cf53
Version: da7141fb78db915680616e15677539fc8140cf53
Version: da7141fb78db915680616e15677539fc8140cf53
Version: da7141fb78db915680616e15677539fc8140cf53
Version: da7141fb78db915680616e15677539fc8140cf53
Version: da7141fb78db915680616e15677539fc8140cf53
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2024-46780",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-09-29T14:38:16.059134Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-09-29T14:38:30.940Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      },
      {
        "providerMetadata": {
          "dateUpdated": "2025-11-03T22:18:20.810Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "url": "https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html"
          },
          {
            "url": "https://lists.debian.org/debian-lts-announce/2024/10/msg00003.html"
          }
        ],
        "title": "CVE Program Container"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "fs/nilfs2/sysfs.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "b90beafac05931cbfcb6b1bd4f67c1923f47040e",
              "status": "affected",
              "version": "da7141fb78db915680616e15677539fc8140cf53",
              "versionType": "git"
            },
            {
              "lessThan": "ba97ba173f9625d5f34a986088979eae8b80d38e",
              "status": "affected",
              "version": "da7141fb78db915680616e15677539fc8140cf53",
              "versionType": "git"
            },
            {
              "lessThan": "157c0d94b4c40887329418c70ef4edd1a8d6b4ed",
              "status": "affected",
              "version": "da7141fb78db915680616e15677539fc8140cf53",
              "versionType": "git"
            },
            {
              "lessThan": "b14e7260bb691d7f563f61da07d61e3c8b59a614",
              "status": "affected",
              "version": "da7141fb78db915680616e15677539fc8140cf53",
              "versionType": "git"
            },
            {
              "lessThan": "19cfeba0e4b8eda51484fcf8cf7d150418e1d880",
              "status": "affected",
              "version": "da7141fb78db915680616e15677539fc8140cf53",
              "versionType": "git"
            },
            {
              "lessThan": "8c6e43b3d5f109cf9c61bc188fcc8175404e924f",
              "status": "affected",
              "version": "da7141fb78db915680616e15677539fc8140cf53",
              "versionType": "git"
            },
            {
              "lessThan": "962562d4c70c5cdeb4e955d63ff2017c4eca1aad",
              "status": "affected",
              "version": "da7141fb78db915680616e15677539fc8140cf53",
              "versionType": "git"
            },
            {
              "lessThan": "683408258917541bdb294cd717c210a04381931e",
              "status": "affected",
              "version": "da7141fb78db915680616e15677539fc8140cf53",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/nilfs2/sysfs.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "3.17"
            },
            {
              "lessThan": "3.17",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "4.19.*",
              "status": "unaffected",
              "version": "4.19.322",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.4.*",
              "status": "unaffected",
              "version": "5.4.284",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.226",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.167",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.110",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.51",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.10.*",
              "status": "unaffected",
              "version": "6.10.10",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.11",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "4.19.322",
                  "versionStartIncluding": "3.17",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.4.284",
                  "versionStartIncluding": "3.17",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.226",
                  "versionStartIncluding": "3.17",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.167",
                  "versionStartIncluding": "3.17",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.110",
                  "versionStartIncluding": "3.17",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.51",
                  "versionStartIncluding": "3.17",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.10.10",
                  "versionStartIncluding": "3.17",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.11",
                  "versionStartIncluding": "3.17",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnilfs2: protect references to superblock parameters exposed in sysfs\n\nThe superblock buffers of nilfs2 can not only be overwritten at runtime\nfor modifications/repairs, but they are also regularly swapped, replaced\nduring resizing, and even abandoned when degrading to one side due to\nbacking device issues.  So, accessing them requires mutual exclusion using\nthe reader/writer semaphore \"nilfs-\u003ens_sem\".\n\nSome sysfs attribute show methods read this superblock buffer without the\nnecessary mutual exclusion, which can cause problems with pointer\ndereferencing and memory access, so fix it."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The vulnerable code is reached by reading a sysfs attribute file under /sys/fs/nilfs2/\u003cdevice\u003e/, which requires local access to the system. There is no network-facing path into nilfs2\u0027s sysfs show methods.\nAC:L - The attacker fully controls the read side and can retry unboundedly by spamming reads of the world-readable attributes from many threads, while the mutating side (nilfs_swap_super_block via nilfs_prepare_super during segment construction) fires repeatedly on any active nilfs2 mount and can be forced with write+sync activity. Unbounded, cheap retry against a continuously recurring window makes this reliably winnable.\nPR:L - The affected attributes are created with NILFS_DEV_RO_ATTR, i.e. mode 0444, so any unprivileged local user can read them with no capability whatsoever. No CAP_SYS_ADMIN is needed on the reader side \u2014 only on the unrelated mount/resize side.\nUI:N - Once a nilfs2 volume is mounted (at boot, via fstab, or by an automounter such as udisks on a kiosk/desktop), the attacker triggers the bug entirely on their own by reading sysfs. No victim action is required at exploitation time.\nS:U - The race, the freed page-cache folio, and the resulting disclosure or crash are all within the kernel\u0027s own security authority. No VM, IOMMU, or sandbox boundary is crossed.\nC:H - When ns_sbp[0] has been released or replaced (nilfs_fall_back_super_block after an -EIO superblock write, or nilfs_move_2nd_super during resize), the show methods perform a use-after-free read of a freed bdev page-cache folio and copy those bytes verbatim to userspace via sysfs_emit/scnprintf \u2014 up to 80 bytes per read from volume_name, repeatable in a loop, yielding a kernel memory disclosure primitive over reallocated page contents.\nI:H - This is a use-after-free on a page-cache folio whose reuse the attacker can groom via page-spray, and per kernel UAF scoring practice such object-lifetime bugs are treated as leverageable for control over freed-and-reallocated kernel memory rather than as read-only. The unsynchronized pointer also lets the reader observe torn state (nilfs_dev_revision_show reloads sbp[0] twice across a swap), so kernel object state is consumed inconsistently.\nA:H - Dereferencing a superblock pointer that has been abandoned during degradation to one side, or that points into a released buffer_head\u0027s page, causes a kernel oops/panic \u2014 the commit explicitly cites \"problems with pointer dereferencing and memory access.\" Any such crash is High availability impact."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:38:31.009Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/b90beafac05931cbfcb6b1bd4f67c1923f47040e"
        },
        {
          "url": "https://git.kernel.org/stable/c/ba97ba173f9625d5f34a986088979eae8b80d38e"
        },
        {
          "url": "https://git.kernel.org/stable/c/157c0d94b4c40887329418c70ef4edd1a8d6b4ed"
        },
        {
          "url": "https://git.kernel.org/stable/c/b14e7260bb691d7f563f61da07d61e3c8b59a614"
        },
        {
          "url": "https://git.kernel.org/stable/c/19cfeba0e4b8eda51484fcf8cf7d150418e1d880"
        },
        {
          "url": "https://git.kernel.org/stable/c/8c6e43b3d5f109cf9c61bc188fcc8175404e924f"
        },
        {
          "url": "https://git.kernel.org/stable/c/962562d4c70c5cdeb4e955d63ff2017c4eca1aad"
        },
        {
          "url": "https://git.kernel.org/stable/c/683408258917541bdb294cd717c210a04381931e"
        }
      ],
      "title": "nilfs2: protect references to superblock parameters exposed in sysfs",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-46780",
    "datePublished": "2024-09-18T07:12:36.736Z",
    "dateReserved": "2024-09-11T15:12:18.276Z",
    "dateUpdated": "2026-08-05T11:38:31.009Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2024-46780\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-09-29T14:38:16.059134Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-09-29T14:38:20.261Z\"}}], \"cna\": {\"title\": \"nilfs2: protect references to superblock parameters exposed in sysfs\", \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"da7141fb78db915680616e15677539fc8140cf53\", \"lessThan\": \"b90beafac05931cbfcb6b1bd4f67c1923f47040e\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"da7141fb78db915680616e15677539fc8140cf53\", \"lessThan\": \"ba97ba173f9625d5f34a986088979eae8b80d38e\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"da7141fb78db915680616e15677539fc8140cf53\", \"lessThan\": \"157c0d94b4c40887329418c70ef4edd1a8d6b4ed\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"da7141fb78db915680616e15677539fc8140cf53\", \"lessThan\": \"b14e7260bb691d7f563f61da07d61e3c8b59a614\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"da7141fb78db915680616e15677539fc8140cf53\", \"lessThan\": \"19cfeba0e4b8eda51484fcf8cf7d150418e1d880\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"da7141fb78db915680616e15677539fc8140cf53\", \"lessThan\": \"8c6e43b3d5f109cf9c61bc188fcc8175404e924f\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"da7141fb78db915680616e15677539fc8140cf53\", \"lessThan\": \"962562d4c70c5cdeb4e955d63ff2017c4eca1aad\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"da7141fb78db915680616e15677539fc8140cf53\", \"lessThan\": \"683408258917541bdb294cd717c210a04381931e\", \"versionType\": \"git\"}], \"programFiles\": [\"fs/nilfs2/sysfs.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"3.17\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"3.17\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"4.19.322\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"4.19.*\"}, {\"status\": \"unaffected\", \"version\": \"5.4.284\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"5.4.*\"}, {\"status\": \"unaffected\", \"version\": \"5.10.226\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"5.10.*\"}, {\"status\": \"unaffected\", \"version\": \"5.15.167\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"5.15.*\"}, {\"status\": \"unaffected\", \"version\": \"6.1.110\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.1.*\"}, {\"status\": \"unaffected\", \"version\": \"6.6.51\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.6.*\"}, {\"status\": \"unaffected\", \"version\": \"6.10.10\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.10.*\"}, {\"status\": \"unaffected\", \"version\": \"6.11\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"fs/nilfs2/sysfs.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/b90beafac05931cbfcb6b1bd4f67c1923f47040e\"}, {\"url\": \"https://git.kernel.org/stable/c/ba97ba173f9625d5f34a986088979eae8b80d38e\"}, {\"url\": \"https://git.kernel.org/stable/c/157c0d94b4c40887329418c70ef4edd1a8d6b4ed\"}, {\"url\": \"https://git.kernel.org/stable/c/b14e7260bb691d7f563f61da07d61e3c8b59a614\"}, {\"url\": \"https://git.kernel.org/stable/c/19cfeba0e4b8eda51484fcf8cf7d150418e1d880\"}, {\"url\": \"https://git.kernel.org/stable/c/8c6e43b3d5f109cf9c61bc188fcc8175404e924f\"}, {\"url\": \"https://git.kernel.org/stable/c/962562d4c70c5cdeb4e955d63ff2017c4eca1aad\"}, {\"url\": \"https://git.kernel.org/stable/c/683408258917541bdb294cd717c210a04381931e\"}], \"x_generator\": {\"engine\": \"bippy-5f407fcff5a0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\nnilfs2: protect references to superblock parameters exposed in sysfs\\n\\nThe superblock buffers of nilfs2 can not only be overwritten at runtime\\nfor modifications/repairs, but they are also regularly swapped, replaced\\nduring resizing, and even abandoned when degrading to one side due to\\nbacking device issues.  So, accessing them requires mutual exclusion using\\nthe reader/writer semaphore \\\"nilfs-\u003ens_sem\\\".\\n\\nSome sysfs attribute show methods read this superblock buffer without the\\nnecessary mutual exclusion, which can cause problems with pointer\\ndereferencing and memory access, so fix it.\"}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2024-12-19T09:22:59.932Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2024-46780\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2024-12-19T09:22:59.932Z\", \"dateReserved\": \"2024-09-11T15:12:18.276Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-09-18T07:12:36.736Z\", \"assignerShortName\": \"Linux\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.1"
    }
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…