0.0
NA
CVE-2026-63964
usb: typec: ucsi: ccg: reject firmware images without a ':' record header
Description

In the Linux kernel, the following vulnerability has been resolved: usb: typec: ucsi: ccg: reject firmware images without a ':' record header do_flash() locates the first .cyacd record with p = strnchr(fw->data, fw->size, ':'); while (p < eof) { s = strnchr(p + 1, eof - p - 1, ':'); ... } If the firmware image contains no ':' byte, strnchr() returns NULL. NULL compares less than the valid kernel pointer eof, so the loop body runs and strnchr() is called with p + 1 == (void *)1 and a length of roughly (unsigned long)eof, causing a wonderful crash. The not_signed_fw fallthrough earlier in do_flash() and the chip-state branches in ccg_fw_update_needed() allow an unsigned blob to reach this loop, so a root user who can place a crafted file under /lib/firmware and write the do_flash sysfs attribute can trigger the oops. Bail out with -EINVAL when the initial strnchr() returns NULL.

INFO

Published Date :

July 19, 2026, 4:17 p.m.

Last Modified :

July 30, 2026, 2:51 p.m.

Remotely Exploit :

No

Source :

416baaa9-dc9f-4396-8d5f-8c081fb06d67
Affected Products

The following products are affected by CVE-2026-63964 vulnerability. Even if cvefeed.io is aware of the exact versions of the products that are affected, the information is not represented in the table below.

ID Vendor Product Action
1 Linux linux_kernel
Solution
Apply kernel updates to prevent memory corruption from crafted firmware images.
  • Update the Linux kernel.
  • Apply vendor-specific firmware patches.
  • Ensure firmware images are properly signed.
  • Validate firmware image headers.
CWE - Common Weakness Enumeration

While CVE identifies specific instances of vulnerabilities, CWE categorizes the common flaws or weaknesses that can lead to vulnerabilities. CVE-2026-63964 is associated with the following CWEs:

Common Attack Pattern Enumeration and Classification (CAPEC)

Common Attack Pattern Enumeration and Classification (CAPEC) stores attack patterns, which are descriptions of the common attributes and approaches employed by adversaries to exploit the CVE-2026-63964 weaknesses.

We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).

Results are limited to the first 15 repositories due to potential performance issues.

The following list is the news that have been mention CVE-2026-63964 vulnerability anywhere in the article.

The following table lists the changes that have been made to the CVE-2026-63964 vulnerability over time.

Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.

  • CVE Modified by 416baaa9-dc9f-4396-8d5f-8c081fb06d67

    Jul. 20, 2026

    Action Type Old Value New Value
    Changed Affected [{'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'affected', 'version': '1da177e4c3f41524e886b7f1b8a0c1fc7321cac2', 'lessThan': 'b41dfc033fe594e152648050e95b9489cd53e9e3', 'versionType': 'git'}, {'status': 'affected', 'version': '1da177e4c3f41524e886b7f1b8a0c1fc7321cac2', 'lessThan': '2f395ca1263bd181995eb829f5943a83a20db213', 'versionType': 'git'}, {'status': 'affected', 'version': '1da177e4c3f41524e886b7f1b8a0c1fc7321cac2', 'lessThan': '6526f8684f72391138353642af908803ba70795e', 'versionType': 'git'}, {'status': 'affected', 'version': '1da177e4c3f41524e886b7f1b8a0c1fc7321cac2', 'lessThan': '3f432b8203066c26770fe6ea591361f10021dd6b', 'versionType': 'git'}, {'status': 'affected', 'version': '1da177e4c3f41524e886b7f1b8a0c1fc7321cac2', 'lessThan': 'c4ee519b06389e59ba2d6aa722fcc4a02a8bbcbb', 'versionType': 'git'}, {'status': 'affected', 'version': '1da177e4c3f41524e886b7f1b8a0c1fc7321cac2', 'lessThan': 'a38ed87818b2419090fb1a6338ddce6842b65dfa', 'versionType': 'git'}, {'status': 'affected', 'version': '1da177e4c3f41524e886b7f1b8a0c1fc7321cac2', 'lessThan': 'c8460de584fe5415d212cfdd127d4db90835a450', 'versionType': 'git'}, {'status': 'affected', 'version': '1da177e4c3f41524e886b7f1b8a0c1fc7321cac2', 'lessThan': 'd7486952bf74e546ee3748fb14b2d07881fa6273', 'versionType': 'git'}, {'status': 'affected', 'version': '0', 'lessThan': '5.10.259', 'versionType': 'semver'}, {'status': 'affected', 'version': '0', 'lessThan': '5.15.210', 'versionType': 'semver'}, {'status': 'affected', 'version': '0', 'lessThan': '6.1.176', 'versionType': 'semver'}, {'status': 'affected', 'version': '0', 'lessThan': '6.6.143', 'versionType': 'semver'}, {'status': 'affected', 'version': '0', 'lessThan': '6.12.93', 'versionType': 'semver'}, {'status': 'affected', 'version': '0', 'lessThan': '6.18.35', 'versionType': 'semver'}, {'status': 'affected', 'version': '0', 'lessThan': '7.0.12', 'versionType': 'semver'}], 'programFiles': ['drivers/usb/typec/ucsi/ucsi_ccg.c'], 'defaultStatus': 'unaffected'}, {'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'unaffected', 'version': '5.10.259', 'versionType': 'semver', 'lessThanOrEqual': '5.10.*'}, {'status': 'unaffected', 'version': '5.15.210', 'versionType': 'semver', 'lessThanOrEqual': '5.15.*'}, {'status': 'unaffected', 'version': '6.1.176', 'versionType': 'semver', 'lessThanOrEqual': '6.1.*'}, {'status': 'unaffected', 'version': '6.6.143', 'versionType': 'semver', 'lessThanOrEqual': '6.6.*'}, {'status': 'unaffected', 'version': '6.12.93', 'versionType': 'semver', 'lessThanOrEqual': '6.12.*'}, {'status': 'unaffected', 'version': '6.18.35', 'versionType': 'semver', 'lessThanOrEqual': '6.18.*'}, {'status': 'unaffected', 'version': '7.0.12', 'versionType': 'semver', 'lessThanOrEqual': '7.0.*'}, {'status': 'unaffected', 'version': '7.1', 'versionType': 'original_commit_for_fix', 'lessThanOrEqual': '*'}], 'programFiles': ['drivers/usb/typec/ucsi/ucsi_ccg.c'], 'defaultStatus': 'affected'}] [{'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'affected', 'version': '5c9ae5a87573d38cfc4c740aafda2fa6ce06e401', 'lessThan': 'b41dfc033fe594e152648050e95b9489cd53e9e3', 'versionType': 'git'}, {'status': 'affected', 'version': '5c9ae5a87573d38cfc4c740aafda2fa6ce06e401', 'lessThan': '2f395ca1263bd181995eb829f5943a83a20db213', 'versionType': 'git'}, {'status': 'affected', 'version': '5c9ae5a87573d38cfc4c740aafda2fa6ce06e401', 'lessThan': '6526f8684f72391138353642af908803ba70795e', 'versionType': 'git'}, {'status': 'affected', 'version': '5c9ae5a87573d38cfc4c740aafda2fa6ce06e401', 'lessThan': '3f432b8203066c26770fe6ea591361f10021dd6b', 'versionType': 'git'}, {'status': 'affected', 'version': '5c9ae5a87573d38cfc4c740aafda2fa6ce06e401', 'lessThan': 'c4ee519b06389e59ba2d6aa722fcc4a02a8bbcbb', 'versionType': 'git'}, {'status': 'affected', 'version': '5c9ae5a87573d38cfc4c740aafda2fa6ce06e401', 'lessThan': 'a38ed87818b2419090fb1a6338ddce6842b65dfa', 'versionType': 'git'}, {'status': 'affected', 'version': '5c9ae5a87573d38cfc4c740aafda2fa6ce06e401', 'lessThan': 'c8460de584fe5415d212cfdd127d4db90835a450', 'versionType': 'git'}, {'status': 'affected', 'version': '5c9ae5a87573d38cfc4c740aafda2fa6ce06e401', 'lessThan': 'd7486952bf74e546ee3748fb14b2d07881fa6273', 'versionType': 'git'}], 'programFiles': ['drivers/usb/typec/ucsi/ucsi_ccg.c'], 'defaultStatus': 'unaffected'}, {'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'affected', 'version': '5.2'}, {'status': 'unaffected', 'version': '0', 'lessThan': '5.2', 'versionType': 'semver'}, {'status': 'unaffected', 'version': '5.10.259', 'versionType': 'semver', 'lessThanOrEqual': '5.10.*'}, {'status': 'unaffected', 'version': '5.15.210', 'versionType': 'semver', 'lessThanOrEqual': '5.15.*'}, {'status': 'unaffected', 'version': '6.1.176', 'versionType': 'semver', 'lessThanOrEqual': '6.1.*'}, {'status': 'unaffected', 'version': '6.6.143', 'versionType': 'semver', 'lessThanOrEqual': '6.6.*'}, {'status': 'unaffected', 'version': '6.12.93', 'versionType': 'semver', 'lessThanOrEqual': '6.12.*'}, {'status': 'unaffected', 'version': '6.18.35', 'versionType': 'semver', 'lessThanOrEqual': '6.18.*'}, {'status': 'unaffected', 'version': '7.0.12', 'versionType': 'semver', 'lessThanOrEqual': '7.0.*'}, {'status': 'unaffected', 'version': '7.1', 'versionType': 'original_commit_for_fix', 'lessThanOrEqual': '*'}], 'programFiles': ['drivers/usb/typec/ucsi/ucsi_ccg.c'], 'defaultStatus': 'affected'}]
  • New CVE Received by 416baaa9-dc9f-4396-8d5f-8c081fb06d67

    Jul. 19, 2026

    Action Type Old Value New Value
    Added Affected [{'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'affected', 'version': '1da177e4c3f41524e886b7f1b8a0c1fc7321cac2', 'lessThan': 'b41dfc033fe594e152648050e95b9489cd53e9e3', 'versionType': 'git'}, {'status': 'affected', 'version': '1da177e4c3f41524e886b7f1b8a0c1fc7321cac2', 'lessThan': '2f395ca1263bd181995eb829f5943a83a20db213', 'versionType': 'git'}, {'status': 'affected', 'version': '1da177e4c3f41524e886b7f1b8a0c1fc7321cac2', 'lessThan': '6526f8684f72391138353642af908803ba70795e', 'versionType': 'git'}, {'status': 'affected', 'version': '1da177e4c3f41524e886b7f1b8a0c1fc7321cac2', 'lessThan': '3f432b8203066c26770fe6ea591361f10021dd6b', 'versionType': 'git'}, {'status': 'affected', 'version': '1da177e4c3f41524e886b7f1b8a0c1fc7321cac2', 'lessThan': 'c4ee519b06389e59ba2d6aa722fcc4a02a8bbcbb', 'versionType': 'git'}, {'status': 'affected', 'version': '1da177e4c3f41524e886b7f1b8a0c1fc7321cac2', 'lessThan': 'a38ed87818b2419090fb1a6338ddce6842b65dfa', 'versionType': 'git'}, {'status': 'affected', 'version': '1da177e4c3f41524e886b7f1b8a0c1fc7321cac2', 'lessThan': 'c8460de584fe5415d212cfdd127d4db90835a450', 'versionType': 'git'}, {'status': 'affected', 'version': '1da177e4c3f41524e886b7f1b8a0c1fc7321cac2', 'lessThan': 'd7486952bf74e546ee3748fb14b2d07881fa6273', 'versionType': 'git'}, {'status': 'affected', 'version': '0', 'lessThan': '5.10.259', 'versionType': 'semver'}, {'status': 'affected', 'version': '0', 'lessThan': '5.15.210', 'versionType': 'semver'}, {'status': 'affected', 'version': '0', 'lessThan': '6.1.176', 'versionType': 'semver'}, {'status': 'affected', 'version': '0', 'lessThan': '6.6.143', 'versionType': 'semver'}, {'status': 'affected', 'version': '0', 'lessThan': '6.12.93', 'versionType': 'semver'}, {'status': 'affected', 'version': '0', 'lessThan': '6.18.35', 'versionType': 'semver'}, {'status': 'affected', 'version': '0', 'lessThan': '7.0.12', 'versionType': 'semver'}], 'programFiles': ['drivers/usb/typec/ucsi/ucsi_ccg.c'], 'defaultStatus': 'unaffected'}, {'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'unaffected', 'version': '5.10.259', 'versionType': 'semver', 'lessThanOrEqual': '5.10.*'}, {'status': 'unaffected', 'version': '5.15.210', 'versionType': 'semver', 'lessThanOrEqual': '5.15.*'}, {'status': 'unaffected', 'version': '6.1.176', 'versionType': 'semver', 'lessThanOrEqual': '6.1.*'}, {'status': 'unaffected', 'version': '6.6.143', 'versionType': 'semver', 'lessThanOrEqual': '6.6.*'}, {'status': 'unaffected', 'version': '6.12.93', 'versionType': 'semver', 'lessThanOrEqual': '6.12.*'}, {'status': 'unaffected', 'version': '6.18.35', 'versionType': 'semver', 'lessThanOrEqual': '6.18.*'}, {'status': 'unaffected', 'version': '7.0.12', 'versionType': 'semver', 'lessThanOrEqual': '7.0.*'}, {'status': 'unaffected', 'version': '7.1', 'versionType': 'original_commit_for_fix', 'lessThanOrEqual': '*'}], 'programFiles': ['drivers/usb/typec/ucsi/ucsi_ccg.c'], 'defaultStatus': 'affected'}]
    Added Description In the Linux kernel, the following vulnerability has been resolved: usb: typec: ucsi: ccg: reject firmware images without a ':' record header do_flash() locates the first .cyacd record with p = strnchr(fw->data, fw->size, ':'); while (p < eof) { s = strnchr(p + 1, eof - p - 1, ':'); ... } If the firmware image contains no ':' byte, strnchr() returns NULL. NULL compares less than the valid kernel pointer eof, so the loop body runs and strnchr() is called with p + 1 == (void *)1 and a length of roughly (unsigned long)eof, causing a wonderful crash. The not_signed_fw fallthrough earlier in do_flash() and the chip-state branches in ccg_fw_update_needed() allow an unsigned blob to reach this loop, so a root user who can place a crafted file under /lib/firmware and write the do_flash sysfs attribute can trigger the oops. Bail out with -EINVAL when the initial strnchr() returns NULL.
    Added Reference https://git.kernel.org/stable/c/2f395ca1263bd181995eb829f5943a83a20db213
    Added Reference https://git.kernel.org/stable/c/3f432b8203066c26770fe6ea591361f10021dd6b
    Added Reference https://git.kernel.org/stable/c/6526f8684f72391138353642af908803ba70795e
    Added Reference https://git.kernel.org/stable/c/a38ed87818b2419090fb1a6338ddce6842b65dfa
    Added Reference https://git.kernel.org/stable/c/b41dfc033fe594e152648050e95b9489cd53e9e3
    Added Reference https://git.kernel.org/stable/c/c4ee519b06389e59ba2d6aa722fcc4a02a8bbcbb
    Added Reference https://git.kernel.org/stable/c/c8460de584fe5415d212cfdd127d4db90835a450
    Added Reference https://git.kernel.org/stable/c/d7486952bf74e546ee3748fb14b2d07881fa6273
EPSS is a daily estimate of the probability of exploitation activity being observed over the next 30 days. Following chart shows the EPSS score history of the vulnerability.