CVE-2026-31697: crypto: ccp: Don't attempt to copy ID to userspace if PSP command failed
In the Linux kernel, the following vulnerability has been resolved:
crypto: ccp: Don't attempt to copy ID to userspace if PSP command failed
When retrieving the ID for the CPU, don't attempt to copy the ID blob to
userspace if the firmware command failed. If the failure was due to an
invalid length, i.e. the userspace buffer+length was too small, copying
the number of bytes _firmware_ requires will overflow the kernel-allocated
buffer and leak data to userspace.
BUG: KASAN: slab-out-of-bounds in instrument_copy_to_user ../include/linux/instrumented.h:129 [inline]
BUG: KASAN: slab-out-of-bounds in _inline_copy_to_user ../include/linux/uaccess.h:205 [inline]
BUG: KASAN: slab-out-of-bounds in _copy_to_user+0x66/0xa0 ../lib/usercopy.c:26
Read of size 64 at addr ffff8881867f5960 by task syz.0.906/24388
CPU: 130 UID: 0 PID: 24388 Comm: syz.0.906 Tainted: G U O 7.0.0-smp-DEV #28 PREEMPTLAZY
Tainted: [U]=USER, [O]=OOT_MODULE
Hardware name: Google, Inc. Arcadia_IT_80/Arcadia_IT_80, BIOS 12.62.0-0 11/19/2025
Call Trace:
<TASK>
dump_stack_lvl+0xc5/0x110 ../lib/dump_stack.c:120
print_address_description ../mm/kasan/report.c:378 [inline]
print_report+0xbc/0x260 ../mm/kasan/report.c:482
kasan_report+0xa2/0xe0 ../mm/kasan/report.c:595
check_region_inline ../mm/kasan/generic.c:-1 [inline]
kasan_check_range+0x264/0x2c0 ../mm/kasan/generic.c:200
instrument_copy_to_user ../include/linux/instrumented.h:129 [inline]
_inline_copy_to_user ../include/linux/uaccess.h:205 [inline]
_copy_to_user+0x66/0xa0 ../lib/usercopy.c:26
copy_to_user ../include/linux/uaccess.h:236 [inline]
sev_ioctl_do_get_id2+0x361/0x490 ../drivers/crypto/ccp/sev-dev.c:2222
sev_ioctl+0x25f/0x490 ../drivers/crypto/ccp/sev-dev.c:2575
vfs_ioctl ../fs/ioctl.c:51 [inline]
__do_sys_ioctl ../fs/ioctl.c:597 [inline]
__se_sys_ioctl+0x11d/0x1b0 ../fs/ioctl.c:583
do_syscall_x64 ../arch/x86/entry/syscall_64.c:63 [inline]
do_syscall_64+0xe0/0x800 ../arch/x86/entry/syscall_64.c:94
entry_SYSCALL_64_after_hwframe+0x76/0x7e
</TASK>
WARN if the driver says the command succeeded, but the firmware error code
says otherwise, as __sev_do_cmd_locked() is expected to return -EIO on any
firwmware error.
Security readout for executives and security teams
Plain-English summary
A local, low-privileged user may trigger the Linux AMD security processor driver to copy beyond an allocated kernel buffer. This can expose sensitive kernel memory to userspace and may disrupt the host. The issue is not remotely exploitable according to the supplied CVSS vector.
Executive priority
Treat as high priority on multi-user or shared AMD virtualization hosts exposing the SEV interface. Other systems should be assessed promptly, but remote-only attackers cannot directly trigger the documented flaw. Schedule a supported kernel update after confirming vendor applicability.
Technical view
The SEV_GET_ID2 ioctl path copied a firmware-requested length after a PSP command failure caused by an undersized userspace buffer. Because the allocated kernel buffer was smaller, copy_to_user performed an out-of-bounds read. The kernel fix prevents copying the ID blob when the PSP command fails.
Likely exposure
Exposure requires an affected Linux kernel, local low-privileged access, and access to the relevant AMD SEV/CCP device interface. The supplied affected-version data spans multiple kernel branches but is insufficient to map every distribution package reliably. Containers or tenants able to reach the device may increase concern.
Exploitation context
The CVSS score is 7.1 with local access, low complexity, low privileges, no user interaction, high confidentiality impact, and high availability impact. KEV is false, and the supplied sources provide no evidence of active exploitation or a public exploit.
Researcher notes
The demonstrated failure is a 64-byte slab out-of-bounds read in sev_ioctl_do_get_id2 after firmware reports an invalid length. The record supplies eight stable-tree fixes. Exact introduction and fixed-version boundaries are unclear from the flattened affected-version data, so downstream vendor advisories remain necessary.
Mitigation direction
Update to a vendor-supported kernel containing the applicable listed stable fix.
Consult your Linux distributor for exact patched package versions and reboot requirements.
Restrict untrusted users and workloads from accessing the relevant SEV/CCP device interface.
Prioritize shared hosts where less-trusted tenants or local users can access that interface.
Validation and detection
Inventory kernel versions and compare package status with distributor guidance.
Confirm whether AMD SEV/CCP support and its userspace device interface are enabled and accessible.
Verify the installed kernel contains the applicable stable fix commit.
After updating, confirm the host booted into the patched kernel.
Review kernel logs for KASAN, copy_to_user, sev_ioctl, or slab-out-of-bounds reports.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2026-31697 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
1CVSS vectors
3Timeline events
0ADP providers
9Source links
CVSS vector scores
1 official score
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.