CVE-2025-38133 (GCVE-0-2025-38133)

Vulnerability from cvelistv5 – Published: 2025-07-03 08:35 – Updated: 2026-08-05 11:59
VLAI
Title
iio: adc: ad4851: fix ad4858 chan pointer handling
Summary
In the Linux kernel, the following vulnerability has been resolved: iio: adc: ad4851: fix ad4858 chan pointer handling The pointer returned from ad4851_parse_channels_common() is incremented internally as each channel is populated. In ad4858_parse_channels(), the same pointer was further incremented while setting ext_scan_type fields for each channel. This resulted in indio_dev->channels being set to a pointer past the end of the allocated array, potentially causing memory corruption or undefined behavior. Fix this by iterating over the channels using an explicit index instead of incrementing the pointer. This preserves the original base pointer and ensures all channel metadata is set correctly.
Assigner
Impacted products
Vendor Product Version
Linux Linux Affected: 6250803fe2ec92be32a4df1c3a39c4a460d5bd58 , < 6c3b9e1167d072ce2d01cafec7866647cf8d3616 (git)
Affected: 6250803fe2ec92be32a4df1c3a39c4a460d5bd58 , < 499a8cee812588905cc940837e69918c1649a19e (git)
Create a notification for this product.
Linux Linux Affected: 6.15
Unaffected: 0 , < 6.15 (semver)
Unaffected: 6.15.3 , ≤ 6.15.* (semver)
Unaffected: 6.16 , ≤ * (original_commit_for_fix)
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/iio/adc/ad4851.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "6c3b9e1167d072ce2d01cafec7866647cf8d3616",
              "status": "affected",
              "version": "6250803fe2ec92be32a4df1c3a39c4a460d5bd58",
              "versionType": "git"
            },
            {
              "lessThan": "499a8cee812588905cc940837e69918c1649a19e",
              "status": "affected",
              "version": "6250803fe2ec92be32a4df1c3a39c4a460d5bd58",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/iio/adc/ad4851.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.15"
            },
            {
              "lessThan": "6.15",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.15.*",
              "status": "unaffected",
              "version": "6.15.3",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.16",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.15.3",
                  "versionStartIncluding": "6.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.16",
                  "versionStartIncluding": "6.15",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\niio: adc: ad4851: fix ad4858 chan pointer handling\n\nThe pointer returned from ad4851_parse_channels_common() is incremented\ninternally as each channel is populated. In ad4858_parse_channels(),\nthe same pointer was further incremented while setting ext_scan_type\nfields for each channel. This resulted in indio_dev-\u003echannels being set\nto a pointer past the end of the allocated array, potentially causing\nmemory corruption or undefined behavior.\n\nFix this by iterating over the channels using an explicit index instead\nof incrementing the pointer. This preserves the original base pointer\nand ensures all channel metadata is set correctly."
        }
      ],
      "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 defect is in an SPI-attached ADC driver reached at driver probe and afterwards through the device\u0027s IIO sysfs/chardev interface, both of which require local system access. There is no network or remote-peer data path into this code, and the SPI part is board-soldered rather than user-pluggable.\nAC:L - The past-the-end pointer is stored into indio_dev-\u003echannels unconditionally on every probe of an ad4852/4854/4856/4858 part, so the out-of-bounds condition is fully deterministic rather than dependent on any state the attacker cannot influence. Subsequent interaction with the resulting channel attributes and buffer scan elements is ordinary, reliably repeatable local activity.\nPR:L - The corrupted channel array is established automatically at boot with no attacker action at all, and the resulting sysfs attributes, ext_info callbacks and buffer scan-element interface are exercised by any local user holding an ordinary account with access to the IIO device (commonly group-granted by udev on the industrial/embedded systems these ADCs ship in). No CAP_SYS_ADMIN or root is needed to reach the corrupted metadata.\nUI:N - No victim action is required \u2014 the out-of-bounds pointer is installed during automatic driver probe, and the subsequent accesses are initiated entirely by the attacker.\nS:U - The out-of-bounds reads, wild pointer dereferences and downstream buffer miscomputation all occur within the kernel\u0027s own security authority. No VM, IOMMU or sandbox boundary is crossed.\nC:H - The IIO core reads roughly a kilobyte of adjacent heap memory as channel metadata, and that data is exposed to userspace: extend_name/datasheet_name/ext_info-\u003ename are wild pointers whose target contents become sysfs attribute names, and ext_info-\u003eread is invoked to produce attribute values. This yields disclosure of arbitrary adjacent kernel memory and of whatever the wild pointers happen to reference.\nI:H - Attacker-uncontrolled but corruptible metadata drives writable paths: ext_info-\u003ewrite is called as a function pointer sourced from out-of-bounds heap memory, giving a control-flow hijack primitive, and garbage storagebits/realbits/shift/scan_index values feed iio_compute_scan_bytes() and the demux offsets, producing out-of-bounds writes into the IIO buffer. This is exactly the \"memory corruption or undefined behavior\" the fix cites.\nA:H - Dereferencing the wild ext_info/extend_name/datasheet_name pointers during iio_device_register() readily oopses the kernel at probe, and a garbage scan_index inflates masklength so bitmap_zalloc() attempts an enormous allocation. Either outcome is a crash or denial of service on the affected device."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:59:49.082Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/6c3b9e1167d072ce2d01cafec7866647cf8d3616"
        },
        {
          "url": "https://git.kernel.org/stable/c/499a8cee812588905cc940837e69918c1649a19e"
        }
      ],
      "title": "iio: adc: ad4851: fix ad4858 chan pointer handling",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2025-38133",
    "datePublished": "2025-07-03T08:35:36.802Z",
    "dateReserved": "2025-04-16T04:51:23.987Z",
    "dateUpdated": "2026-08-05T11:59:49.082Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2025-38133",
      "date": "2026-08-14",
      "epss": "0.00158",
      "percentile": "0.05491"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2025-38133\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-07-03T09:15:27.697\",\"lastModified\":\"2026-07-30T06:22:54.613\",\"vulnStatus\":\"Modified\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\niio: adc: ad4851: fix ad4858 chan pointer handling\\n\\nThe pointer returned from ad4851_parse_channels_common() is incremented\\ninternally as each channel is populated. In ad4858_parse_channels(),\\nthe same pointer was further incremented while setting ext_scan_type\\nfields for each channel. This resulted in indio_dev-\u003echannels being set\\nto a pointer past the end of the allocated array, potentially causing\\nmemory corruption or undefined behavior.\\n\\nFix this by iterating over the channels using an explicit index instead\\nof incrementing the pointer. This preserves the original base pointer\\nand ensures all channel metadata is set correctly.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: iio: adc: ad4851: correcci\u00f3n del manejo del puntero de canal ad4858. El puntero devuelto por ad4851_parse_channels_common() se incrementa internamente a medida que se rellena cada canal. En ad4858_parse_channels(), el mismo puntero se increment\u00f3 a\u00fan m\u00e1s al configurar los campos ext_scan_type para cada canal. Esto provoc\u00f3 que indio_dev-\u0026gt;channels se configurara en un puntero m\u00e1s all\u00e1 del final de la matriz asignada, lo que podr\u00eda causar corrupci\u00f3n de memoria o un comportamiento indefinido. Corrija esto iterando sobre los canales utilizando un \u00edndice expl\u00edcito en lugar de incrementar el puntero. Esto preserva el puntero base original y garantiza que todos los metadatos del canal se configuren correctamente.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"drivers/iio/adc/ad4851.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6250803fe2ec92be32a4df1c3a39c4a460d5bd58\",\"lessThan\":\"6c3b9e1167d072ce2d01cafec7866647cf8d3616\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"6250803fe2ec92be32a4df1c3a39c4a460d5bd58\",\"lessThan\":\"499a8cee812588905cc940837e69918c1649a19e\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"drivers/iio/adc/ad4851.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.15\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.15\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.15.3\",\"lessThanOrEqual\":\"6.15.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.16\",\"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},{\"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.15\",\"versionEndExcluding\":\"6.15.3\",\"matchCriteriaId\":\"658B94DB-A94A-4588-94DD-614A72725C45\"}]}]}],\"references\":[{\"url\":\"https://git.kernel.org/stable/c/499a8cee812588905cc940837e69918c1649a19e\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/6c3b9e1167d072ce2d01cafec7866647cf8d3616\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]}]}}",
    "redhat_vex": {
      "aggregate_severity": "None",
      "current_release_date": "2026-06-30T10:26:37+00:00",
      "cve": "CVE-2025-38133",
      "id": "CVE-2025-38133",
      "initial_release_date": "2025-07-03T00:00:00+00:00",
      "product_status:known_not_affected": "274",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: iio: adc: ad4851: fix ad4858 chan pointer handling",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2025/cve-2025-38133.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-07-31T01:12:58Z",
      "cve": "CVE-2025-38133",
      "id": "CVE-2025-38133",
      "initial_release_date": "2025-07-03T23:23:17Z",
      "product_status:known_not_affected": "416",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2025-38133",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2025-38133.json",
      "version": "6"
    }
  }
}



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…

Loading…