GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

CVE-2023-54285 (GCVE-0-2023-54285)

Vulnerability from cvelistv5 – Published: 2025-12-30 12:23 – Updated: 2026-08-05 09:18
VLAI
Title
iomap: Fix possible overflow condition in iomap_write_delalloc_scan
Summary
In the Linux kernel, the following vulnerability has been resolved: iomap: Fix possible overflow condition in iomap_write_delalloc_scan folio_next_index() returns an unsigned long value which left shifted by PAGE_SHIFT could possibly cause an overflow on 32-bit system. Instead use folio_pos(folio) + folio_size(folio), which does this correctly.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 38be53c3fd7f4f4bd5de319a323d72f9f6beb16d , < 0c6cf409093f307ee05114f834516730c0da5b21 (git)
Affected: f43dc4dc3eff028b5ddddd99f3a66c5a6bdd4e78 , < 5c281b0c5d18c8eeb1cfd5023f4adb153e6d1240 (git)
Affected: f43dc4dc3eff028b5ddddd99f3a66c5a6bdd4e78 , < eee2d2e6ea5550118170dbd5bb1316ceb38455fb (git)
Affected: 6.1.92 , < 6.1.162 (semver)
guessed Create a notification for this product.
Linux Linux Affected: 6.2
Unaffected: 0 , < 6.2 (semver)
Unaffected: 6.1.162 , ≤ 6.1.* (semver)
Unaffected: 6.5.5 , ≤ 6.5.* (semver)
Unaffected: 6.6 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "fs/iomap/buffered-io.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "0c6cf409093f307ee05114f834516730c0da5b21",
              "status": "affected",
              "version": "38be53c3fd7f4f4bd5de319a323d72f9f6beb16d",
              "versionType": "git"
            },
            {
              "lessThan": "5c281b0c5d18c8eeb1cfd5023f4adb153e6d1240",
              "status": "affected",
              "version": "f43dc4dc3eff028b5ddddd99f3a66c5a6bdd4e78",
              "versionType": "git"
            },
            {
              "lessThan": "eee2d2e6ea5550118170dbd5bb1316ceb38455fb",
              "status": "affected",
              "version": "f43dc4dc3eff028b5ddddd99f3a66c5a6bdd4e78",
              "versionType": "git"
            },
            {
              "lessThan": "6.1.162",
              "status": "affected",
              "version": "6.1.92",
              "versionType": "semver"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/iomap/buffered-io.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.2"
            },
            {
              "lessThan": "6.2",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.162",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.5.*",
              "status": "unaffected",
              "version": "6.5.5",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.6",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.162",
                  "versionStartIncluding": "6.1.92",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.5.5",
                  "versionStartIncluding": "6.2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6",
                  "versionStartIncluding": "6.2",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\niomap: Fix possible overflow condition in iomap_write_delalloc_scan\n\nfolio_next_index() returns an unsigned long value which left shifted\nby PAGE_SHIFT could possibly cause an overflow on 32-bit system. Instead\nuse folio_pos(folio) + folio_size(folio), which does this correctly."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.1,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The flaw is reached through a local `write()`/`pwrite()` syscall on a buffered file on an iomap/XFS filesystem, via `iomap_file_buffered_write()` \u2192 `xfs_buffered_write_iomap_end()` \u2192 `iomap_write_delalloc_release()`. No network-facing service reliably produces the required short-write-with-partial-copy condition, so local access is needed.\nAC:L - The attacker deterministically controls every trigger condition: creating a file larger than 4 GiB, dirtying folios above that offset, and forcing a short write by passing a buffer that straddles an unmapped/PROT_NONE page so `fault_in_iov_iter_readable()` fails. On the affected deployment class (32-bit ARM/x86 embedded, industrial and NAS devices running XFS) the 32-bit truncation is a fixed property of the target, not a race or a condition outside attacker control.\nPR:L - Only an unprivileged local account with write access to any file on an XFS filesystem (e.g. /tmp, /var, or a home directory) is required. No capability, root, or namespace trickery is needed anywhere along the `vfs_write` \u2192 iomap path.\nUI:N - The attacker performs the entire sequence \u2014 extending the file past 4 GiB, dirtying page cache, issuing the faulting write \u2014 in its own process. No victim action or cooperation is required.\nS:U - The overflow and its effects are confined to the kernel\u0027s own filesystem/page-cache state on the same system; no VM, IOMMU, or sandbox security boundary is crossed.\nC:N - The miscalculation only causes delalloc (unwritten reservation) extents to be removed; `xfs_bmap_punch_delalloc_range()` explicitly skips real allocated extents via the `isnullstartblock()` check, so no out-of-bounds read occurs and punched ranges read back as zeroes rather than exposing stale disk or kernel memory.\nI:H - The wrapped `punch_start_byte` causes delalloc reservations to be punched over a range up to ~4 GiB below the intended one, leaving dirty page-cache data with no backing reservation; `xfs_map_blocks()` then finds a hole at writeback and the data is silently discarded, permanently destroying file contents \u2014 including data written concurrently by other users to a shared file \u2014 and leaving the on-disk extent state inconsistent with the page cache.\nA:H - The corrupted punch range trips `WARN_ON_ONCE(start_byte \u003c punch_start_byte)` (a panic under `panic_on_warn`) and drives writeback into holes, producing XFS writeback errors and filesystem shutdown that renders the volume unusable; on affected kernels the same 32-bit truncation in the adjacent loop-advance expression additionally yields an unkillable infinite loop while holding `i_rwsem` and the mapping invalidate lock, permanently wedging the inode and burning a CPU."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T09:18:57.424Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/0c6cf409093f307ee05114f834516730c0da5b21"
        },
        {
          "url": "https://git.kernel.org/stable/c/5c281b0c5d18c8eeb1cfd5023f4adb153e6d1240"
        },
        {
          "url": "https://git.kernel.org/stable/c/eee2d2e6ea5550118170dbd5bb1316ceb38455fb"
        }
      ],
      "title": "iomap: Fix possible overflow condition in iomap_write_delalloc_scan",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2023-54285",
    "datePublished": "2025-12-30T12:23:25.770Z",
    "dateReserved": "2025-12-30T12:06:44.526Z",
    "dateUpdated": "2026-08-05T09:18:57.424Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2023-54285",
      "date": "2026-09-16",
      "epss": "0.00183",
      "percentile": "0.08157"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2023-54285\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-12-30T13:16:17.520\",\"lastModified\":\"2026-08-04T11:16:39.240\",\"vulnStatus\":\"Modified\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\niomap: Fix possible overflow condition in iomap_write_delalloc_scan\\n\\nfolio_next_index() returns an unsigned long value which left shifted\\nby PAGE_SHIFT could possibly cause an overflow on 32-bit system. Instead\\nuse folio_pos(folio) + folio_size(folio), which does this correctly.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:\\n\\niomap: Corrige una posible condici\u00f3n de desbordamiento en iomap_write_delalloc_scan\\n\\nfolio_next_index() devuelve un valor unsigned long que, desplazado a la izquierda por PAGE_SHIFT, podr\u00eda causar un desbordamiento en sistemas de 32 bits. En su lugar, usa folio_pos(folio) + folio_size(folio), lo cual lo hace correctamente.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"fs/iomap/buffered-io.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"38be53c3fd7f4f4bd5de319a323d72f9f6beb16d\",\"lessThan\":\"0c6cf409093f307ee05114f834516730c0da5b21\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"f43dc4dc3eff028b5ddddd99f3a66c5a6bdd4e78\",\"lessThan\":\"5c281b0c5d18c8eeb1cfd5023f4adb153e6d1240\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"f43dc4dc3eff028b5ddddd99f3a66c5a6bdd4e78\",\"lessThan\":\"eee2d2e6ea5550118170dbd5bb1316ceb38455fb\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"6.1.92\",\"lessThan\":\"6.1.162\",\"versionType\":\"semver\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"fs/iomap/buffered-io.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.2\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.2\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.1.162\",\"lessThanOrEqual\":\"6.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.5.5\",\"lessThanOrEqual\":\"6.5.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.6\",\"lessThanOrEqual\":\"*\",\"versionType\":\"original_commit_for_fix\",\"status\":\"unaffected\"}]}]}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H\",\"baseScore\":7.1,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"NONE\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.2},{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"cvssData\":{\"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\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.9}]},\"weaknesses\":[{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-787\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.1.92\",\"versionEndExcluding\":\"6.1.162\",\"matchCriteriaId\":\"EF308B9C-AA43-45E0-9C7A-7A508F307794\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.2\",\"versionEndExcluding\":\"6.5.5\",\"matchCriteriaId\":\"8CF71E85-DA24-4925-95C5-E5C15DA71AE6\"}]}]}],\"references\":[{\"url\":\"https://git.kernel.org/stable/c/0c6cf409093f307ee05114f834516730c0da5b21\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/5c281b0c5d18c8eeb1cfd5023f4adb153e6d1240\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/eee2d2e6ea5550118170dbd5bb1316ceb38455fb\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]}]}}",
    "redhat_vex": {
      "aggregate_severity": "Low",
      "current_release_date": "2026-08-04T22:52:15+00:00",
      "cve": "CVE-2023-54285",
      "id": "CVE-2023-54285",
      "initial_release_date": "2023-01-01T00:00:00+00:00",
      "product_status:known_affected": "108",
      "product_status:known_not_affected": "166",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: iomap: Fix possible overflow condition in iomap_write_delalloc_scan",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2023/cve-2023-54285.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-08-29T02:02:52Z",
      "cve": "CVE-2023-54285",
      "id": "CVE-2023-54285",
      "initial_release_date": "2025-12-31T00:26:41Z",
      "product_status:known_affected": "394",
      "product_status:known_not_affected": "423",
      "product_status:recommended": "212",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2023-54285",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2023-54285.json",
      "version": "33"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…