GPU VulnDB

Database/Kernel, userspace & hypervisor

Linux kernel libceph: unbounded pg_temp length lets a malicious monitor cause a stack out-of-bounds write

CVE-2026-68159Kernel, userspace & hypervisorcurated

Impact

__decode_pg_temp() accepted any OSD-set length that did not overflow the allocation, but apply_upmap() and get_temp_osds() later copy that list into a fixed 32-entry array on the kernel stack. A monitor that hands the client an OSDMap with a pg_temp or pg_upmap entry longer than 32 gets a stack out-of-bounds write in the host kernel, with the reporter's KASAN trace landing in ceph_pg_to_up_acting_osds() on the normal rbd map path. This is a write, not a read, so the ceiling is host kernel compromise on every node that consumes the poisoned map - and every node in the cluster consumes the same map, so a single bad monitor reply fans out across the fleet rather than hitting one node. On a GPU fleet that is a simultaneous loss of nodes that are expensive to drain and re-schedule.

Who can reach it

An attacker controlling or impersonating a Ceph monitor that the node's kernel client fetches OSDMaps from. No authentication to the node and no local access are needed; a tenant pod using an already-mapped volume cannot reach the decoder.

What to do

Take a stable kernel containing the CEPH_PG_MAX_SIZE bound in __decode_pg_temp() and __decode_pg_upmap_items(); the record lists commits only, so get the shipped version from your distribution advisory. Kernel fix, so drain and reboot each node, or apply a vendor livepatch if one exists. Interim mitigation is the same as for any hostile-monitor bug: keep the mon network off tenant-reachable paths and enforce cephx authentication.

References

Related entries

All Kernel, userspace & hypervisor entries

This entry is curated: imported from vendor advisories with machine assistance, not yet individually verified. Confirm against your vendor's advisory before acting, and report anything wrong.