On July 19, 2026, the Linux kernel project disclosed a vulnerability that turns any USB-C cable, dock, or charger into a potential memory snoop. CVE-2026-63963, an information-disclosure bug in the kernel’s USB Type-C power delivery stack, lets a malicious device force the operating system to read beyond its assigned memory buffers—potentially leaking sensitive kernel data. Patches have landed in multiple stable kernel branches, but the fix won’t protect you until your distribution ships it and you reboot.
This isn’t a remote-code-execution nightmare, and it doesn’t affect Windows PCs directly. But for anyone running Linux on a laptop, developer workstation, or embedded system that regularly plugs into public chargers, shared docks, or unfamiliar conference-room adapters, ignoring it would be a mistake.
The Fix in a Nutshell
The vulnerability lives in drivers/usb/typec/tcpm/tcpm.c, the kernel’s Type-C Port Manager (TCPM) code. That’s the piece that negotiates power roles, cable capabilities, and alternate modes like DisplayPort over USB-C. When a connected device responds to a Discover Identity request—used to figure out what kind of gadget is on the other end—it sends back a block of Vendor Defined Objects (VDOs) with a count field. Before the patch, the kernel took that count at face value and used it to index into static arrays without checking bounds. A malicious or malfunctioning device could claim more VDOs than the arrays had room for, making the kernel read adjacent memory.
The fix, merged into mainline and backported to stable branches, adds a simple validation: if the count is too large, the identity data is rejected rather than blindly indexed. The patched functions are svdm_consume_identity() for directly connected partners and svdm_consume_identity_sop_prime() for cable plugs reached through SOP’ messaging.
Fixed versions:
- Linux 6.12.93 and later 6.12.x builds
- Linux 6.18.35 and later 6.18.x builds
- Linux 7.0.12 and later 7.0.x builds
- Linux 7.1 and any newer mainline release
The flaw has existed since Linux 4.12, meaning a long tail of older LTS kernels is affected if the TCPM code is active. Distribution kernels may backport the exact patch without bumping the upstream version number, so check your vendor’s changelog, not just uname -r.
Who’s at Risk?
Native Linux users with USB-C ports. This is primarily a laptop user’s vulnerability. If your system charges via USB-C, docks over Thunderbolt/USB4, or drives a display through a Type-C adapter, the TCPM stack is in play. Desktops and servers with traditional barrel jacks and no power delivery negotiation are likely unaffected unless they have USB-C ports that actively participate in PD discovery.
Dual-boot and multi-OS environments. A machine that boots both Windows 11 and Fedora needs separate kernel updates for each OS. Updating Windows does nothing for the Linux partition. If the Linux side uses a vulnerable kernel and you connect an untrusted USB-C gadget there, you’re exposed.
Windows Subsystem for Linux is a special case. Standard WSL2 runs a Microsoft-provided kernel that generally doesn’t map the host’s raw USB-C PD controller into the virtual machine. So typical WSL workflows—command-line tools, development containers, AI models—are not directly exploitable through this bug. However, custom passthrough setups or niche industrial I/O scenarios might create a path; if you’re doing low-level USB forwarding, review your architecture.
Enterprise fleets face the classic “patch lag” problem. A managed Linux laptop fleet using a long-term support distribution may wait weeks or months for the CVE to trickle into the vendor’s update stream. The risk is modest—an attacker needs physical access with a crafted device—but not zero, especially for traveling employees, shared workspaces, and kiosk-style terminals.
Why Your USB-C Cable Isn’t Just a Wire
This vulnerability peels back a layer most users never think about. Before you see a charging icon or a file browser, a USB-C port conducts a silent conversation over its Configuration Channel (CC) line. It swaps power roles, negotiates voltage and current, identifies the cable’s capabilities, and decides whether to enable high-speed data or video modes. That conversation happens in kernel space, parsing structured messages from hardware that the OS has no reason to trust implicitly.
A cheap USB-C cable bought at an airport kiosk contains an e-marker chip that reports how much current it can handle. A dock houses multiple microcontrollers that exchange PD messages before the laptop even posts a video signal. A “fast charger” might be a tiny Linux computer in its own right. All of those can send malformed metadata. CVE-2026-63963 exposes a place where the kernel wasn’t skeptical enough of that metadata.
The bug is an out-of-bounds read, not a write. That limits immediate impact to data disclosure—kernel addresses, pointer values, or residual memory from previous operations. But information leaks often act as stepping stones for more complex exploits, weakening address-space layout randomization (ASLR) or revealing other sensitive structures. The attack surface is physical or adjacent, requiring you to plug something in, so mass remote exploitation isn’t in the cards. But the same scenario that makes a malicious thumb drive dangerous makes a malicious USB-C dock dangerous.
How We Got Here
The USB Type-C specification was built for versatility, not simplicity. When the Linux kernel began adding TCPM support around 2016 (version 4.12 timeframe), it had to implement a laundry list of PD commands: Source Capabilities, Sink Capabilities, Request, Accept, Reject, Vendor Defined Messages, and many more. The Discover Identity sequence was part of that initial plumbing.
Inside those identity responses, VDOs carry things like USB-IF certification status, product IDs, cable type, and modal support. The specification defines a maximum number of VDOs for each type of responder (device, cable, dual-role). But early kernel code trusted the count field from the wire without cross-referencing it against the fixed-size arrays used to parse these objects. Over the years, code refactored, USB4 came along, and the assumption that a compliant device would never lie persisted.
This isn’t a one-off. Similar assumption violations have bitten USB mass storage (bad block descriptors), Bluetooth controllers (truncated event packets), and PCIe devices (malformed configuration space). The lesson repeats: every length and count field coming from external hardware is attacker-controlled until validated. The TCPM fix closes one such gap; it’s unlikely to be the last.
What to Do Now
For individuals running Linux desktops or laptops:
- Check your kernel: Run
uname -rto see your current version. Compare it against the fixed versions above, but remember that your distro may have backported the patch earlier (e.g., Ubuntu’s kernel 5.15.0-123.140 could contain the fix even though the upstream number looks old). Look for “CVE-2026-63963” in your package manager’s changelog. - Install updates and reboot: On Debian/Ubuntu:
sudo apt update && sudo apt upgrade. On Fedora:sudo dnf upgrade. On Arch:sudo pacman -Syu. A kernel package install doesn’t protect the running system—you must reboot into the new kernel. - Until patched, be picky about accessories: Avoid no-name USB-C chargers, public charging kiosks, borrowed cables, and untrusted docks. If you must charge in an airport or café, use a USB data-blocker (a “USB condom”) that strips data lines and passes only power—though this can break fast charging, PD negotiation, or alternate modes.
- If you’re a dual-booter, update both operating systems. Don’t assume that because you mainly use Windows, your Linux partition is safe. Malicious firmware could trigger the bug the next time you boot Linux.
For IT administrators:
- Inventory your Linux endpoints with USB-C power delivery support. A headless server without USB-C may technically run an affected kernel version, but no attacker can reach the code without a physical Type-C port actively participating in PD. Prioritize laptops, engineering workstations, and embedded devices that interface with docks, chargers, or development boards.
- Check your distribution’s security advisory for explicit mention of CVE-2026-63963. Enterprise distros like Red Hat Enterprise Linux, SUSE, and Ubuntu Pro backport fixes into their LTS kernels; the version string may not match the upstream fixed list.
- Deploy patches in a risk-informed order:
1. Mobile devices used in public (traveling executives, sales teams).
2. Shared conference-room systems with dock turnover.
3. Developer machines that connect prototype hardware or third-party gadgets.
4. Fixed infrastructure with accessible USB-C ports. - For high-security environments, consider physical port locks or disabling unused USB-C ports in UEFI firmware until patching completes. This is a temporary measure and shouldn’t substitute for kernel updates.
For the curious: If you want to test whether your system is affected before patching, a standard compliance tool won’t help—the bug is in the kernel’s parser, not in a user-space library. However, with appropriate permissions you could build a kernel with extra debugging or use a protocol analyzer to inspect PD traffic, but a practical test requires a device capable of injecting malformed VDO counts. Unless you’re a security researcher, it’s simpler to just assume your system needs the patch and apply it.
What’s Next
At the time of writing, the National Vulnerability Database has not assigned a CVSS score to CVE-2026-63963. Analysts will weigh factors like the required physical access, the confidentiality impact of a kernel memory leak, and the complexity of crafting a weaponized USB-C emulator. Expect a medium-to-high severity rating, likely in the 5.5–7.0 range, once the assessment completes.
More broadly, this disclosure should accelerate the push for formal verification and fuzzing of USB Power Delivery stacks. The USB Implementers Forum already offers compliance test fixtures, but those focus on specification adherence—not security. Hardware vendors, distro maintainers, and kernel developers would benefit from dedicated PD fuzzing harnesses that feed deliberately broken identity responses to the TCPM state machine.
For everyday users, the fix cycle will be familiar: apply updates, reboot, and move on. But CVE-2026-63963 leaves a lasting reminder that every port is a negotiated interface, and a cable is never just a cable. In an era of USB4 hubs, high-wattage charging, and single-cable docking, the kernel code that handles plug-in moments deserves the same paranoid mindset we’ve applied to network drivers for decades. This patch is one more lock on that door.
Primary source: National Vulnerability Database – CVE-2026-63963 (published July 19, 2026; last modified July 20, 2026). Patch commits: 569f7971542e, f9d787fbe831, ed8649f3822e, 8fbc349e8383 in the Linux kernel stable tree.