CVE-2023-54317 (GCVE-0-2023-54317)
Vulnerability from cvelistv5
Published
2025-12-30 12:23
Modified
2026-08-05 09:19
Summary
In the Linux kernel, the following vulnerability has been resolved: dm flakey: don't corrupt the zero page When we need to zero some range on a block device, the function __blkdev_issue_zero_pages submits a write bio with the bio vector pointing to the zero page. If we use dm-flakey with corrupt bio writes option, it will corrupt the content of the zero page which results in crashes of various userspace programs. Glibc assumes that memory returned by mmap is zeroed and it uses it for calloc implementation; if the newly mapped memory is not zeroed, calloc will return non-zeroed memory. Fix this bug by testing if the page is equal to ZERO_PAGE(0) and avoiding the corruption in this case.
Impacted products
Vendor Product Version
Linux Linux Version: c6cd92fcabd6cc78bb1808c6a18245c842722fc1
Version: d4c637af2e56ee1ec66ee34d0ac5a13c75911aec
Version: a00f5276e26636cbf72f24f79831026d2e2868e7
Version: a00f5276e26636cbf72f24f79831026d2e2868e7
Version: a00f5276e26636cbf72f24f79831026d2e2868e7
Version: a00f5276e26636cbf72f24f79831026d2e2868e7
Version: a00f5276e26636cbf72f24f79831026d2e2868e7
Version: a00f5276e26636cbf72f24f79831026d2e2868e7
Version: 1ed7c9f45fb893877ffa7cedd7aa61beaadbb328
Version: 4.14.158   
Version: 4.19.88   
Version: 4.9.206   
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/md/dm-flakey.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "b7f8892f672222dbfcc721f51edc03963212b249",
              "status": "affected",
              "version": "c6cd92fcabd6cc78bb1808c6a18245c842722fc1",
              "versionType": "git"
            },
            {
              "lessThan": "98e311be44dbe31ad9c42aa067b2359bac451fda",
              "status": "affected",
              "version": "d4c637af2e56ee1ec66ee34d0ac5a13c75911aec",
              "versionType": "git"
            },
            {
              "lessThan": "3c4a56ef7c538d16c1738ba0ccea9e7146105b5a",
              "status": "affected",
              "version": "a00f5276e26636cbf72f24f79831026d2e2868e7",
              "versionType": "git"
            },
            {
              "lessThan": "f2b478228bfdd11e358c5bc197561331f5d5c394",
              "status": "affected",
              "version": "a00f5276e26636cbf72f24f79831026d2e2868e7",
              "versionType": "git"
            },
            {
              "lessThan": "ff60b2bb680ebcaf8890814dd51084a022891469",
              "status": "affected",
              "version": "a00f5276e26636cbf72f24f79831026d2e2868e7",
              "versionType": "git"
            },
            {
              "lessThan": "be360c83f2d810493c04f999d69ec9152981e0c0",
              "status": "affected",
              "version": "a00f5276e26636cbf72f24f79831026d2e2868e7",
              "versionType": "git"
            },
            {
              "lessThan": "63d31617883d64b43b0e2d529f0751f40713ecae",
              "status": "affected",
              "version": "a00f5276e26636cbf72f24f79831026d2e2868e7",
              "versionType": "git"
            },
            {
              "lessThan": "f50714b57aecb6b3dc81d578e295f86d9c73f078",
              "status": "affected",
              "version": "a00f5276e26636cbf72f24f79831026d2e2868e7",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "1ed7c9f45fb893877ffa7cedd7aa61beaadbb328",
              "versionType": "git"
            },
            {
              "lessThan": "4.14.308",
              "status": "affected",
              "version": "4.14.158",
              "versionType": "semver"
            },
            {
              "lessThan": "4.19.276",
              "status": "affected",
              "version": "4.19.88",
              "versionType": "semver"
            },
            {
              "lessThan": "4.10",
              "status": "affected",
              "version": "4.9.206",
              "versionType": "semver"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/md/dm-flakey.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.0"
            },
            {
              "lessThan": "5.0",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "4.14.*",
              "status": "unaffected",
              "version": "4.14.308",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "4.19.*",
              "status": "unaffected",
              "version": "4.19.276",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.4.*",
              "status": "unaffected",
              "version": "5.4.235",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.173",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.99",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.16",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.2.*",
              "status": "unaffected",
              "version": "6.2.3",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.3",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "4.14.308",
                  "versionStartIncluding": "4.14.158",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "4.19.276",
                  "versionStartIncluding": "4.19.88",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.4.235",
                  "versionStartIncluding": "5.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.173",
                  "versionStartIncluding": "5.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.99",
                  "versionStartIncluding": "5.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.16",
                  "versionStartIncluding": "5.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.2.3",
                  "versionStartIncluding": "5.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.3",
                  "versionStartIncluding": "5.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "4.9.206",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndm flakey: don\u0027t corrupt the zero page\n\nWhen we need to zero some range on a block device, the function\n__blkdev_issue_zero_pages submits a write bio with the bio vector pointing\nto the zero page. If we use dm-flakey with corrupt bio writes option, it\nwill corrupt the content of the zero page which results in crashes of\nvarious userspace programs. Glibc assumes that memory returned by mmap is\nzeroed and it uses it for calloc implementation; if the newly mapped\nmemory is not zeroed, calloc will return non-zeroed memory.\n\nFix this bug by testing if the page is equal to ZERO_PAGE(0) and\navoiding the corruption in this case."
        }
      ],
      "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 corruption is triggered by local block-device I/O \u2014 a write/fallocate/BLKZEROOUT that reaches `__blkdev_issue_zero_pages()` through a dm-flakey device \u2014 with no network protocol involved. This matches the AV:L treatment of all other device-mapper/block-layer CVEs.\nAC:L - Given a flakey target configured with `corrupt_bio_byte ... w`, the write into ZERO_PAGE is fully deterministic: no race, no memory-layout dependency, and the attacker freely repeats I/O until the periodic down interval, which is observable and cycles on a fixed schedule.\nPR:L - While loading the dm table needs CAP_SYS_ADMIN, that is a pre-existing environmental configuration; the exploit step is ordinary filesystem I/O (fallocate/ZERO_RANGE, unwritten-extent zeroing) that any unprivileged user \u2014 or a container process on a flakey-backed volume \u2014 can issue, thereby corrupting memory shared with root processes.\nUI:N - The attacker\u0027s own I/O request drives the whole path; no victim action is needed, and the corrupted zero page then damages other processes passively as they fault in anonymous memory.\nS:U - The corruption stays within the kernel\u0027s own security authority; there is no hypervisor, IOMMU, or DMA boundary crossed, so standard kernel scoring applies.\nC:H - The bug destroys the system-wide guarantee that freshly mapped anonymous memory is zero, at an attacker-selected offset and value, so `calloc`-based buffers in every process (including privileged daemons) silently lose their zero terminators/sentinels and can be leveraged to read and disclose adjacent heap contents.\nI:H - An arbitrary byte value is written at an arbitrary offset into a page shared read-only by every process on the system, and because the same global page is the source for all subsequent `blkdev_issue_zeroout` fallbacks, non-zero garbage is also persisted to disk on unrelated, healthy block devices.\nA:H - The commit documents that the corrupted zero page causes crashes of various userspace programs via glibc\u0027s `calloc`, and the damage is permanent for the boot, producing system-wide instability across all users and services."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T09:19:12.880Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/b7f8892f672222dbfcc721f51edc03963212b249"
        },
        {
          "url": "https://git.kernel.org/stable/c/98e311be44dbe31ad9c42aa067b2359bac451fda"
        },
        {
          "url": "https://git.kernel.org/stable/c/3c4a56ef7c538d16c1738ba0ccea9e7146105b5a"
        },
        {
          "url": "https://git.kernel.org/stable/c/f2b478228bfdd11e358c5bc197561331f5d5c394"
        },
        {
          "url": "https://git.kernel.org/stable/c/ff60b2bb680ebcaf8890814dd51084a022891469"
        },
        {
          "url": "https://git.kernel.org/stable/c/be360c83f2d810493c04f999d69ec9152981e0c0"
        },
        {
          "url": "https://git.kernel.org/stable/c/63d31617883d64b43b0e2d529f0751f40713ecae"
        },
        {
          "url": "https://git.kernel.org/stable/c/f50714b57aecb6b3dc81d578e295f86d9c73f078"
        }
      ],
      "title": "dm flakey: don\u0027t corrupt the zero page",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2023-54317",
    "datePublished": "2025-12-30T12:23:47.232Z",
    "dateReserved": "2025-12-30T12:06:44.531Z",
    "dateUpdated": "2026-08-05T09:19:12.880Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}


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…