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

CVE-2023-54104 (GCVE-0-2023-54104)

Vulnerability from cvelistv5 – Published: 2025-12-24 13:06 – Updated: 2026-08-05 09:17
VLAI
Title
mtd: rawnand: fsl_upm: Fix an off-by one test in fun_exec_op()
Summary
In the Linux kernel, the following vulnerability has been resolved: mtd: rawnand: fsl_upm: Fix an off-by one test in fun_exec_op() 'op-cs' is copied in 'fun->mchip_number' which is used to access the 'mchip_offsets' and the 'rnb_gpio' arrays. These arrays have NAND_MAX_CHIPS elements, so the index must be below this limit. Fix the sanity check in order to avoid the NAND_MAX_CHIPS value. This would lead to out-of-bound accesses.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 54309d65776755bcdb9dcf3744cd764fc1e254ea , < 1f09d67d390647f83f8f9d26382b0daa43756e6f (git)
Affected: 54309d65776755bcdb9dcf3744cd764fc1e254ea , < eb7a5e4d14c8659cb97db6863316280e15f67209 (git)
Affected: 54309d65776755bcdb9dcf3744cd764fc1e254ea , < f4b700c71802c81e6f9dce362ee7a0312c8377ba (git)
Affected: 54309d65776755bcdb9dcf3744cd764fc1e254ea , < 49e57caf967a969f6b955c88805f2d160910aa12 (git)
Affected: 54309d65776755bcdb9dcf3744cd764fc1e254ea , < c6abce60338aa2080973cd95be0aedad528bb41f (git)
guessed Create a notification for this product.
Linux Linux Affected: 5.9
Unaffected: 0 , < 5.9 (semver)
Unaffected: 5.10.190 , ≤ 5.10.* (semver)
Unaffected: 5.15.126 , ≤ 5.15.* (semver)
Unaffected: 6.1.45 , ≤ 6.1.* (semver)
Unaffected: 6.4.10 , ≤ 6.4.* (semver)
Unaffected: 6.5 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/mtd/nand/raw/fsl_upm.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "1f09d67d390647f83f8f9d26382b0daa43756e6f",
              "status": "affected",
              "version": "54309d65776755bcdb9dcf3744cd764fc1e254ea",
              "versionType": "git"
            },
            {
              "lessThan": "eb7a5e4d14c8659cb97db6863316280e15f67209",
              "status": "affected",
              "version": "54309d65776755bcdb9dcf3744cd764fc1e254ea",
              "versionType": "git"
            },
            {
              "lessThan": "f4b700c71802c81e6f9dce362ee7a0312c8377ba",
              "status": "affected",
              "version": "54309d65776755bcdb9dcf3744cd764fc1e254ea",
              "versionType": "git"
            },
            {
              "lessThan": "49e57caf967a969f6b955c88805f2d160910aa12",
              "status": "affected",
              "version": "54309d65776755bcdb9dcf3744cd764fc1e254ea",
              "versionType": "git"
            },
            {
              "lessThan": "c6abce60338aa2080973cd95be0aedad528bb41f",
              "status": "affected",
              "version": "54309d65776755bcdb9dcf3744cd764fc1e254ea",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/mtd/nand/raw/fsl_upm.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.9"
            },
            {
              "lessThan": "5.9",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.190",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.126",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.45",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.4.*",
              "status": "unaffected",
              "version": "6.4.10",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.5",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.190",
                  "versionStartIncluding": "5.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.126",
                  "versionStartIncluding": "5.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.45",
                  "versionStartIncluding": "5.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.4.10",
                  "versionStartIncluding": "5.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.5",
                  "versionStartIncluding": "5.9",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmtd: rawnand: fsl_upm: Fix an off-by one test in fun_exec_op()\n\n\u0027op-cs\u0027 is copied in \u0027fun-\u003emchip_number\u0027 which is used to access the\n\u0027mchip_offsets\u0027 and the \u0027rnb_gpio\u0027 arrays.\nThese arrays have NAND_MAX_CHIPS elements, so the index must be below this\nlimit.\n\nFix the sanity check in order to avoid the NAND_MAX_CHIPS value. This\nwould lead to out-of-bound accesses."
        }
      ],
      "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 fsl_upm NAND controller is reached only through the local MTD stack \u2014 /dev/mtdX ioctls or file I/O on a NAND-backed JFFS2/UBIFS volume. There is no network or remote-peer input into this driver.\nAC:L - There is no race, no memory-layout requirement, and no timing window; the faulty bounds check is the only guard on the index, and NAND operations can be driven repeatedly and deterministically by ordinary filesystem traffic.\nPR:L - An unprivileged local user reading or writing files on a mounted NAND-backed filesystem drives nand_exec_op() and thus fun_exec_op(); direct /dev/mtdX access is not required, so real root is not needed.\nUI:N - The code path executes as part of routine NAND I/O initiated by the attacker; no action by any other user or administrator is required.\nS:U - The out-of-bounds accesses stay within the kernel\u0027s own security authority \u2014 corrupted state and the wild pointer belong to the same kernel, with no VM, IOMMU, or sandbox boundary crossed.\nC:H - The out-of-bounds index yields an unintended reg_offs, so in_8() reads localbus MMIO outside the intended chip window straight into the caller\u0027s data buffer, and the adjacent struct field is read as a pointer \u2014 an out-of-bounds read that can disclose kernel and device state.\nI:H - The same bogus reg_offs is used by out_8() in the NAND_OP_DATA_OUT path, producing attacker-influenced writes to localbus registers outside the intended window; out-of-bounds writes are scored High.\nA:H - fun-\u003ernb_gpio[NAND_MAX_CHIPS] reads adjacent struct data as a struct gpio_desc pointer and dereferences it in gpiod_get_value_cansleep(), and the bogus MMIO offset can hit unmapped localbus space \u2014 either results in a kernel oops."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T09:17:18.597Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/1f09d67d390647f83f8f9d26382b0daa43756e6f"
        },
        {
          "url": "https://git.kernel.org/stable/c/eb7a5e4d14c8659cb97db6863316280e15f67209"
        },
        {
          "url": "https://git.kernel.org/stable/c/f4b700c71802c81e6f9dce362ee7a0312c8377ba"
        },
        {
          "url": "https://git.kernel.org/stable/c/49e57caf967a969f6b955c88805f2d160910aa12"
        },
        {
          "url": "https://git.kernel.org/stable/c/c6abce60338aa2080973cd95be0aedad528bb41f"
        }
      ],
      "title": "mtd: rawnand: fsl_upm: Fix an off-by one test in fun_exec_op()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2023-54104",
    "datePublished": "2025-12-24T13:06:29.354Z",
    "dateReserved": "2025-12-24T13:02:52.517Z",
    "dateUpdated": "2026-08-05T09:17:18.597Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2023-54104",
      "date": "2026-09-15",
      "epss": "0.0016",
      "percentile": "0.05573"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2023-54104\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-12-24T13:16:12.293\",\"lastModified\":\"2026-08-04T10:19:29.423\",\"vulnStatus\":\"Deferred\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nmtd: rawnand: fsl_upm: Fix an off-by one test in fun_exec_op()\\n\\n\u0027op-cs\u0027 is copied in \u0027fun-\u003emchip_number\u0027 which is used to access the\\n\u0027mchip_offsets\u0027 and the \u0027rnb_gpio\u0027 arrays.\\nThese arrays have NAND_MAX_CHIPS elements, so the index must be below this\\nlimit.\\n\\nFix the sanity check in order to avoid the NAND_MAX_CHIPS value. This\\nwould lead to out-of-bound accesses.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"drivers/mtd/nand/raw/fsl_upm.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"54309d65776755bcdb9dcf3744cd764fc1e254ea\",\"lessThan\":\"1f09d67d390647f83f8f9d26382b0daa43756e6f\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"54309d65776755bcdb9dcf3744cd764fc1e254ea\",\"lessThan\":\"eb7a5e4d14c8659cb97db6863316280e15f67209\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"54309d65776755bcdb9dcf3744cd764fc1e254ea\",\"lessThan\":\"f4b700c71802c81e6f9dce362ee7a0312c8377ba\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"54309d65776755bcdb9dcf3744cd764fc1e254ea\",\"lessThan\":\"49e57caf967a969f6b955c88805f2d160910aa12\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"54309d65776755bcdb9dcf3744cd764fc1e254ea\",\"lessThan\":\"c6abce60338aa2080973cd95be0aedad528bb41f\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"drivers/mtd/nand/raw/fsl_upm.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"5.9\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"5.9\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"5.10.190\",\"lessThanOrEqual\":\"5.10.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"5.15.126\",\"lessThanOrEqual\":\"5.15.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.1.45\",\"lessThanOrEqual\":\"6.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.4.10\",\"lessThanOrEqual\":\"6.4.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.5\",\"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: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}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/1f09d67d390647f83f8f9d26382b0daa43756e6f\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/49e57caf967a969f6b955c88805f2d160910aa12\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/c6abce60338aa2080973cd95be0aedad528bb41f\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/eb7a5e4d14c8659cb97db6863316280e15f67209\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/f4b700c71802c81e6f9dce362ee7a0312c8377ba\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Important",
      "current_release_date": "2026-08-20T12:53:26+00:00",
      "cve": "CVE-2023-54104",
      "id": "CVE-2023-54104",
      "initial_release_date": "2023-01-01T00:00:00+00:00",
      "product_status:known_not_affected": "274",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: Linux kernel: Privilege escalation via out-of-bounds access in NAND flash driver",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2023/cve-2023-54104.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-07T16:43:42Z",
      "cve": "CVE-2023-54104",
      "id": "CVE-2023-54104",
      "initial_release_date": "2025-12-25T00:55:32Z",
      "product_status:known_affected": "354",
      "product_status:known_not_affected": "329",
      "product_status:recommended": "408",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2023-54104",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2023-54104.json",
      "version": "35"
    }
  }
}



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…