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

CVE-2026-90025 (GCVE-0-2026-90025)

Vulnerability from cvelistv5 – Published: 2026-09-16 10:33 – Updated: 2026-09-16 14:41
VLAI
Title
usb: typec: ucsi: displayport: Fix OOB altmode array index
Summary
In the Linux kernel, the following vulnerability has been resolved: usb: typec: ucsi: displayport: Fix OOB altmode array index The UCSI displayport driver indexes the connector's port altmode array with the GET_CURRENT_CAM response after checking it is not 0xff. The port altmode array is UCSI_MAX_ALTMODES elements long. If the PPM returns an invalid GET_CURRENT_CAM response above UCSI_MAX_ALTMODES and not equal to 0xff, the kernel may crash with an array index OOB error. Update the UCSI displayport driver to verify the current cam is less than UCSI_MAX_ALTMODES before accessing the port altmode array.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: af8622f6a585d8d82b11cd7987e082861fd0edd3 , < 8fde7e4a366184e9a6aa95541e52933a73c00a74 (git)
Affected: af8622f6a585d8d82b11cd7987e082861fd0edd3 , < 83f1abd62cc134700ba92e1e2dc650a49a185497 (git)
Affected: af8622f6a585d8d82b11cd7987e082861fd0edd3 , < 1ffed96ef986e2cdf986aa4a4506a5e6dcdf4456 (git)
Affected: af8622f6a585d8d82b11cd7987e082861fd0edd3 , < 58e0ee293ec5e06cacbe3953ad44042f1473dae9 (git)
Affected: af8622f6a585d8d82b11cd7987e082861fd0edd3 , < ac9f878c468052af6571e8639ab1c3ae040b908f (git)
Affected: af8622f6a585d8d82b11cd7987e082861fd0edd3 , < 33a81acd2d1d0667d4eff93cb90339fa53e617e8 (git)
Affected: af8622f6a585d8d82b11cd7987e082861fd0edd3 , < bdaaf3074aedce8f1b173cc363d61cff5f6a585f (git)
Affected: af8622f6a585d8d82b11cd7987e082861fd0edd3 , < 04cec690b1fd9d1c4c314b91a10d8c68a3acfe18 (git)
guessed Create a notification for this product.
Linux Linux Affected: 5.2
Unaffected: 0 , < 5.2 (semver)
Unaffected: 5.10.270 , ≤ 5.10.* (semver)
Unaffected: 5.15.221 , ≤ 5.15.* (semver)
Unaffected: 6.1.188 , ≤ 6.1.* (semver)
Unaffected: 6.6.157 , ≤ 6.6.* (semver)
Unaffected: 6.12.110 , ≤ 6.12.* (semver)
Unaffected: 6.18.51 , ≤ 6.18.* (semver)
Unaffected: 7.2.5 , ≤ 7.2.* (semver)
Unaffected: 7.3-rc2 , ≤ * (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/usb/typec/ucsi/displayport.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "8fde7e4a366184e9a6aa95541e52933a73c00a74",
              "status": "affected",
              "version": "af8622f6a585d8d82b11cd7987e082861fd0edd3",
              "versionType": "git"
            },
            {
              "lessThan": "83f1abd62cc134700ba92e1e2dc650a49a185497",
              "status": "affected",
              "version": "af8622f6a585d8d82b11cd7987e082861fd0edd3",
              "versionType": "git"
            },
            {
              "lessThan": "1ffed96ef986e2cdf986aa4a4506a5e6dcdf4456",
              "status": "affected",
              "version": "af8622f6a585d8d82b11cd7987e082861fd0edd3",
              "versionType": "git"
            },
            {
              "lessThan": "58e0ee293ec5e06cacbe3953ad44042f1473dae9",
              "status": "affected",
              "version": "af8622f6a585d8d82b11cd7987e082861fd0edd3",
              "versionType": "git"
            },
            {
              "lessThan": "ac9f878c468052af6571e8639ab1c3ae040b908f",
              "status": "affected",
              "version": "af8622f6a585d8d82b11cd7987e082861fd0edd3",
              "versionType": "git"
            },
            {
              "lessThan": "33a81acd2d1d0667d4eff93cb90339fa53e617e8",
              "status": "affected",
              "version": "af8622f6a585d8d82b11cd7987e082861fd0edd3",
              "versionType": "git"
            },
            {
              "lessThan": "bdaaf3074aedce8f1b173cc363d61cff5f6a585f",
              "status": "affected",
              "version": "af8622f6a585d8d82b11cd7987e082861fd0edd3",
              "versionType": "git"
            },
            {
              "lessThan": "04cec690b1fd9d1c4c314b91a10d8c68a3acfe18",
              "status": "affected",
              "version": "af8622f6a585d8d82b11cd7987e082861fd0edd3",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/usb/typec/ucsi/displayport.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.2"
            },
            {
              "lessThan": "5.2",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.270",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.221",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.188",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.157",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.110",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.51",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.5",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3-rc2",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.270",
                  "versionStartIncluding": "5.2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.221",
                  "versionStartIncluding": "5.2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.188",
                  "versionStartIncluding": "5.2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.157",
                  "versionStartIncluding": "5.2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.110",
                  "versionStartIncluding": "5.2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.51",
                  "versionStartIncluding": "5.2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.5",
                  "versionStartIncluding": "5.2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc2",
                  "versionStartIncluding": "5.2",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nusb: typec: ucsi: displayport: Fix OOB altmode array index\n\nThe UCSI displayport driver indexes the connector\u0027s port altmode array\nwith the GET_CURRENT_CAM response after checking it is not 0xff. The\nport altmode array is UCSI_MAX_ALTMODES elements long. If the PPM\nreturns an invalid GET_CURRENT_CAM response above UCSI_MAX_ALTMODES and\nnot equal to 0xff, the kernel may crash with an array index OOB error.\n\nUpdate the UCSI displayport driver to verify the current cam is less\nthan UCSI_MAX_ALTMODES before accessing the port altmode array."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.7,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The OOB index is the PPM GET_CURRENT_CAM byte from onboard UCSI firmware (ACPI EC, I2C CCG/STM32G0, pmic_glink, Chrome OS EC), not a USB-C partner or network packet. A compromised PPM can report CONNECTED plus DP partner altmodes and drive enter without a physical plug, matching other firmware-to-kernel scores.\nAC:L - The PPM fully controls the GET_CURRENT_CAM u8; any value in 30-254 (UCSI_MAX_ALTMODES is 30, 0xff is the only sentinel) deterministically indexes port_altmode[] out of bounds with no race or attacker-uncontrollable layout.\nPR:N - UCSI connector-change work, GET_CURRENT_CAM, and dp_altmode_probe\u0027s automatic enter run in kernel context from PPM notifications with no capable() or credential check, so compromised PPM/EC firmware needs no host account.\nUI:N - Partner registration and DisplayPort altmode enter run automatically from PPM connector-change events and dp_altmode_probe scheduled work; no victim must plug a cable, mount media, or open a device node.\nS:U - The out-of-bounds pointer load stays inside the host kernel UCSI DisplayPort driver and connector heap; it does not cross a VM, IOMMU, or other security-authority boundary.\nC:H - cur is a full u8 used as an index into port_altmode[UCSI_MAX_ALTMODES], so values 30-254 read a kernel pointer from up to about 2KB past the array into adjacent connector/heap memory; that unbounded OOB read scores Confidentiality High.\nI:N - The OOB pointer is only compared to alt to choose 0 versus -EBUSY; it is never written, stored, or used as a write address, so there is no OOB write, use-after-free, or control-flow hijack primitive.\nA:H - An out-of-range CAM can load from unmapped heap, trip KASAN/UBSAN array-index-out-of-bounds, or oops as the fix describes, producing a kernel panic that the PPM can retrigger on each enter."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-16T14:41:40.331Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/8fde7e4a366184e9a6aa95541e52933a73c00a74"
        },
        {
          "url": "https://git.kernel.org/stable/c/83f1abd62cc134700ba92e1e2dc650a49a185497"
        },
        {
          "url": "https://git.kernel.org/stable/c/1ffed96ef986e2cdf986aa4a4506a5e6dcdf4456"
        },
        {
          "url": "https://git.kernel.org/stable/c/58e0ee293ec5e06cacbe3953ad44042f1473dae9"
        },
        {
          "url": "https://git.kernel.org/stable/c/ac9f878c468052af6571e8639ab1c3ae040b908f"
        },
        {
          "url": "https://git.kernel.org/stable/c/33a81acd2d1d0667d4eff93cb90339fa53e617e8"
        },
        {
          "url": "https://git.kernel.org/stable/c/bdaaf3074aedce8f1b173cc363d61cff5f6a585f"
        },
        {
          "url": "https://git.kernel.org/stable/c/04cec690b1fd9d1c4c314b91a10d8c68a3acfe18"
        }
      ],
      "title": "usb: typec: ucsi: displayport: Fix OOB altmode array index",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-90025",
    "datePublished": "2026-09-16T10:33:28.313Z",
    "dateReserved": "2026-09-11T19:38:34.782Z",
    "dateUpdated": "2026-09-16T14:41:40.331Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-90025\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-09-16T11:17:15.487\",\"lastModified\":\"2026-09-16T15:18:25.790\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nusb: typec: ucsi: displayport: Fix OOB altmode array index\\n\\nThe UCSI displayport driver indexes the connector\u0027s port altmode array\\nwith the GET_CURRENT_CAM response after checking it is not 0xff. The\\nport altmode array is UCSI_MAX_ALTMODES elements long. If the PPM\\nreturns an invalid GET_CURRENT_CAM response above UCSI_MAX_ALTMODES and\\nnot equal to 0xff, the kernel may crash with an array index OOB error.\\n\\nUpdate the UCSI displayport driver to verify the current cam is less\\nthan UCSI_MAX_ALTMODES before accessing the port altmode array.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"drivers/usb/typec/ucsi/displayport.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"af8622f6a585d8d82b11cd7987e082861fd0edd3\",\"lessThan\":\"8fde7e4a366184e9a6aa95541e52933a73c00a74\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"af8622f6a585d8d82b11cd7987e082861fd0edd3\",\"lessThan\":\"83f1abd62cc134700ba92e1e2dc650a49a185497\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"af8622f6a585d8d82b11cd7987e082861fd0edd3\",\"lessThan\":\"1ffed96ef986e2cdf986aa4a4506a5e6dcdf4456\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"af8622f6a585d8d82b11cd7987e082861fd0edd3\",\"lessThan\":\"58e0ee293ec5e06cacbe3953ad44042f1473dae9\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"af8622f6a585d8d82b11cd7987e082861fd0edd3\",\"lessThan\":\"ac9f878c468052af6571e8639ab1c3ae040b908f\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"af8622f6a585d8d82b11cd7987e082861fd0edd3\",\"lessThan\":\"33a81acd2d1d0667d4eff93cb90339fa53e617e8\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"af8622f6a585d8d82b11cd7987e082861fd0edd3\",\"lessThan\":\"bdaaf3074aedce8f1b173cc363d61cff5f6a585f\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"af8622f6a585d8d82b11cd7987e082861fd0edd3\",\"lessThan\":\"04cec690b1fd9d1c4c314b91a10d8c68a3acfe18\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"drivers/usb/typec/ucsi/displayport.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"5.2\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"5.2\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"5.10.270\",\"lessThanOrEqual\":\"5.10.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"5.15.221\",\"lessThanOrEqual\":\"5.15.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.1.188\",\"lessThanOrEqual\":\"6.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.6.157\",\"lessThanOrEqual\":\"6.6.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.110\",\"lessThanOrEqual\":\"6.12.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18.51\",\"lessThanOrEqual\":\"6.18.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.2.5\",\"lessThanOrEqual\":\"7.2.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.3-rc2\",\"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:N/UI:N/S:U/C:H/I:N/A:H\",\"baseScore\":7.7,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":2.5,\"impactScore\":5.2}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/04cec690b1fd9d1c4c314b91a10d8c68a3acfe18\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/1ffed96ef986e2cdf986aa4a4506a5e6dcdf4456\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/33a81acd2d1d0667d4eff93cb90339fa53e617e8\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/58e0ee293ec5e06cacbe3953ad44042f1473dae9\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/83f1abd62cc134700ba92e1e2dc650a49a185497\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/8fde7e4a366184e9a6aa95541e52933a73c00a74\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/ac9f878c468052af6571e8639ab1c3ae040b908f\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/bdaaf3074aedce8f1b173cc363d61cff5f6a585f\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}"
  }
}



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…