CVE-2026-98775

nitro_enclaves: fix use-after-free on SLOT_ALLOC failure

State
Published
Severity
Not scored
Published
Oct 18, 2026
Updated
Oct 30, 2026
Reserved
Sep 25, 2026

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

nitro_enclaves: fix use-after-free on SLOT_ALLOC failure

When ne_create_vm_ioctl() fails the SLOT_ALLOC request after anon_inode_getfile() has succeeded, the error path calls fput(enclave_file) and then frees ne_enclave.

In normal userspace context, fput() defers the final __fput() via task_work. ne_enclave_release() therefore runs after ne_enclave has already been freed and dereferences ne_enclave->slot_uid, causing a use-after-free: KASAN: slab-use-after-free in ne_enclave_release.

The enclave has no slot allocated and is not yet linked into the enclaves list on this error path, so ne_enclave_release() is expected to return early when slot_uid is zero. However, reading slot_uid already accesses the freed object.

Clear enclave_file->private_data before fput() on the error path. ne_enclave_release() then returns immediately when private_data is NULL, leaving the ioctl error path as the sole owner of ne_enclave. This is safe because the file has not been fd_install()'d yet.

Tested on an AWS EC2 m5.2xlarge with CONFIG_KASAN=y. Without the patch, the reproducer triggers a KASAN slab-use-after-free on every SLOT_ALLOC failure. With the patch, no KASAN report is produced and the SLOT_ALLOC error is still returned. Normal enclave creation and teardown are unaffected.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 9c8eb50fe9e2bb8a2e725979e052fbf592b6b799 to before 718965a5fcea47f7ec6accff55306317aadc3af3Affected
  • 9c8eb50fe9e2bb8a2e725979e052fbf592b6b799 to before dac89ed976d9826eae4703281d0d51b062b58eefAffected
  • 9c8eb50fe9e2bb8a2e725979e052fbf592b6b799 to before 8024c50b8763add7912b6d9830327ba73f994204Affected
  • 9c8eb50fe9e2bb8a2e725979e052fbf592b6b799 to before 8bde6f643ab6fe5e3e3f4c312f84ce327ecf39b2Affected
  • 9c8eb50fe9e2bb8a2e725979e052fbf592b6b799 to before 466041d14f26dc2babd606a2e85dce08774112a6Affected
  • 9c8eb50fe9e2bb8a2e725979e052fbf592b6b799 to before f7fb6c2835ede1b8ad84cf7e78a528a9d0159b84Affected
  • 9c8eb50fe9e2bb8a2e725979e052fbf592b6b799 to before 43f78b328f3907ca2f7424e15b7e45ffbf9fe21cAffected
  • 9c8eb50fe9e2bb8a2e725979e052fbf592b6b799 to before 9bc184a2eda8b773c88ecbff934001ad649b9cc1Affected
LinuxLinux
  • 5.10Affected
  • before 5.10Not affected
  • 5.10.273 through 5.10.*Not affected
  • 5.15.224 through 5.15.*Not affected
  • 6.1.191 through 6.1.*Not affected
  • 6.6.160 through 6.6.*Not affected
  • 6.12.113 through 6.12.*Not affected
  • 6.18.56 through 6.18.*Not affected
  • 7.2.10 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.