CVE-2026-99097
NoneCVSS
—
EPSS
0.2%
Published
Oct 26, 2026
CISA due date
—
Cloudanix analysis
A flaw in the Linux kernel's handling of certain memory requests from trusted execution components can cause the whole system to crash when given a request for zero bytes of memory.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Improper Input Validation
- Remediation
- Patch
- Effort
- Medium
- Patch risk
- Low
What it actually does
Missing validation of size parameter in tee_dyn_shm_alloc_helper allows a zero value to reach alloc_pages_exact(0), invoking undefined get_order(0) behavior that triggers the page allocator's MAX_PAGE_ORDER warning and allocation failure, potentially panicking the kernel on panic_on_warn configurations.
Why it matters to the business
Systems running affected kernels may experience unexpected crashes or boot failures when unprivileged processes request a zero-length shared memory buffer through the TEE subsystem, leading to downtime and loss of availability for workloads relying on the kernel TEE driver.
How an attack unfolds
An attacker with local access crafts a TEE_IOC_SHM_ALLOC ioctl request supplying a struct tee_ioctl_shm_alloc_data with size set to zero; the kernel path skips the check present in the register path, derives a zero page count, and invokes the allocator, resulting in the warning and possible panic.
How to fix it
Update the Linux kernel to a version containing the upstream fix that rejects zero-sized allocations in tee_dyn_shm_alloc_helper before calling alloc_pages_exact; apply the patch or newer distribution kernel that enforces the same check already present in register_shm_helper.
How to confirm the fix worked
Confirm the fix by inspecting the tee_dyn_shm_alloc_helper source for an explicit zero-page-count rejection prior to the allocator call, or test by attempting a zero-size TEE_IOC_SHM_ALLOC ioctl on a patched kernel and verifying it returns an error without triggering allocator warnings.
Typical attack path
- Obtain local unprivileged access on a Linux system with the vulnerable TEE driver enabled
- Open the TEE device node and prepare a tee_ioctl_shm_alloc_data structure with size equal to zero
- Invoke the TEE_IOC_SHM_ALLOC ioctl
- Trigger the zero-page allocation path and observe kernel warning or panic
How to detect it
Review kernel logs for page allocator warnings mentioning MAX_PAGE_ORDER or get_order(0) originating from tee shm paths; monitor for unexpected TEE device ioctl activity followed by system instability; no persistent artifacts remain after a successful exploit that does not panic the system.
What your security team should do
- Prioritize kernel updates on systems exposing the TEE driver to untrusted local users
- Audit boot and kernel logs for page allocator order warnings related to tee shm allocations
- Disable the TEE driver if the subsystem is not required for the workload
The record
In the Linux kernel, the following vulnerability has been resolved: tee: shm: reject zero-sized allocations in tee_dyn_shm_alloc_helper() tee_dyn_shm_alloc_helper() derives nr_pages from a caller-supplied size and passes it to alloc_pages_exact() without checking it. For size == 0 nr_pages is 0, and alloc_pages_exact(0) calls get_order(0), which is documented as undefined and returns BITS_PER_LONG - PAGE_SHIFT. The page allocator then trips its order > MAX_PAGE_ORDER warning and fails the allocation; on a panic_on_warn kernel that ends the boot. This can be triggered by TEE_IOC_SHM_ALLOC with struct tee_ioctl_shm_alloc_data where size is 0. Reject a zero page count, as register_shm_helper() already does for the register path.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|