CVE-2026-68158Memory overflow in Linux kernel libceph component
In the Linux kernel, the following vulnerability has been resolved: libceph: Fix multiplication overflow in decode_new_up_state_weight() If a message of type CEPH_MSG_OSD_MAP contains a (maliciously) corrupted osdmap, out-of-bounds memory accesses may occur in decode_new_up_state_weight(). This happens because the bounds check for the new_state part is based on calculating its length depending on a len value read from the incoming message. This calculation may overflow leading to an incorrect bounds check. Subsequently, out-of-bounds reads may occur when decoding this part. This patch switches the multiplication to use check_mul_overflow() to abort processing the osdmap if an overflow occurred. Therefore, osdmaps/messages containing large values for len that result in a multiplication overflow are treated as invalid. [ idryomov: rename new_state_len -> new_state_item_size, formatting ]
View on NVDAnalysis
A critical vulnerability has been identified in the Linux kernel libceph component. Maliciously crafted OSD map messages can trigger a multiplication overflow leading to out-of-bounds memory access, potentially causing kernel crashes or remote code execution on systems using Ceph storage.
Relevant roles
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HEPSS
Technical description
In the Linux kernel, the following vulnerability has been resolved: libceph: Fix multiplication overflow in decode_new_up_state_weight() If a message of type CEPH_MSG_OSD_MAP contains a (maliciously) corrupted osdmap, out-of-bounds memory accesses may occur in decode_new_up_state_weight(). This happens because the bounds check for the new_state part is based on calculating its length depending on a len value read from the incoming message. This calculation may overflow leading to an incorrect bounds check. Subsequently, out-of-bounds reads may occur when decoding this part. This patch switches the multiplication to use check_mul_overflow() to abort processing the osdmap if an overflow occurred. Therefore, osdmaps/messages containing large values for len that result in a multiplication overflow are treated as invalid. [ idryomov: rename new_state_len -> new_state_item_size, formatting ]
References
- https://git.kernel.org/stable/c/05c90e059269f087becfcce23348496085835c29
- https://git.kernel.org/stable/c/143ba49ead77ec483c0326f8aaad8649874e99c4
- https://git.kernel.org/stable/c/1732d89dfcd74f6fde9ce70900d316c4a151c153
- https://git.kernel.org/stable/c/98917a499ec7064c14fc56d180a4fd636fc2784c
- https://git.kernel.org/stable/c/bee4b5b53e7bff0467fd916cc44c9b190733c6bd